caching - 在redis中,如何根据插入顺序获取键降序排列?

标签 caching redis feed

我正在为社交网络实现一个提要,其中新上传的帖子应首先提供服务,依此类推。我使用帖子的哈希值作为键,帖子作为值。我需要“最新的第一顺序”中的帖子。如何做吗? 我的想法是

  1. 以哈希值作为键存储帖子和时间戳
  2. 获取所有 key 和时间戳
  3. 按降序对时间戳进行排序
  4. 然后使用相应的键获取最新图像

问题1:但是这种做法不太好,该怎么办呢? 编辑:问题2:请告诉我您使用什么算法来提供提要。如果提要基于“最新优先”对所有用户都是通用的,如何实现? 这是我第一次进入后端。如果问题很愚蠢,请回答。 谢谢。

最佳答案

这里为您提供三个选项:

使用排序集,使用时间戳作为分数,使用后哈希作为值。帖子哈希也是存储实际帖子的哈希中的键。涉及命令:ZADD、HSET、ZREVRANGEBYSCORE、HGET。

使用排序集,使用时间戳作为分数,使用元数据作为值的帖子。确保“带有元数据的帖子”是唯一的,您可以包含时间戳和用户来实现此目的。这将具有更好的性能,但如果您必须找到特定的帖子,则会变得有点困难。涉及命令:ZADD、ZREVRANGEBYSCORE、ZRANGEBYSCORE。

使用 Redis 流。如果您想要独立于客户端时间的统一插入顺序,Redis 可以为您设置时间戳。但是,流条目无法修改,因此用户无法编辑帖子,或者每当他们编辑帖子时都会将其作为新帖子显示。涉及命令:XADD、XREVRANGE、XDEL。

参见:

关于caching - 在redis中,如何根据插入顺序获取键降序排列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59691911/

相关文章:

java - 显示新闻标题的应用程序的想法(这样的功能叫什么以及我应该研究什么来实现它)

iOS Instagram - 如何在不登录的情况下获取公共(public)提要的访问 token

facebook - 实时 api 提要 - 如何获得新评论?

进入数据库前的Java缓存数据

使用 LRU 的 Java 缓存模拟给出了不准确的命中率

redis - 如何在redis缓存中存储protobuffer对象?

node.js - ioredis 错误 : connect ETIMEDOUT - Can't get connection to local redis server

internet-explorer - IE 302 重定向无缓存头问题

javascript - 在javascript中清除浏览器关闭事件的缓存?

redis - 从 redis 排序集中,检索分数小于给定分数的最高值的排名