Redis将多个项目添加到排序集中

用户名

我正在关注此Redis教程http://redis.io/topics/twitter-clone

在页面末尾,他们说

注意:如果帖子列表开始很大,则LRANGE效率不高,并且我们希望访问列表中间的元素,因为Redis列表由链接列表支持。如果系统设计用于深度分页处理数百万个项目,则最好改用Sorted Sets。

这是我最大的担心,因为我们正在设计一个系统,该系统应该能够处理数百万甚至数十亿个帖子,并且我们估计在Web应用程序中20-30%的时间将在列表中间搜索一个项目在跑。

不过,排序集存在问题。您可以添加如下所示的排序集,并考虑到这是第一(1)个帖子

zadd zset 1 "We are happy to announce a new member in our team"

但是,如果我们也需要添加一个内容字段怎么办?

zadd zset 1 "We are happy to announce a new member in our team" "Please welcome James Sullivan, our new member team! He had..."

这是你得到的错误

(error) ERR syntax error

除了您必须访问诸如post[0]post[1]而不是post['title']and之类的奇怪事实post['content'](理论上,我还没有尝试过)之外,还有一个事实是我们到目前为止无法解决。

实际上,发布对象的结构是这样的,即使在百万个发布对象的中间,它也应该可以在O(1)时间内找到

+-----------+
+- 1 <- ID -+
+-----------+
+------------------------+
+- title "the title..." -+
+----------------------------+
+- content "the content..." -+
+-----------------------------+
+- tags "1st tag, 2nd tag.." -+
+-----------------------+
+- author "the_author" -+
+-------------------------+
+- date "unix_timestamp" -+
+-------------------------+

如果“排序集”是要使用的正确数据结构,而不是应该使用哪种集(排序集,排序集,列表,散列..),我将一头雾水

在这种情况下,您有什么建议?

Itamar Haber

排序集是您想要排序的东西的理想数据结构,但是,正如您所指出的,集合的成员是字符串。在这种情况下,您有两个可能的选择:

  1. 序列化:您可以实现自己的序列化或使用就绪的东西(例如JSON)在集合的每个成员中存储多个元素。

  2. 将您设置的成员的内容作为其他键的名称,并将对象存储在这些引用的键中-HASH数据类型看起来很符合您的需求。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

StackExchange.Redis-如何将项目添加到Redis集中

来自分类Dev

将多个项目添加到列表

来自分类Dev

将多个项目添加到文件

来自分类Dev

将多个项目添加到 hashmap

来自分类Dev

将数据集中的项目添加到列表

来自分类Dev

Eclipse 插件开发:使用项目的路径将项目添加到工作集中?

来自分类Dev

将多个项目添加到QComboBox-QT

来自分类Dev

Scala在将字符串添加到排序集中之前先将其拆分

来自分类Dev

如何通过索引将项目添加到Laravel雄辩的收藏集中?

来自分类Dev

将多个项目从 ListBox1 添加到绑定多个项目 ListBox2

来自分类Dev

拖放GridView,它允许将项目添加到现有项目以及重新排序

来自分类Dev

将排序添加到Angular工厂

来自分类Dev

jQuery-当项目之一为var时,将addClass添加到多个项目

来自分类Dev

如何将元素添加到python中设置的已排序Redis

来自分类Dev

如何将多个项目添加到ItemsSource WPF多个集合绑定中?

来自分类Dev

以排序(显示)顺序将项目添加到wordpress菜单的功能

来自分类Dev

将删除按钮添加到jQuery UI可排序列表中的每个项目

来自分类Dev

将项目添加到已排序的可观察集合中

来自分类Dev

将新项目添加到数组时刷新可排序

来自分类Dev

使用排序的 QAbstractTableModel 时如何将“选择项目...”添加到 QComboBox?

来自分类Dev

将项目添加到kendoDropDownList

来自分类Dev

将项目添加到导航抽屉

来自分类Dev

将插件添加到PlayN项目

来自分类Dev

将项目添加到列表的开头

来自分类Dev

动态将项目添加到FragmentGridPagerAdapter

来自分类Dev

将库添加到项目

来自分类Dev

从GridView将项目添加到ListBox

来自分类Dev

Java | 将项目添加到列表<?>

来自分类Dev

无法将QtWebWidgets添加到项目

Related 相关文章

  1. 1

    StackExchange.Redis-如何将项目添加到Redis集中

  2. 2

    将多个项目添加到列表

  3. 3

    将多个项目添加到文件

  4. 4

    将多个项目添加到 hashmap

  5. 5

    将数据集中的项目添加到列表

  6. 6

    Eclipse 插件开发:使用项目的路径将项目添加到工作集中?

  7. 7

    将多个项目添加到QComboBox-QT

  8. 8

    Scala在将字符串添加到排序集中之前先将其拆分

  9. 9

    如何通过索引将项目添加到Laravel雄辩的收藏集中?

  10. 10

    将多个项目从 ListBox1 添加到绑定多个项目 ListBox2

  11. 11

    拖放GridView,它允许将项目添加到现有项目以及重新排序

  12. 12

    将排序添加到Angular工厂

  13. 13

    jQuery-当项目之一为var时,将addClass添加到多个项目

  14. 14

    如何将元素添加到python中设置的已排序Redis

  15. 15

    如何将多个项目添加到ItemsSource WPF多个集合绑定中?

  16. 16

    以排序(显示)顺序将项目添加到wordpress菜单的功能

  17. 17

    将删除按钮添加到jQuery UI可排序列表中的每个项目

  18. 18

    将项目添加到已排序的可观察集合中

  19. 19

    将新项目添加到数组时刷新可排序

  20. 20

    使用排序的 QAbstractTableModel 时如何将“选择项目...”添加到 QComboBox?

  21. 21

    将项目添加到kendoDropDownList

  22. 22

    将项目添加到导航抽屉

  23. 23

    将插件添加到PlayN项目

  24. 24

    将项目添加到列表的开头

  25. 25

    动态将项目添加到FragmentGridPagerAdapter

  26. 26

    将库添加到项目

  27. 27

    从GridView将项目添加到ListBox

  28. 28

    Java | 将项目添加到列表<?>

  29. 29

    无法将QtWebWidgets添加到项目

热门标签

归档