Redis通过字段值查找哈希值

Chr*_*ess 6 nosql redis

使用Redis创建"记录"时,可以创建包含多个字段的哈希.例如:

HMSET myhash field1 "Hello" field2 "World"
HMSET myhash2 field1 "Goodbye" field2 "World"
Run Code Online (Sandbox Code Playgroud)

你可以通过知道键值来检索它,但是我想知道有没有办法检索field2中有"World"的所有哈希值?

Ser*_*sev 14

redis中没有索引,也没有实现SQL.这是一家超值商店.您提供了一个密钥,它可以为您提供价值.

也就是说,您可以通过自己维护二级索引来实现这一点.例如:

创建记录和索引条目

HMSET myhash field1 Hello field2 World
SADD field2_world myhash
Run Code Online (Sandbox Code Playgroud)

更新记录,删除旧索引条目,创建新索引条目

SREM field2_world myhash
HMSET myhash field2 Mundo
SADD field2_mundo myhash
Run Code Online (Sandbox Code Playgroud)

找到所有包含"World"的记录 field2

SMEMBERS field2_world
Run Code Online (Sandbox Code Playgroud)

我希望你明白这个主意.