Redis,如何将集合存储为散列键的值

时间:2015-06-26 06:00:51

标签: redis

我已经看到了有关如何在Redis中创建哈希对象数组的问题。但是我想要另一种安排:一个Hash对象,其字段是字符串,值是集合。

我应该与哈希分开创建集合吗?如果是这样,我将如何引用该集合?通过变量名?

我可以从更高级别操纵它们,即:sadd Hash_name.field_name append_this_value_to_set

此外,我如何阅读那些内部集?

2 个答案:

答案 0 :(得分:3)

Redis不提供嵌套数据结构,因此Hash字段的值不能是Set,只能是String。

执行类似于OP尝试实现的操作的一种方法是使用常规集合并将其键名存储在哈希值中。但是,取消引用它们需要在代码中执行其他操作。

答案 1 :(得分:1)

例如,您可以创建一个名为user的集合,其中包含系统中的所有用户ID,以及一个名为asset的集合,其中包含公司中的所有资产。

> sadd user 1000 1001 1002 1003
(integer) 4
> type user
set

> sadd asset 20190001 20190002 20190003
(integer) 3
> type asset
set

然后使用哈希表描述每个用户和资产记录。

> hmset asset:20190001 desc laptop price 2000
OK
> hmset asset:20190002 desc pc price 1800
OK
> hmset asset:20190003 desc laptop price 2100
OK
> hmset asset:20190004 desc laptop price 2000
OK

用户可以拥有多个资产。

> hmset user:1000 username Samuel birthyear 1980 asset 20190001:20190002
OK
> hmset user:1001 username David birthyear 1984 asset -1
OK
> hmset user:1002 username Marry birthyear 1987 asset 20190004
OK
> hmset user:1003 username Joe birthyear 1977 asset 20190003

使用您的代码来实现逻辑。