Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Redis获取前100条记录_Redis - Fatal编程技术网

如何从Redis获取前100条记录

如何从Redis获取前100条记录,redis,Redis,我正在开发一个小型应用程序,在这个应用程序中,我使用redis保存我的中间数据。插入数据后,我需要按照插入数据的相同顺序重新加载数据 我正在使用键方法获取所有键,但返回键的顺序与插入键的顺序不同。您必须自己维护顺序,为插入的键保留一个单独的列表。因此,与其 SET foo, bar 您可以这样做: SET foo, bar RPUSH insert_order, foo 那你就可以了 LRANGE insert_order, 0, 100 获取前100个集合字段 例如,如果要跟踪实际插入(

我正在开发一个小型应用程序,在这个应用程序中,我使用redis保存我的中间数据。插入数据后,我需要按照插入数据的相同顺序重新加载数据


我正在使用
方法获取所有键,但返回键的顺序与插入键的顺序不同。

您必须自己维护顺序,为插入的键保留一个单独的列表。因此,与其

SET foo, bar
您可以这样做:

SET foo, bar
RPUSH insert_order, foo
那你就可以了

LRANGE insert_order, 0, 100
获取前100个集合字段


例如,如果要跟踪实际插入(而不是更新),可以使用SETNX。此外,您可以使用排序集而不是列表(如@Leonid所述)。此外,您可以将整个内容包装在Lua中,这样簿记就不会被客户机代码所覆盖。

对于索引URL和按插入顺序获取列表,您应该使用排序集:

zadd <your_url_list_key> <inserted_time> <url>
zadd
单个url的详细信息数据应存储在不同的位置。例如,使用哈希:

hset <your_url_data_key> <url> <url_data>
hset
最好不要在redis上存储细节数据,所以不要使用redis哈希,应该在mysql上保存url细节数据

您还可以在索引之前
md5(url)
,以减小大小(然后完整的url值将存储在url\u数据中)


在我的项目中,排序集仍然可以处理大约3mil记录(频繁读写)。但是你应该经常观察散列大小,它会增长得非常快。

谢谢你的回复。但我将拥有数百万张唱片。将所有记录的密钥保存在一个记录中可能会使我的系统变慢???@Alex:可能会,也可能不会。有一些技巧(比如切分
insert\u order
list)。或者你可以使用真实的数据库,因为你似乎想要一个。或者你可以将你的密钥和插入时间作为分数存储在数据库中,用
zremrangebyrank
不断地清理它,只保留最后100个条目。实际上,我正在开发一个爬行应用程序,并保存我想使用Redis的传出URL(由于快速插入和检索)使用URL作为键(通过这种方式,我们可以轻松处理URL的双重性)。但似乎没有办法从redis检索前n(100/1000)条记录。是否有其他解决方案可用于此。