在许多Redis教程(例如本教程)中,数据存储在一个集合中,但是多个值组合在一个字符串中(即用户帐户可能存储在集合中作为两个条目,"user:1000:username"和"用户:1000:密码").
但是,Redis也有哈希.似乎有一个"user:1000"哈希更有意义,它包含一个"用户名"条目和一个"密码"条目.您只需直接在哈希中访问它们,而不是连接字符串以访问特定值.
那么为什么不使用它呢?这些只是旧教程吗?或者Redis哈希有性能问题吗?
Mik*_*e G 49
Redis哈希值适用于存储更复杂的数据,就像您在问题中所建议的那样.我正确地使用它们 - 存储具有需要缓存的多个属性的对象(特别是电子商务站点上特定产品的库存数据).当然,我可以使用连接字符串 - 但这会给我的客户端代码增加不必要的复杂性,并且无法更新单个字段.
你可能是对的 - 教程可能只是在Hashes引入之前.它们显然是为存储对象表示而设计的:http://oldblog.antirez.com/post/redis-weekly-update-1.html
我想一个问题是,当插入一个新项目时,Redis必须服务的命令数量(n个命令,其中n是Hash中的字段数)与简单的String SET命令相比.我还没有发现这是一个问题,一个服务每天击中Redis大约100万次.对我使用正确的数据结构比可忽略的性能影响更重要.
(另外,请参阅我关于Redis Sets vs. Redis Strings的评论 - 我认为你的问题是指字符串,但如果我错了,请纠正我!)
Dan*_*yle 43
散列是在Redis中存储数据的最有效方法之一,甚至可以在有效的情况下推荐它们使用.
http://redis.io/topics/memory-optimization
尽可能使用哈希值
小哈希在非常小的空间中编码,因此您应该尝试每次使用哈希值来表示数据.例如,如果您在Web应用程序中有表示用户的对象,而不是使用名称,姓氏,电子邮件,密码的不同密钥,请使用包含所有必填字段的单个哈希.
| 归档时间: |
|
| 查看次数: |
41989 次 |
| 最近记录: |