python操作redis缓存-Set集合类型,可以理解为不能有重复元素的列表

sadd(name,values)name对应的集合中添加元素

#!/usr/bin/env python
# -*- coding:utf-8 -*- import redis #导入操作redis模块 pool = redis.ConnectionPool(host='127.0.0.1', port=6379) #配置连接池连接信息 r = redis.Redis(connection_pool=pool) #连接连接池
r.sadd('adc8868','') #sadd(name,values)name对应的集合中添加元素 f = r.smembers('adc8868') #获取name对应的集合的所有成员
print(f)
#返回
#{b'123'}

scard(name)获取name对应的集合中元素个数

#!/usr/bin/env python
# -*- coding:utf-8 -*- import redis #导入操作redis模块 pool = redis.ConnectionPool(host='127.0.0.1', port=6379) #配置连接池连接信息 r = redis.Redis(connection_pool=pool) #连接连接池
r.sadd('adc8868','') #sadd(name,values)name对应的集合中添加元素 f = r.scard('adc8868') #scard(name)获取name对应的集合中元素个数
print(f)
#返回
#

sdiff(keys, *args)在第一个name对应的集合中且不在其他name对应的集合的元素集合

#!/usr/bin/env python
# -*- coding:utf-8 -*- import redis #导入操作redis模块 pool = redis.ConnectionPool(host='127.0.0.1', port=6379) #配置连接池连接信息 r = redis.Redis(connection_pool=pool) #连接连接池
r.sadd('adc8861','','') #sadd(name,values)name对应的集合中添加元素
r.sadd('adc8862','','','') f = r.sdiff('adc8862','adc8861') #sdiff(keys, *args)在第一个name对应的集合中且不在其他name对应的集合的元素集合
print(f)
#返回
#{b'789'}

sdiffstore(dest, keys, *args)获取第一个name对应的集合中且不在其他name对应的集合,再将其新加入到dest对应的集合中

#!/usr/bin/env python
# -*- coding:utf-8 -*- import redis #导入操作redis模块 pool = redis.ConnectionPool(host='127.0.0.1', port=6379) #配置连接池连接信息 r = redis.Redis(connection_pool=pool) #连接连接池
r.sadd('adc8861','','') #sadd(name,values)name对应的集合中添加元素
r.sadd('adc8862','','','') f = r.sdiffstore('adc','adc8862','adc8861') #sdiffstore(dest, keys, *args)获取第一个name对应的集合中且不在其他name对应的集合,再将其新加入到dest对应的集合中
print(f) n = r.smembers('adc') #获取name对应的集合的所有成员
print(n)
#返回
#
# {b'789'}

sinter(keys, *args)获取多个集合与第一个集合里交集的数据,也就是相同的数据

#!/usr/bin/env python
# -*- coding:utf-8 -*- import redis #导入操作redis模块 pool = redis.ConnectionPool(host='127.0.0.1', port=6379) #配置连接池连接信息 r = redis.Redis(connection_pool=pool) #连接连接池
r.sadd('rdi1','','','') #sadd(name,values)name对应的集合中添加元素
r.sadd('rdi2','','','') n = r.sinter("rdi1","rdi2") #sinter(keys, *args)获取多个集合与第一个集合里交集的数据,也就是相同的数据
print(n) #返回
#{b'123', b'456'}

sinterstore(dest, keys, *args)获取多个集合与第一个集合里交集的数据,也就是相同的数据,在将其加入到dest对应的集合中

#!/usr/bin/env python
# -*- coding:utf-8 -*- import redis #导入操作redis模块 pool = redis.ConnectionPool(host='127.0.0.1', port=6379) #配置连接池连接信息 r = redis.Redis(connection_pool=pool) #连接连接池
r.sadd('rdi1','','','') #sadd(name,values)name对应的集合中添加元素
r.sadd('rdi2','','','') n = r.sinterstore('adc',"rdi1","rdi2") #sinterstore(dest, keys, *args)获取多个集合与第一个集合里交集的数据,也就是相同的数据,在将其加入到dest对应的集合中
print(n) n = r.smembers('adc') #获取name对应的集合的所有成员
print(n)
#返回
#
# {b'123', b'456'}

sismember(name, value)检查value是否是name对应的集合的成员

