为什么使用Sorted Set而不是List Redis

时间:2018-02-05 20:15:26

标签: list redis set sortedset zset

为什么我会使用redis sorted setredis list为基础的unix时间戳排序的文章,并将元素推送到它上面。它们似乎提供了相同的最终结果。我注意到的一件事是使用redis sorted set你可以与其他集合和zsets进行交叉

2 个答案:

答案 0 :(得分:2)

取决于您之后的使用情况。

按插入顺序对ZSET进行排序,使用列表看起来类似,但存在很多差异。以下是一些:

  1. LIST可以有重复项。
  2. 在ZSET中检入元素是非常有效的,但在LIST中非常有用(特别是如果元素不在那里)。
  3. 从LIST中获取非边缘元素可能很慢(取决于LIST的大小以及对象与其中一个边缘的距离)。
  4. 使用边缘时LIST效率最高(L / R PUSH / POP)。
  5. ZSET具有联合和交叉的附加功能,您可以按任何其他分数/重量进行排序。
  6. 在ZSET中,分数可以在以后更新,顺序也会改变。
  7. 通常,查看每种数据类型提供的API,并选择能够为您提供最佳结果的API(除了按插入时间排序)。

答案 1 :(得分:0)

已排序的集合确保密钥是唯一的。如果您想做复杂的事情。例如,每次用户登录时,您都将用户ID添加到排序集中。并且有一个后端服务读取排序的集合并更新用户的信息和操作习惯。如果您使用排序集,可以节省很多工作。

此外,如果用户是付费会员,则可以设置其ID的得分更高,并更早刷新该用户的习惯匹配。