Redis-使用字符串属性对哈希存储进行排序和筛选

Redis-使用字符串属性对哈希存储进行排序和筛选,redis,Redis,我有一个redis散列存储,看起来像Item:,属性为name。我想通过name属性的前缀筛选哈希存储。 我试图做的是在将分数设置为0时,将名称(小写)存储在一个名为Item:::name的单独Z-set中。通过这样做,我可以使用ZRANGEBYLEX成功地获得所需的结果,但是我无法将结果映射回原始项。我应该如何着手实施这样的东西 我见过多个Redis的自动完成示例,它们需要相同的功能,但没有将单词链接回实际项目(本例中为哈希)在排序集中成员不能重复,它必须是唯一的。因此,同名的不同用户将导致问

我有一个redis散列存储,看起来像
Item:
,属性为
name
。我想通过
name
属性的前缀筛选哈希存储。 我试图做的是在将分数设置为0时,将名称(小写)存储在一个名为
Item:::name
的单独Z-set中。通过这样做,我可以使用
ZRANGEBYLEX
成功地获得所需的结果,但是我无法将结果映射回原始
项。我应该如何着手实施这样的东西


我见过多个Redis的自动完成示例,它们需要相同的功能,但没有将单词链接回实际项目(本例中为哈希)

排序集中
成员不能重复,它必须是唯一的。因此,同名的不同用户将导致问题

我的建议需要应用层编码来解析响应数组并执行
hash
命令(类似于二级索引)

最后,您将有
name::hash key
格式化的数组元素。在应用层,如果您使用
::
(任何其他字符串,如
!!!
|
等)将每个元素分成两个子字符串,您将拥有
用户:1
用户:4

127.0.0.1:6379> HGETALL user:1
1) "name"
2) "jack"
127.0.0.1:6379> HGETALL user:4
1) "name"
2) "jack"
127.0.0.1:6379>

排序集
中,
成员
不能重复,它必须是唯一的。因此,同名的不同用户将导致问题

我的建议需要应用层编码来解析响应数组并执行
hash
命令(类似于二级索引)

最后,您将有
name::hash key
格式化的数组元素。在应用层,如果您使用
::
(任何其他字符串,如
!!!
|
等)将每个元素分成两个子字符串,您将拥有
用户:1
用户:4

127.0.0.1:6379> HGETALL user:1
1) "name"
2) "jack"
127.0.0.1:6379> HGETALL user:4
1) "name"
2) "jack"
127.0.0.1:6379>

谢谢,这很有道理。虽然我试图找到一种不用应用层处理的方法,但似乎这是唯一的方法。谢谢,这很有意义。虽然我试图找到一种不用应用层处理的方法,但似乎这是唯一的方法。