#!/usr/bin/env python
# -*- coding:utf-8 -*- import redis #导入操作redis模块 pool = redis.ConnectionPool(host='127.0.0.1', port=6379) #配置连接池连接信息 r = redis.Redis(connection_pool=pool) #连接连接池
r.sadd('rdi1','','','') #sadd(name,values)name对应的集合中添加元素
r.sadd('rdi2','','','') n = r.sismember("rdi1",'') #sismember(name, value)检查value是否是name对应的集合的成员
print(n) #返回
#True

smembers(name) 获取name对应的集合的所有成员

#!/usr/bin/env python
# -*- coding:utf-8 -*- import redis #导入操作redis模块 pool = redis.ConnectionPool(host='127.0.0.1', port=6379) #配置连接池连接信息 r = redis.Redis(connection_pool=pool) #连接连接池
r.sadd('rdi1','','','') #sadd(name,values)name对应的集合中添加元素
r.sadd('rdi2','','','') n = r.smembers("rdi1") #smembers(name) 获取name对应的集合的所有成员
print(n) #返回
#{b'123', b'851', b'456'}

smove(src, dst, value)将某个成员从一个集合中移动到另外一个集合

#!/usr/bin/env python
# -*- coding:utf-8 -*- import redis #导入操作redis模块 pool = redis.ConnectionPool(host='127.0.0.1', port=6379) #配置连接池连接信息 r = redis.Redis(connection_pool=pool) #连接连接池
r.sadd('rdi1','','','') #sadd(name,values)name对应的集合中添加元素
r.sadd('rdi2','','','') n = r.smove("rdi1",'rdi2','') #smove(src, dst, value)将某个成员从一个集合中移动到另外一个集合
print(n) #返回
#True

spop(name)从集合的右侧(尾部)移除一个成员,并将其返回

#!/usr/bin/env python
# -*- coding:utf-8 -*- import redis #导入操作redis模块 pool = redis.ConnectionPool(host='127.0.0.1', port=6379) #配置连接池连接信息 r = redis.Redis(connection_pool=pool) #连接连接池
r.sadd('rdi1','','','') #sadd(name,values)name对应的集合中添加元素
r.sadd('rdi2','','','') n = r.spop("rdi1") #spop(name)从集合的右侧(尾部)移除一个成员,并将其返回
print(n) #返回
#b'851'

srandmember(name, numbers)从name对应的集合中随机获取 numbers 个元素

#!/usr/bin/env python
# -*- coding:utf-8 -*- import redis #导入操作redis模块 pool = redis.ConnectionPool(host='127.0.0.1', port=6379) #配置连接池连接信息 r = redis.Redis(connection_pool=pool) #连接连接池
r.sadd('rdi1','','','') #sadd(name,values)name对应的集合中添加元素
r.sadd('rdi2','','','') n = r.srandmember("rdi1",number=2) #srandmember(name, numbers)从name对应的集合中随机获取 numbers 个元素
print(n) #返回
#[b'851', b'123']

srem(name, values)在name对应的集合中删除某些值

#!/usr/bin/env python
# -*- coding:utf-8 -*- import redis #导入操作redis模块 pool = redis.ConnectionPool(host='127.0.0.1', port=6379) #配置连接池连接信息 r = redis.Redis(connection_pool=pool) #连接连接池
r.sadd('rdi1','','','') #sadd(name,values)name对应的集合中添加元素
r.sadd('rdi2','','','') n = r.srem("rdi1",'') #srem(name, values)在name对应的集合中删除某些值
print(n) #返回
#

sunion(keys, *args)获取多个name对应的集合的并集,并集后相同的数据只显示一个

#!/usr/bin/env python
# -*- coding:utf-8 -*- import redis #导入操作redis模块 pool = redis.ConnectionPool(host='127.0.0.1', port=6379) #配置连接池连接信息 r = redis.Redis(connection_pool=pool) #连接连接池
r.sadd('rdi1','','','') #sadd(name,values)name对应的集合中添加元素
r.sadd('rdi2','','','') n = r.sunion("rdi1",'rdi2') #sunion(keys, *args)获取多个name对应的集合的并集,并集后相同的数据只显示一个
print(n) #返回
#{b'456', b'123', b'789', b'851'}

sunionstore(dest,keys, *args)获取多个name对应的集合的并集,并集后相同的数据只取一个,并将结果保存到dest对应的集合中

