Redis,如何将集合存储为哈希键的值

10

我看到有关在Redis中创建哈希对象数组的问题。但是我想要另一种排列方式:一个哈希对象,其字段是字符串,值是集合。

我应该单独从哈希表中创建集合吗?如果是这样,我如何引用该集合?通过变量名吗?

我能否从更高层次进行操作,例如:sadd Hash_name.field_name append_this_value_to_set

此外,我如何读取这些内部集合?

2个回答

9

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

实现类似于OP想要实现的功能的一种方法是使用常规Set并将它们的键名称存储在Hash的值中。然而,解引用这些值需要在代码中执行额外的操作。


3
例如,您可以创建一个名为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

使用您的代码实现逻辑。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接