python集合中的元素不允许重复对吗_第二百九十八节,python操作redis缓存-Set集合类型,可以理解为不能有重复元素的列表...

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','123') #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','123') #sadd(name,values)name对应的集合中添加元素

f= r.scard('adc8868') #scard(name)获取name对应的集合中元素个数

print(f)#返回#1

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','123','456') #sadd(name,values)name对应的集合中添加元素

r.sadd('adc8862','123','456','789')

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','123','456') #sadd(name,values)name对应的集合中添加元素

r.sadd('adc8862','123','456','789')

f= r.sdiffstore('adc','adc8862','adc8861') #sdiffstore(dest, keys, *args)获取第一个name对应的集合中且不在其他name对应的集合,再将其新加入到dest对应的集合中

print(f)

n= r.smembers('adc') #获取name对应的集合的所有成员

print(n)#返回#1#{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','123','456','851') #sadd(name,values)name对应的集合中添加元素

r.sadd('rdi2','123','456','789')

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','123','456','851') #sadd(name,values)name对应的集合中添加元素

r.sadd('rdi2','123','456','789')

n= r.sinterstore('adc',"rdi1","rdi2") #sinterstore(dest, keys, *args)获取多个集合与第一个集合里交集的数据,也就是相同的数据,在将其加入到dest对应的集合中

print(n)

n= r.smembers('adc') #获取name对应的集合的所有成员

print(n)#返回#2#{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','123','456','851') #sadd(name,values)name对应的集合中添加元素

r.sadd('rdi2','123','456','789')

n= r.sismember("rdi1",'851') #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','123','456','851') #sadd(name,values)name对应的集合中添加元素

r.sadd('rdi2','123','456','789')

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','123','456','851') #sadd(name,values)name对应的集合中添加元素

r.sadd('rdi2','123','456','789')

n= r.smove("rdi1",'rdi2','851') #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','123','456','851') #sadd(name,values)name对应的集合中添加元素

r.sadd('rdi2','123','456','789')

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','123','456','851') #sadd(name,values)name对应的集合中添加元素

r.sadd('rdi2','123','456','789')

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','123','456','851') #sadd(name,values)name对应的集合中添加元素

r.sadd('rdi2','123','456','789')

n= r.srem("rdi1",'456') #srem(name, values)在name对应的集合中删除某些值

print(n)#返回#1

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','123','456','851') #sadd(name,values)name对应的集合中添加元素

r.sadd('rdi2','123','456','789')

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','123','456','851') #sadd(name,values)name对应的集合中添加元素

r.sadd('rdi2','123','456','789')

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','123','456','851') #sadd(name,values)name对应的集合中添加元素

r.sadd('rdi2','123','456','789')#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','123','456','851') #sadd(name,values)name对应的集合中添加元素

r.sadd('rdi2','123','456','789')#sscan_iter(name, match=None, count=None)用于增量迭代分批获取元素,避免内存消耗太大

n = r.sscan_iter('rdi1',match='*1',count=None) #获取name对应的元素,匹配以1结尾的元素

print(n) #返回获取到的数据对象,需要循环

for i inn:print(i) #循环出获取到的数据

#返回##b'851'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值