#!/usr/bin/env python
# -*- coding:utf-8 -*- import redis #导入操作redis模块 pool = redis.ConnectionPool(host='127.0.0.1', port=6379) #配置连接池连接信息 r = redis.Redis(connection_pool=pool) #连接连接池
r.sadd('rdi1','','','') #sadd(name,values)name对应的集合中添加元素
r.sadd('rdi2','','','') r.sunionstore('adc',"rdi1",'rdi2') #sunionstore(dest,keys, *args)获取多个name对应的集合的并集,并集后相同的数据只取一个,并将结果保存到dest对应的集合中
n = r.smembers("adc") #smembers(name) 获取name对应的集合的所有成员
print(n) #返回
#{b'456', b'851', b'123', b'789'}

sscan(name, cursor=0, match=None, count=None)同字符串的操作,用于增量迭代分批获取元素,避免内存消耗太大【推荐使用下面那个方法】
  name,redis的name
  cursor,游标(基于游标分批取获取数据)
  match,匹配指定key,默认None 表示所有的key
  count,每次分片最少获取个数,默认None表示采用Redis的默认分片个数
  如:
  第一次:cursor1, data1 = r.sscan('name', cursor=0, match=None, count=None)
  第二次:cursor2, data2 = r.sscan('name', cursor=cursor1, match=None, count=None)
  ...
  直到返回值cursor的值为0时,表示数据已经通过分片获取完毕

#!/usr/bin/env python
# -*- coding:utf-8 -*- import redis #导入操作redis模块 pool = redis.ConnectionPool(host='127.0.0.1', port=6379) #配置连接池连接信息 r = redis.Redis(connection_pool=pool) #连接连接池
r.sadd('rdi1','','','') #sadd(name,values)name对应的集合中添加元素
r.sadd('rdi2','','','') #sscan(name, cursor=0, match=None, count=None)用于增量迭代分批获取元素,避免内存消耗太大
cursor1, data1 = r.sscan('rdi1',cursor=0,match='*1',count=None) #获取name对应的元素,匹配以1结尾的元素
print(cursor1, data1) #返回两个值,第一个是获取的游标位置,第二个是获取到的数据 cursor2, data2 = r.sscan('rdi1',cursor=cursor1,match='*2',count=None) #第二次获取,游标使用第一次返回的游标位置,使其向后继续
print(cursor2, data2) #返回
#0 [b'851']
#0 []

sscan_iter(name, match=None, count=None)用于增量迭代分批获取元素,避免内存消耗太大【推荐】
  name,redis的name
  match,匹配指定key,默认None 表示所有的key
  count,每次分片最少获取个数,默认None表示采用Redis的默认分片个数

#!/usr/bin/env python
# -*- coding:utf-8 -*- import redis #导入操作redis模块 pool = redis.ConnectionPool(host='127.0.0.1', port=6379) #配置连接池连接信息 r = redis.Redis(connection_pool=pool) #连接连接池
r.sadd('rdi1','','','') #sadd(name,values)name对应的集合中添加元素
r.sadd('rdi2','','','') #sscan_iter(name, match=None, count=None)用于增量迭代分批获取元素,避免内存消耗太大
n = r.sscan_iter('rdi1',match='*1',count=None) #获取name对应的元素,匹配以1结尾的元素
print(n) #返回获取到的数据对象,需要循环 for i in n:
print(i) #循环出获取到的数据 #返回
# <generator object StrictRedis.sscan_iter at 0x0000023F18C94570>
# b'851'

