资讯专栏INFORMATION COLUMN

Python--Redis实战:第三章:Redis命令:第三节:集合

HollisChuang / 1856人阅读

摘要:上一篇文章实战第三章命令第二节列表下一篇文章实战第三章命令第四节散列

上一篇文章: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命令:第四节:散列

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/44875.html

相关文章

  • Python--Redis实战第三Redis命令三节集合

    摘要:上一篇文章实战第三章命令第二节列表下一篇文章实战第三章命令第四节散列 上一篇文章:Python--Redis实战:第三章:Redis命令:第二节:列表下一篇文章:Python--Redis实战:第三章:Redis命令:第四节:散列 Redis的集合以无序的方式来存储多个各不相同的元素,用户可以快速地对集合执行添加元素操作、移除元素操作、以及检查一个元素是否存在于集合里。本节将对最常用...

    Jinkey 评论0 收藏0
  • Python--Redis实战:第一章:初识Redis三节:你好Redis-文章投票试炼

    摘要:为了防止用户对同一篇文章进行多次投票,网站需要为每一篇文章记录一个已投票用户名单。上一篇文章实战第一章初识第二节数据结构简介下一篇文章实战第二章使用构建应用第一节登录和缓存 上一篇文章: Python--Redis实战:第一章:初识Redis:第二节:Redis数据结构简介下一篇文章:Python--Redis实战:第二章:使用Redis构建Web应用:第一节:登录和cookie缓存 ...

    youkede 评论0 收藏0
  • Python--Redis实战:第一章:初识Redis三节:你好Redis-文章投票试炼

    摘要:为了防止用户对同一篇文章进行多次投票,网站需要为每一篇文章记录一个已投票用户名单。上一篇文章实战第一章初识第二节数据结构简介下一篇文章实战第二章使用构建应用第一节登录和缓存 上一篇文章: Python--Redis实战:第一章:初识Redis:第二节:Redis数据结构简介下一篇文章:Python--Redis实战:第二章:使用Redis构建Web应用:第一节:登录和cookie缓存 ...

    Meils 评论0 收藏0
  • Python--Redis实战第三Redis命令:第四节:散列

    摘要:实例导入包包与本地进行链接,地址为,端口号为和字符串一样,对散列中一个尚未存在的键执行自增操作时,会将键的值当作来处理。 上一篇文章:Python--Redis实战:第三章:Redis命令:第三节:集合下一篇文章:Python--Redis实战:第三章:Redis命令:第五节:有序集合 第一章提到过,Redis的散列可以让用户将多个键值对存储到一个Redis里面。从功能上来说,Red...

    waterc 评论0 收藏0
  • Python--Redis实战第三Redis命令:第四节:散列

    摘要:实例导入包包与本地进行链接,地址为,端口号为和字符串一样,对散列中一个尚未存在的键执行自增操作时,会将键的值当作来处理。 上一篇文章:Python--Redis实战:第三章:Redis命令:第三节:集合下一篇文章:Python--Redis实战:第三章:Redis命令:第五节:有序集合 第一章提到过,Redis的散列可以让用户将多个键值对存储到一个Redis里面。从功能上来说,Red...

    Lionad-Morotar 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<