REDIS:随机访问列表
在Redis中保存一个大列表(例如10K个项目)的最佳方法是什么?我还希望通过键高效地检索项目 Redis似乎没有与Java的OrderedHashMap相当的数据结构,Java的OrderedHashMap实现了这一点,因此可能需要维护一个集合和一个列表,并确保它们保持同步。使用一个排序的集合 添加一些书签;使用REDIS:随机访问列表,redis,ordered-map,Redis,Ordered Map,在Redis中保存一个大列表(例如10K个项目)的最佳方法是什么?我还希望通过键高效地检索项目 Redis似乎没有与Java的OrderedHashMap相当的数据结构,Java的OrderedHashMap实现了这一点,因此可能需要维护一个集合和一个列表,并确保它们保持同步。使用一个排序的集合 添加一些书签;使用得分的当前时间按时间顺序排序: > zadd bookmarks 123 "bk1" > zadd bookmarks 456 "bk2" > zadd bookma
得分的当前时间
按时间顺序排序:
> 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会自动替换上一个成员,从而避免重复
希望能有所帮助,一个类似书签的例子。我想保留一个用户书签列表,但同时检测用户以前是否为给定项目添加了书签。对于常规列表,该检查将是一个O(N)操作。