SET(集合)
Redis的Set是string类型的无序集合。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
python redis提供的方法与命令行基本一致, 具体的函数及含义可以参考给定的命令行来使用, 对应的函数名称与命令名称基本一致
命令
首先了解官方的命令, 具体如下:
1 SADD key member1 [member2]
向集合添加一个或多个成员
2 SCARD key
获取集合的成员数
3 SDIFF key1 [key2]
返回给定所有集合的差集
4 SDIFFSTORE destination key1 [key2]
返回给定所有集合的差集并存储在 destination 中
5 SINTER key1 [key2]
返回给定所有集合的交集
6 SINTERSTORE destination key1 [key2]
返回给定所有集合的交集并存储在 destination 中
7 SISMEMBER key member
判断 member 元素是否是集合 key 的成员
8 SMEMBERS key
返回集合中的所有成员
9 SMOVE source destination member
将 member 元素从 source 集合移动到 destination 集合
10 SPOP key
移除并返回集合中的一个随机元素
11 SRANDMEMBER key [count]
返回集合中一个或多个随机数
12 SREM key member1 [member2]
移除集合中一个或多个成员
13 SUNION key1 [key2]
返回所有给定集合的并集
14 SUNIONSTORE destination key1 [key2]
所有给定集合的并集存储在 destination 集合中
15 SSCAN key cursor [MATCH pattern] [COUNT count]
迭代集合中的元素
python-redis
python操作redis SET类型提供一些函数, 函数名称与命令基本一致,可以参考命令进行使用
1.sadd(name,values)
添加元素,或新建
print rediscli.sadd('sv1', 'x1')
print rediscli.scard('sv1')
print rediscli.sscan('sv1')
2.scard(name)
获取个数
3.sdiff(keys, *args)
在第一个name对应的集合中且不在其他name对应的集合的元素集合
print rediscli.sadd('sv2', 'x1', 'x2', 'x3', 'x4')
print rediscli.sdiff('sv2', 'sv1')
输出:
4
set(['x2', 'x3', 'x4'])
4.sdiffstore(dest, keys, *args)
获取第一个name对应的集合中且不在其他name对应的集合,再将其新加入到dest对应的集合中
print rediscli.sdiffstore('sv3', 'sv2', 'sv1')
print rediscli.sscan('sv3')
输出:
3
(0L, ['x3', 'x2', 'x4'])
5.sinter(keys, *args)
集合的交集
print rediscli.sadd('sv4', 'x4', 'x2', 'x8', 'x9')
print rediscli.sinter('sv4', 'sv2')
输出:
4
set(['x2', 'x4'])
6.sinterstore(dest, keys, *args)
集合的交集,再讲其加入到dest对应的集合中
7.sismember(name, value)
判断是否为name的成员
print rediscli.sismember('sv4', 'x8')
输出:
True
8.smembers(name)
获取所有成员
9.smove(src, dst, value)
将某个成员从一个集合中移动到另外一个集合
print rediscli.smove('sv1', 'sv5', 'x1')
10.spop(name)
从右侧抛出值
print rediscli.spop('sv4')
11.srandmember(name, numbers)
从name对应的集合中随机获取 numbers 个元素
print rediscli.srandmember('sv2', 2)
输出:
['x2', 'x4']
12.srem(name, values)
集合中删除某些值
13.sunion(keys, *args)
集合的并集
print rediscli.sunion('sv2', 'sv4')
14.sunionstore(dest,keys, *args)
集合的并集,并将结果保存到dest对应的集合中
15.sscan(name, cursor=0, match=None, count=None)
16.sscan_iter(name, match=None, count=None)
迭代器获取
示例程序
# coding:utf-8
import redis
rediscli = redis.Redis(host='127.0.0.1', port=6379, db=13)
print rediscli.sadd('sv1', 'x1')
print rediscli.scard('sv1')
print rediscli.sscan('sv1')
print rediscli.sadd('sv2', 'x1', 'x2', 'x3', 'x4')
print rediscli.sdiff('sv2', 'sv1')
print rediscli.sdiffstore('sv3', 'sv2', 'sv1')
print rediscli.sscan('sv3')
print rediscli.sadd('sv4', 'x4', 'x2', 'x8', 'x9')
print rediscli.sinter('sv4', 'sv2')
print rediscli.sismember('sv4', 'x8')
print rediscli.spop('sv4')
print rediscli.srandmember('sv2', 2)
print rediscli.sunion('sv2', 'sv4')
print rediscli.smove('sv1', 'sv5', 'x1')
print rediscli.sscan('sv1')
输出:
1
1
(0L, ['x1'])
4
set(['x2', 'x3', 'x4'])
3
(0L, ['x3', 'x2', 'x4'])
4
set(['x2', 'x4'])
True
x2
['x1', 'x4']
set(['x8', 'x9', 'x2', 'x3', 'x1', 'x4'])
True
(0L, [])