1
上一篇文章:Python--Redis实战:第三章:Redis命令:第二节:列表
下一篇文章:Python--Redis实战:第三章:Redis命令:第四节:散列

Redis的集合以无序的方式来存储多个各不相同的元素,用户可以快速地对集合执行添加元素操作、移除元素操作、以及检查一个元素是否存在于集合里。本节将对最常用的集合命令进行介绍,包括:插入命令、移除命令、将元素从一个集合移动到另一个集合的命令、以及对多个集合执行交集运算、并集运算、差集运算的命令。

下表展示了其中一部分最常用的集合命令:

命令 用例 用例描述
sadd sadd key-name item [item ...] 将一个或多个元素添加到集合里面,并返回被添加元素当中原本并不存在于集合里面的元素数量
srem srem key-name item [item ...] 从集合里面移除一个或多个元素,并返回被移除元素的数量
sismember sismember key-name item 检查元素item是否存在于集合key-name里
scard scard key-name 返回集合包含的元素的数量
smembers smembers key-name 返回集合包含的所有元素
srandmember srandmember key-name [count] 从集合里面随机地返回一个或多个元素。当count为正数时,命令返回的随机元素不会重复;当count为负数时,命令返回的随机元素可能会出现重复。
spop spop key-name 随机地移除集合中的一个元素,并返回被移除的元素。
smove smove source-key dest-key item 如果集合source-key包含元素item,那么从集合source-key里面移除元素item,并将元素item添加到集合dest-key中;如果item被成功移除,那么命令返回1,否则返回0

Redis常用集合命令使用实例

import redis #导入redis包包

#与本地redis进行链接,地址为:localhost,端口号为6379
r=redis.StrictRedis(host='localhost',port=6379)

r.delete('set-key')

#sadd命令会将那些目前并不存在于集合里面的元素添加到集合里面,并返回被添加元素的数量
print(r.sadd('set-key','a','b','c'))

#srem命令返回的是被移除元素的数量
print(r.srem('set-key','c','d'))
print(r.srem('set-key','c','d'))


#查看集合包含的元素数量
print(r.scard('set-key'))

#获取集合包含的所有元素
print(r.smembers('set-key'))

#可以很容易地将元素从一个集合移动到另一个集合
print(r.smove('set-key','set-key2','a'))
#在执行smove命令时,如果用户想要移动的元素不存在于第一个集合里,那么移动操作就不会执行,返回False
print(r.smove('set-key','set-key2','a'))


print(r.smembers('set-key2'))

运行结果:

3
1
0
2
{b'a', b'b'}
True
False
{b'a'}

通过使用上面展示的命令,我们可以将各不相同的元素添加到集合里面,但集合真正厉害的地方在于组合和关联多个集合,下表展示了相关的命令:

命令 用例 用例描述
sdiff sdiff key-name [key-name ...] 返回那些存在于第一个集合、但不存在于其它集合中的元素(数学上的差集运算)
sdiffstore sdiffstore dest-key key-name [key-name ...] 将那些存在于第一个集合但不存在于其他集合中的元素(数学上的差集运算)存储到dest-key键里面
sinter sinter key-name [key-name ...] 返回那些同时存在于所有集合中的元素(数学上的交集运算)
sinterstore sinterstore dest-key key-name [key-name ...] 将那些同时存在于所有集合的元素(数学上的交集运算)存储到dest-key键里面
sunion sunion key-name [key-name ...] 返回那些至少存在于一个集合中的元素(数学上的并集计算)
sunionstore sunionstore dest-key key-name [key-name ...] 将那些至少存在于一个集合中的元素(数学上的并集计算)存储到dest-key键里面

这些命令分别是并集运算、交集运算和差集运算这3个基本集合操作的”返回结果“版本和”存储结果“版本。

示例:

import redis #导入redis包包

#与本地redis进行链接,地址为:localhost,端口号为6379
r=redis.StrictRedis(host='localhost',port=6379)

r.delete('set-key1')
r.delete('set-key2')

#首先将这一些元素添加到两个集合里面
print(r.sadd('set-key1','a','b','c','d'))
print(r.sadd('set-key2','c','d','e','f'))

#计算出从第一个集合里面移除第二个集合包含的所有元素的结果
print(r.sdiff('set-key1','set-key2'))

#计算出同时存在于两个集合里面的所有元素
print(r.sinter('set-key1','set-key2'))

#计算出两个集合包含的所有元素
print(r.sunion('set-key1','set-key2'))

运行结果:

4
4
{b'b', b'a'}
{b'c', b'd'}
{b'c', b'e', b'd', b'f', b'a', b'b'}

和Python的集合相比,Redis的集合除了可以被多个客户端远程地进行访问以外,其他的语义和功能基本都是相同的。

接下来的一节将对Redis的散列处理命令进行介绍,这些命令允许用户将多个相关的键值对存储在一起,以便执行获取操作和更新操作。

上一篇文章:Python--Redis实战:第三章:Redis命令:第二节:列表
下一篇文章:Python--Redis实战:第三章:Redis命令:第四节:散列

Mark
662 声望344 粉丝

talk is cheap,show me the code