选择Redis密钥名称并限制密钥数量

时间:2013-08-25 13:03:13

标签: ruby-on-rails postgresql nosql redis

我听到很多关于Redis服务器提供的超快速度,因此想到将其插入我在PostgreSQL上作为数据库服务器运行的现有Rails应用程序之一。

我的问题是,如果我的系统上有大约100000个用户,并且想要实现关注者/关注模式,我可以使用Redis的SET数据类型等,但是基于100000个不同的密钥是一个好习惯在用户上。这是在我当前场景中定义键的正确方法吗?如果是这样,单个redis实例上的数字键的限制是什么。

欢迎更好地设计钥匙的建议。

1 个答案:

答案 0 :(得分:3)

Redis处理数百万个密钥没有问题。理论上的限制是2 ^ 32个键(见FAQ),因此在实践中可用内存量是唯一的限制因素。

由于Redis本身仅支持两个层次结构:键和列表/哈希/集,因此在这种情况下,每个用户拥有一个键几乎是唯一的选择。

Redis使用very compact representation for small sets,因此如果您的大多数用户只有少数关注者,那么内存使用率应该相当低。调整*-max-ziplist-*系列配置选项可能会为您的特定数据集提供最佳结果。

顺便说一句,你可能会对Twitter上的人如何处理巨大的跟随者生成的负载感兴趣,使用Redis作为他们堆栈的一部分:real-time delivery architecture谈话非常有趣。