Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Caching 在redis中,如何根据插入顺序获得键的降序?_Caching_Redis_Feed - Fatal编程技术网

Caching 在redis中,如何根据插入顺序获得键的降序?

Caching 在redis中,如何根据插入顺序获得键的降序?,caching,redis,feed,Caching,Redis,Feed,我正在为一个社交网络实现一个feed,在这个feed中,新上传的帖子应该首先被服务,以此类推。我使用帖子的散列作为键,帖子作为值。我需要最新的第一顺序的帖子。如何做到这一点? 我的想法是 使用散列作为密钥存储post和时间戳 获取所有密钥和时间戳 按降序排列时间戳 然后使用相应的键获取最新的图像 问题1:但是这种方法不好,怎么做? 编辑:问题2:请告诉我你使用什么算法来提供提要。如果提要对于所有用户来说都是基于最新优先的,那么如何实现它? 这是我第一次在后台。如果问题是愚蠢的,请回答。 谢谢。这

我正在为一个社交网络实现一个feed,在这个feed中,新上传的帖子应该首先被服务,以此类推。我使用帖子的散列作为键,帖子作为值。我需要最新的第一顺序的帖子。如何做到这一点? 我的想法是

使用散列作为密钥存储post和时间戳 获取所有密钥和时间戳 按降序排列时间戳 然后使用相应的键获取最新的图像 问题1:但是这种方法不好,怎么做? 编辑:问题2:请告诉我你使用什么算法来提供提要。如果提要对于所有用户来说都是基于最新优先的,那么如何实现它? 这是我第一次在后台。如果问题是愚蠢的,请回答。
谢谢。

这里有三个选项供您选择:

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

使用排序集,使用时间戳作为分数,使用元数据作为值的帖子。确保post with metadata是唯一的,您可以包括时间戳和用户来实现这一点。这将有更好的表现,但如果你必须找到一个特定的职位,它会变得有点困难。涉及的命令:ZADD、ZREVRANGEBYSCORE、ZRANGEBYSCORE

使用Redis Streams。如果您想要独立于客户端时间的统一插入顺序,Redis可以为您设置时间戳。但是,流条目无法修改,因此用户不能编辑帖子,或者无论何时编辑帖子都会作为新内容出现。涉及的命令:XADD、XREVRANGE、XDEL

见:


保留一个按帖子时间戳排序的集合,其中分数是时间戳,值是帖子id。然后按照您想要的顺序读取键。谢谢!。另一个选择是使用增量post ID,然后在排序集中使用词法范围。在很多方面,它们都优于基于分数的索引