如何从Redis获取前100条记录

时间:2013-10-14 10:19:55

标签: redis

我正在处理小型应用程序,我使用redis来保存我的中间数据。插入数据后,我需要按照插入的顺序重新加载数据。

我使用keys方法获取所有密钥,但返回密钥的顺序与插入的密钥不同。

2 个答案:

答案 0 :(得分:2)

您必须自己维护订单,方法是为插入的密钥保留单独的列表。所以,而不是

SET foo, bar
你可能会这样做:

SET foo, bar
RPUSH insert_order, foo

然后你可以做

LRANGE insert_order, 0, 100

获得前100个设置字段。

如果要跟踪实际插入(而不是更新),可以使用SETNX。此外,您可以使用排序集而不是列表(如@Leonid所述)此外,您可以将整个事物包装在Lua中,以便在客户端代码中隐藏簿记。

答案 1 :(得分:1)

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

zadd <your_url_list_key> <inserted_time> <url>

单个网址的详细数据应存储在其他位置。例如,使用hash:

hset <your_url_data_key> <url> <url_data>

如果不在redis上存储详细数据,那就更好了,所以不应该使用redis hash,而应该在mysql上保存url detail数据。

在编制索引之前,您还可以md5(url)缩小尺寸(然后完整的网址值将存储在url_data中)。

在我的项目中,排序集仍然可以正常使用大约3mil记录(经常读取和写入)。但是你应该经常观察散列大小,它会快速增长。