在许多Redis教程中(比如本教程),数据存储在一个集合中,但多个值组合在一个字符串中(即,用户帐户可以作为两个条目“user:1000:username”和“user:1000:password”存储在集合中)。
然而,Redis也有哈希。似乎拥有一个“user:1000”散列会更有意义,它包含一个“username”条目和一个“password”条目。您只需直接在哈希中访问它们,而不是连接字符串来访问特定值。
那么为什么没有用得那么多呢?这些只是旧教程吗?还是Redis散列存在性能问题?
Redis散列很适合存储更复杂的数据,就像您在问题中建议的那样。我使用它们正是为了这个目的--存储具有需要缓存的多个属性的对象(特别是电子商务站点上特定产品的库存数据)。当然,我可以使用串联字符串--但这会给我的客户机代码增加不必要的复杂性,而且不可能更新单个字段。
您可能是对的-教程可能只是从哈希引入之前。它们显然是为存储对象表示而设计的:http://oldblog.antirez.com/post/redis-weekly-update-1.html
我想,与一个简单的字符串集命令相比,Redis在插入一个新项目时必须服务的命令数(n个命令数,其中n是散列中的字段数)是一个值得关注的问题。我还没有发现这是一个问题,在一个每天点击Redis大约100万次的服务。对我来说,使用正确的数据结构比可以忽略不计的性能影响更重要。
(另外,请看我关于Redis Sets vs.Redis Strings的评论--我认为你的问题指的是Strings,但如果我错了,请纠正我!)
我知道redis sentinel是在多个redis实例之间配置HA(高可用性)的一种方式。正如我所看到的,在任何给定的时间,都有一个redis实例主动地为客户机请求服务。另外还有两个服务器处于待机状态(等待发生故障,因此其中一个可以再次运行)。 是资源浪费吗? 是否有更好的方法充分利用现有资源? Redis集群是Redis Sentinel的替代方案吗? 我已经查了redis的sentinel和
问题内容: 我们正在将带Redis服务器的Ruby Web应用程序用于缓存。有没有要测试Memcached的地方呢? 什么会给我们带来更好的性能?Redis和Memcached之间有什么优缺点? 要考虑的要点: Read/write speed. Memory usage. Disk I/O dumping. Scaling. 问题答案: 2017年6月3日更新 与memcached相比,Redi
我有一个代码,在其中我实现了缓存机制。以前是基于番石榴的缓存,现在考虑到集中式缓存的需求,我转向Redis。 除此之外,对于redis服务器配置,我已经尝试禁用所有持久性,因为我不需要它。但仍然表现不佳。 我的主要问题是,是配置导致了这种情况,还是Redis与Guava相比性能很低? 通过更多的配置优化,Redis的性能可以与Guava相比吗? 请建议。
问题内容: 在许多Redis教程(例如this)中,数据存储在一个集合中,但是多个值组合在一个字符串中(即,一个用户帐户可能作为两个条目存储在集合中,“ user:1000:username”和“用户:1000:密码”)。 但是,Redis也有哈希值。似乎更有意义的是使用“ user:1000”散列,其中包含“ username”条目和“ password”条目。无需将字符串串联以访问特定值,您只
主要内容:初识hash类型,常用命令汇总,基本命令操作Redis hash(哈希散列)是由字符类型的 field(字段)和 value 组成的哈希映射表结构(也称散列表),它非常类似于表格结构。在 hash 类型中,field 与 value 一一对应,且不允许重复。 Redis hash 特别适合于存储对象。一个 filed/value 可以看做是表格中一条数据记录;而一个 key 可以对应多条数据。下面举一个例子,使用 hash 类型存储表格中的
null