Python操作Redis大全( 三 )
三、集合 sets
Redis 数据库集合对象(set object)是由string类型的无重复元素的无需集合 , 底层编码可以是intset或者hashtable 。 intset编码的集合对象用整数集合最为底层实现 , 所有对象元素保存在整数集合中 。 Python的redis模块实现了 SADD、SCARD 、SDIFF 、SDIFFSTORE、SINTER 、SINTERSTORE、SISMEMBER 、SMEMBERS 、SMOVE、SPOP、SRANDMEMBER、SREM、SUNION、SUNIONSTORE操作命令的基本用法 。 函数说明如下:
- SADD:向集合对象添加成员 , sadd(self, name, value)
- SCARD:获取集合元素个数 , scard(self, name)
- SDIFF:返回给定多个集合对象的差集(set key1-set key2..-set keyn) , 从左到右计算集合差集 , sdiff(self, keys, *args)
- SDIFFSTORE:返回给定给定多个集合对象的差集并存储在目标(dest)集合中 , sdiffstore(self, dest, keys, *args)
- SINTER:返回给定所有集合(keys,args)的交集, sinter(self, keys, args)
- SINTERSTORE:返回给定所有集合(keys,args)的交集并存储在 集合(dest) 中, sinterstore(self, dest, keys, args)
- SISMEMBER:判断 value元素是否是集合 name 的成员,返回布尔逻辑值True或者False , sismember(self, name, value)
- SMEMBERS:返回集合中所元素值的Python集合类型数据 , smembers(self, name)
- SMOVE:将元素value从集合src移动到 集合 dest 。 若元素value在集合src中不存在 , 则集合dest中不会添加元素value ,smove(self, src, dest, value)
- SPOP:移除并返回集合中的一个随机元素, spop(self, name)
- SRANDMEMBER:返回集合中一个随机数 , 但是不做移除操作, srandmember(self, name) 。 从Redis 2.6 版本开始 ,在命令行下Srandmember 命令接受可选返回元素数量的参数 redis>SRANDMEMBER name count
- SREM:移除集合中一个元素 , srem(self, name, value) , redis模块任然沿用Redis 2.4 版本以前的只接受单个元素的用法 。
- SUNION:返回所有给定集合的并集中所有元素 , sunion(self, keys, *args)
- SUNIONSTORE:所有给定集合的并集存储在集合dest 中, sunionstore(self, dest, keys, *args)
- SSCAN:迭代集合中的元素 , sscan(self, name, cursor=0, match=None, count=None)
#!/usr/bin/python# -*- coding:utf-8 -*-# __author__ = 'Jack'pool = redis.ConnectionPool(host='127.0.0.1', port=6379)r = redis.Redis(connection_pool=pool)r.flushall # 清空Redisr.sadd('s1', 'v1', 'v1', 'v2', 'v3') # name对应的集合中添加元素r.sadd('s2', 'v2', 'v4') # name对应的集合中添加元素print(r.scard('s1')) # 获取name对应的集合中元素个数print(r.sdiff('s1', 's2')) #在第一个name对应的集合中且不在其他name对应的集合的元素集合r.sdiffstore('s3', 's1', 's2') # 获取第一个name对应的集合中且不在其他name对应的集合 , 再将其新加入到dest对应的集合中print(r.smembers('s3')) # 获取s3对应的集合的所有成员print(r.sinter('s1', 's2')) # 获取s1, s2对应集合的交集r.sinterstore('s4', 's1', 's2') # 获取s1, s2对应集合的交集 , 并将其存放到集合是s4中print(r.smembers('s4'))print(r.sunion('s1', 's2')) # 获取s1, s2对应集合的并集r.sunionstore('s5', 's1', 's2') # 获取s1, s2对应集合的交集 , 并将其存放到集合是s5中print(r.smembers('s5'))print(r.sismember('s4', 'v4')) # 检查value是否是name对应的集合的成员r.smove('s2', 's1', 'v4') # 将集合s2中成员v4移至集合s1中print(r.smembers('s1'))r.srem('s1', 'v1') # 在name对应的集合中删除某些值print(r.spop('s1')) # 从集合的右侧(尾部)移除一个成员 , 并将其返回 注意:集合是无序的 , 故结果随机!print(r.srandmember('s1')) # 从name对应的集合中随机获取 numbers 个元素(Redis 2.6+)
- 微信还能这么用?让你大开眼界的微信隐藏操作
- 想自学Python来开发爬虫,需要按照哪几个阶段制定学习计划
- 未来想进入AI领域,该学习Python还是Java大数据开发
- 鸿蒙OS大一统需产业合力
- 4G速度变慢?运营商这波操作,让5G秒变“真香现场”
- 小米11操作小技巧:可开启全局120Hz
- 2021年Java和Python的应用趋势会有什么变化?
- 非计算机专业的本科生,想利用寒假学习Python,该怎么入手
- 用Python制作图片验证码,这三行代码完事儿
- 30天自制操作系统:第一天