在 Redis 中保留大型列表(例如 10K 个项目)的最佳方法是什么,我还想通过键有效地检索项目。
似乎Redis没有等同于Java的OrderedHashMap的数据结构,它可以做到这一点,所以也许有必要维护一个集合和一个列表,并确保它们保持同步。
使用排序集;
添加一些书签;使用当前时间score
按时间顺序排序:
> zadd bookmarks 123 "bk1"
> zadd bookmarks 456 "bk2"
> zadd bookmarks 789 "bk3"
> zadd bookmarks 999 "bk4"
要获取书签,您首先需要索引:
> zrank bookmarks "bk3"
> "3"
。然后按索引拉取书签:
> zrevrange bookmarks 3 3
> "bk3"
如果您不想使用时间戳,可以使用"1"按字典顺序对书签进行排序:
> zadd bookmarks 1 "link_xyz"
> zadd bookmarks 1 "link_abc"
> zadd bookmarks 1 "link_foo"
> zrange bookmarks 0 -1
1) "link_abc"
2) "link_foo"
3) "link_xyz"
索引查找是O(log(n))
,添加到该O(log(n)+1)
中,以按索引拉取单个成员;比列表的O(n)
更好。
此外,如果两次添加同一书签,redis 会自动替换上一个成员,从而避免重复。
希望对您有所帮助,