当前位置: 首页 > 面试题库 >

Redis设置与哈希

陆敏学
2023-03-14
问题内容

在许多Redis教程(例如this)中,数据存储在一个集合中,但是多个值组合在一个字符串中(即,一个用户帐户可能作为两个条目存储在集合中,“
user:1000:username”和“用户:1000:密码”)。

但是,Redis也有哈希值。似乎更有意义的是使用“ user:1000”散列,其中包含“ username”条目和“
password”条目。无需将字符串串联以访问特定值,您只需直接在哈希中访问它们即可。

那么,为什么没有使用太多呢?这些只是旧教程吗?还是Redis哈希有性能问题?


问题答案:

像您在问题中建议的那样,Redis散列可用于存储更复杂的数据。我正是使用它们来存储具有多个需要缓存的属性的对象(具体来说,是电子商务网站上特定产品的库存数据)。当然,我可以使用串联字符串-
但这会给我的客户端代码增加不必要的复杂性,并且无法更新单个字段。

您可能是对的-
这些教程可能只是从引入哈希开始的。它们显然是为存储对象表示而设计的:http : //oldblog.antirez.com/post/redis-weekly-
update-1.html

我想一个问题是,与简单的String
SET命令相比,插入新项时Redis必须服务的命令数量(n个命令,其中n是哈希中的字段数)。我还没有发现这对Redis每天服务约一百万次的服务来说是一个问题。对我而言,使用正确的数据结构比对性能的影响微不足道。

(另外,请参阅我关于Redis Sets与Redis Strings的评论-我认为您的问题是针对Strings,但是如果我错了,请更正我!)



 类似资料:
  • 问题内容: 我在本地计算机上使用Redis,所以我真的不需要设置密码即可通过php客户端连接到服务器(我使用predis作为客户端)。但是,我将应用程序移动到实时服务器,因此我想设置一个密码以连接到我的Redis服务器。 我有几个问题: 我在互联网上检查了如何设置密码,好像我需要在redis.conf中添加密码。我找不到我应该完全添加到配置文件中来设置密码的内容。 另外在predis我应该如何添加

  • 在许多Redis教程中(比如本教程),数据存储在一个集合中,但多个值组合在一个字符串中(即,用户帐户可以作为两个条目“user:1000:username”和“user:1000:password”存储在集合中)。 然而,Redis也有哈希。似乎拥有一个“user:1000”散列会更有意义,它包含一个“username”条目和一个“password”条目。您只需直接在哈希中访问它们,而不是连接字符

  • 基本上,我试图设置一个Redis-sentinel docker实例,并希望从我的应用程序容器进行调用。我正在运行的问题是,redis-sentinel容器链接到应用程序容器。 因此,最初该应用程序询问哨兵进程关于redis Master的情况。哨兵接着说是“127.0.0.1”。但是应用程序容器假定它是容器本地的。这可以通过在sentinel进程开始时传递的公告-IP/公告-端口参数来克服。然而

  • 本书的目标是以简明易懂的方式讲解 Redis 的内部运行机制, 通过阅读本书, 你可以了解到 Redis 从数据结构到服务器构造在内的几乎所有知识。

  • 本书的目标是以简明易懂的方式讲解 Redis 的内部运行机制, 通过阅读本书, 你可以了解到 Redis 从数据结构到服务器构造在内的几乎所有知识。 为了保证内容的简洁性, 本书会尽量以高抽象层次的角度来观察 Redis , 并将代码的细节留给读者自己去考究。 如果读者只是对 Redis 的内部运作机制感兴趣, 但并不想深入代码, 那么只阅读本书就足够了。 另一方面, 对于需要深入研究 Redis

  • hset key field value 设置hash field为指定值,如果key不存在,则先创建。 hsetnx 设置hash field为指定值,如果 key 不存在,则先创建。如果 field已经存在,返回0,nx是not exist的意思。