C# CsRedis的初探(五)-- Redis常用命令整理(集合类型)

2019-07-24 13:19:39 浏览数 (2)

Redis常用命令整理集合类型

增加删除命令

sadd key member [ member .... ]

sadd 命令用来向集合中增加一个或多个元素,如果键不存在则会自动创建。因为在一个集合中不能有相同的元素,所以如果要加入的元素已经存在与集合中就会忽略这个元素。返回值是成功加入的元素数量(忽略的元素不计算在内)

srem key member [ member .... ]

srem 命令用来从集合中删除一个或多个元素,并返回删除成功的个数。


获得集合中的所有元素

smembers key

返回集合中的所有元素


判断元素是否在集合中

sismember key member

判断一个元素是否在集合中是一个时间复杂度为 0(1) 的操作,无论集合中有多少个元素, sismember 命令始终可以极快的返回结果。当值存在时 sismember 命令返回 1 ,当值不存在或者键不存在时返回 0


集合间运算

sdiff key [ key ...... ]

sdiff 命令用来对多个集合执行差集运算。集合 A 与集合 B 的差集表示为 A- B ,代表所有属于 A 且不属于 B 的元素构成的集合,即

A - B = { x| x∈A 且 x ∈/B }

命令使用方法:

sadd seta 1 2 3 4 6 7 8

sadd setb 2 3 4

sdiff seta setb

该命令支持同时传入多个键, 计算顺序是先计算 seta 和 setb 在计算结果与 setc 的差集

sadd setc 2 3 4

sdiff seta setb setc

sinter key [ key ..... ]

该命令用来对多个集合执行交集运算。集合 A 与集合 B 的交集表示为 A∩B,代表所有属于 A 且属于 B 的元素构成的集合

即 A∩B = { x| x∈A 且 x ∈B }

命令使用方法:

sinter seta setb

该命令同样支持同时传入多个键

sunion key [ key ...... ]

该命令用来对多个集合执行并集运算。集合 A 与集合 B的并集表示为 A∪B ,代表所有属于A或所有属于B的元素构成的集合

即 A∪B = { x| x∈A 或 x ∈B }

命令使用方法:

sunion seta setb

该命令同样支持同时传入多个键


获得集合中元素的个数

scard key

返回集合的基数。当 key 不存在时,返回 0 。


进行集合运算并将结果存储

sdiffstore destination key [ key ...... ]

sdiffstore 命令和 sdiff 命令功能一样,唯一的区别就是前者不会直接返回运算的结果,而是将结果存在 destination 键中

sinterstore destination key [ key ...... ]

sinterstore 这个命令类似于 sinter 命令,但它将结果保存到 destination 集合,而不是简单地返回结果集。

sunionstore destination key [ key ...... ]

sunionstore 这个命令类似于 sunion 命令,但它将结果保存到 destination 集合,而不是简单地返回结果集。


随机获得集合中的元素

srandmember key [ count ]

该命令用来随机从集合中获取一个元素

还可以传递 count 参数来一次随机获得多个元素,根据 count 的正负不同,具体表现也不同

当count 为正数时,srandmember 会随机获取从集合里获得 count 个不重复的元素。如果 count 的值大于集合中的元素个数,则srandmember 会返回集合中的全部元素

当 count 为负数时,srandmember 会随机从集合中获得 |count| 个的元素,这些元素有可能相同

注:当传递count 参数时,在windows环境下提示命令参数错误


从集合中弹出一个元素

spop key

由于集合类型的元素是无序的,所以 spop 命令会从集合中随机选择一个元素弹出,返回值为被移除的随机元素,如果 key 不存在或者key 为空集时,返回 nil。


-END-

0 人点赞