python redis详解(六)SET集合

本文介绍了Redis中的SET集合,它是基于哈希表实现的无序字符串集合,提供了高效的添加、删除和查找操作。通过Python的redis库,可以方便地进行集合操作,包括添加元素、获取集合大小、交集、并集、差集等。文中还给出了相关命令及示例程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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, [])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值