第二百九十八节,python操作redis缓存-Set集合类型,可以理解为不能有重复元素的列表的更多相关文章

  1. 第二百九十四节,Redis缓存-Redis安装

    redis简介 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sor ...

  2. 第二百九十六节,python操作redis缓存-Hash哈希类型,可以理解为字典类型

    第二百九十六节,python操作redis缓存-Hash哈希类型,可以理解为字典类型 Hash操作,redis中Hash在内存中的存储格式如下图: hset(name, key, value)name ...

  3. 第二百九十五节,python操作redis缓存-字符串类型

    python操作redis缓存-字符串类型 首先要安装redis-py模块 python连接redis方式,有两种连接方式,一种是直接连接,一张是通过连接池连接 注意:以后我们都用的连接池方式连接,直 ...

  4. 第二百九十九节,python操作redis缓存-SortSet有序集合类型,可以理解为有序列表

    python操作redis缓存-SortSet有序集合类型,可以理解为有序列表 有序集合,在集合的基础上,为每元素排序:元素的排序需要根据另外一个值来进行比较,所以,对于有序集合,每一个元素有两个值, ...

  5. 第二百九十七节,python操作redis缓存-List类型,可以理解为列表

    python操作redis缓存-List类型,可以理解为列表,是可以有重复元素的列表 List操作,redis中的List在在内存中按照一个name对应一个List来存储.如图: lpush(name ...

  6. 第三百零一节,python操作redis缓存-管道、发布订阅

    python操作redis缓存-管道.发布订阅 一.管道 redis-py默认在执行每次请求都会创建(连接池申请连接)和断开(归还连接池)一次连接操作,如果想要在一次请求中指定多个命令,则可以使用pi ...

  7. 第三百节,python操作redis缓存-其他常用操作,用于操作redis里的数据name,不论什么数据类型

    python操作redis缓存-其他常用操作,用于操作redis里的数据name,不论什么数据类型 delete(*names)根据删除redis中的任意数据类型 #!/usr/bin/env pyt ...

  8. python操作Redis缓存

    python操作Redis缓存 https://www.cnblogs.com/guotianbao/p/8683037.html 学习资料:电子书资源 联系邮箱:gmu1592618@gmail.c ...

  9. python 操作redis之——有序集合(sorted set) (七)

    #coding:utf8 import redis r =redis.Redis(host=") 1.Zadd 命令用于将一个或多个成员元素及其分数值加入到有序集当中.如果某个成员已经是有序 ...

随机推荐

  1. Python 元组 index() 方法

    描述 Python 元组 index() 方法用于从元祖中找出某个对象第一个匹配项的索引位置,如果这个对象不在元祖中会报一个异常. 语法 index() 方法语法: T.index(obj[,star ...

  2. 通向码农的道路(enet开源翻译计划 二)

    QQ 324186207群 enet交流技术,主要是为了研究tcp内部执行机制.欢迎大家增加探讨.小弟水平有限,翻译难免有误. . http://enet.bespin.org 解析enet 双向链表 ...

  3. WPF绑定时要绑定属性,不要绑定字段

    如题(就是加get;set;),绑定属性不出东西,不知道为什么...

  4. #ifndef用于避免多重包含

    原因:C中,某一个重要的头文件可能被多个文件包含,如果编译的多个文件均包含了同一个头文件, 就可能存在,一个头文件被多次包含的问题. 用法:这个问题,一般用#ifndef来解决. 1.定义一个与文件名 ...

  5. NGUI下拉菜单学习UIPopupList

    NGUI下拉栏主要注意2点 1.弹出文字收回去,需要更新主显文字信息,要绑定调用 2.有时候发现弹出来的面板差别很大 看了下代码 会根据父节点取相对位置. 这样位置就可以了,很奇怪的做法..

  6. verilog 条件编译命令`ifdef、`else、`endif 的应用

    [摘自夏宇闻<verilog设计教程>]一般情况下,Verilog HDL源程序中所有的行都将参加编译.但是有时希望对其中的一部分内容只有在满足条件才进行编译,也就是对一部分内容指定编译的 ...

  7. 李洪强iOS之集成极光推送三iOS集成指南

    李洪强iOS之集成极光推送三iOS集成指南 SDK说明 适用版本 本文匹配的 SDK版本:r2.1.5 以后.查看最近更新了解最新的SDK更新情况.使用Xcode 6及以上版本可以使用新版Push S ...

  8. 关于taglib的uri域

    如果tld文件中有uri,那么你可以直接使用该tld文件中写的uri,就不用在web.xml中配置taglib了,如图 如果你在web.xml中配置了taglib,那么你也可以选择使用你配置的uri( ...

  9. Zabbix添加自定义监控项(一)

    前言:由于Zabbix提供的项目和模板有限,有时我们需要自定义监控项,下面以监控磁盘I/O使用率为例,创建自动发现规则,并配置图形. (1)Zabbix_agentd端自动发现脚本,zabbix要求返 ...

  10. vi-vim :删除、撤销、恢复删除、复制删除

    删除 1 删除命令 vi命令 操作键 x 删除当前光标处的字符 X 删除光标左边的字符 D 删除从当前光标到本行末尾的字符 J 删除两行之间的换行符 (亦可用于合并两行) dmove 删除从当前光标到 ...