Redis集合的常用操作指令

本文详细介绍Redis集合(Sets)的各种常用操作指令,包括添加、删除、查询元素,集合间运算如并集、交集、差集等,以及随机选择元素和迭代集合元素的方法。

Redis集合的常用操作指令

Sets常用操作指令

SADD

将指定的元素添加到集合。如果集合中存在该元素,则忽略。 如果集合不存在,会先创建一个集合然后在添加元素。

127.0.0.1:6379> SADD myset name age city
(integer) 3
127.0.0.1:6379> SADD myset name
(integer) 0

SMEMBERS

# 查看集合
127.0.0.1:6379> SMEMBERS myset
1) "name"
2) "city"
3) "age"

SCARD

# 统计集合中的元素个数
127.0.0.1:6379> SCARD myset
(integer) 3
# 集合不存在 则返回0
127.0.0.1:6379> SCARD mysetnotexist
(integer) 0

SDIFF

将第一个集合与后面的集合进行比较,取出第一个集合中不在后面的集合中存在的元素。

127.0.0.1:6379> SADD myset name age city
(integer) 3
127.0.0.1:6379> SADD compareset name city country
(integer) 3
127.0.0.1:6379> SDIFF myset compareset
1) "age"
# 没有差值,则返回空集合
127.0.0.1:6379> SADD compareset age
(integer) 1
127.0.0.1:6379> SDIFF myset compareset mysetnew
(empty list or set)

SDIFFSTORE

与SDIFF一样,也是返回集合中元素的差值,不同的这个方法不返回结果集合,而是将差值存储到目标集合,如果目标集合存在其他元素,会被完全替换。

127.0.0.1:6379> SADD seta a b c
(integer) 3
127.0.0.1:6379> SADD setb c d e 
(integer) 3
127.0.0.1:6379> sadd setc f
(integer) 1
# SDIFFSTORE 存储的目标结合 比较集合a和b
127.0.0.1:6379> SDIFFSTORE setc seta setb
(integer) 2
127.0.0.1:6379> SMEMBERS setc
1) "a"
2) "b"

SINTER

取集合之间的交集。

127.0.0.1:6379> SADD seta a b c
(integer) 3
127.0.0.1:6379> SADD setb c d e 
(integer) 3
127.0.0.1:6379> sadd setc f
(integer) 1
127.0.0.1:6379> SINTER seta setb
1) "c"

SINTERSTORE

与SINTER一样,也是返回集合中元素的交集,不同的这个方法不返回结果集合,而是将交集存储到目标集合,如果目标集合存在其他元素,会被完全替换。

127.0.0.1:6379> SADD seta a b c
(integer) 3
127.0.0.1:6379> SADD setb c d e 
(integer) 3
127.0.0.1:6379> sadd setc f
(integer) 1
127.0.0.1:6379> SINTERSTORE setc seta setb
(integer) 1
127.0.0.1:6379> SMEMBERS setc
1) "c"

SMEMBERS SISMEMBER

SMEMBERS 返回集合中的元素。

SISMEMBER 判断集合是是否存在元素。

# SMEMBERS 
127.0.0.1:6379> SADD seta a b c
(integer) 3
127.0.0.1:6379> SMEMBERS seta
1) "c"
2) "a"
3) "b"

# SISMEMBER 判断元素 存在返回1 不存在返回0
127.0.0.1:6379> SISMEMBER seta d
(integer) 0
127.0.0.1:6379> SISMEMBER seta a
(integer) 1

SMOVE

从原集合向目标集合移动元素。

#  SMOVE 移动元素
127.0.0.1:6379> SMOVE seta setb a
(integer) 1
# 移动元素后 目标集合多了一个元素
127.0.0.1:6379> SMEMBERS setb
1) "d"
2) "c"
3) "a"
4) "e"
# 移动元素后 原集合少了一个元素
127.0.0.1:6379> SMEMBERS seta
1) "c"
2) "b"

SPOP

移除指定位置的元素。

127.0.0.1:6379> SPOP setb 1
1) "d"
127.0.0.1:6379> SMEMBERS setb
1) "c"
2) "a"
3) "e"

SRANDMEMBER

随机返回元素,不修改源集合。

127.0.0.1:6379> SMEMBERS setb
1) "c"
2) "a"
3) "e"
127.0.0.1:6379> SRANDMEMBER setb 1
1) "a"
127.0.0.1:6379> SRANDMEMBER setb 1
1) "c"

SREM

删除指定元素,如果元素不存在或者集合为空,则返回0,成功则返回1。

127.0.0.1:6379> SMEMBERS setb
1) "c"
2) "a"
3) "e"
# SREM
127.0.0.1:6379> SREM set "c"
(integer) 0
127.0.0.1:6379> SREM setb c
(integer) 1

SUNION

返回集合的并集。

127.0.0.1:6379> sadd numaset 1 3
(integer) 2
127.0.0.1:6379> SADD numbset 2 3 4
(integer) 3
# SUNION 返回集合并集
127.0.0.1:6379> SUNION numaset numbset
1) "1"
2) "2"
3) "3"
4) "4"

SUNIONSTORE

返回集合并集并存到指定集合中。

127.0.0.1:6379> sadd numaset 1 3
(integer) 2
127.0.0.1:6379> SADD numbset 2 3 4
(integer) 3
127.0.0.1:6379> sadd numcset 6 7
(integer) 2
# SUNION 返回集合并集 导致指定集合并替换指定集合的元素
127.0.0.1:6379> SUNIONSTORE numcset numaset numbset
(integer) 4
127.0.0.1:6379> SMEMBERS numcset
1) "1"
2) "2"
3) "3"
4) "4"

SSCAN

该命令用于迭代集合键中的元素。一般Set里面的元素量不大时,使用SMEMBER就行,但是如果Set里面的元素较多,就不能再使用了,命令会阻塞住,所以这个时候就需要SSCAN了。

127.0.0.1:6379> SADD provset hunan hubei beijing
(integer) 3
#  SSCAN  0是表示查询游标,如果返回不是0,则表明迭代没有结束。
127.0.0.1:6379> SSCAN provset 0 match *b*
1) "0"
2) 1) "beijing"
   2) "hubei"

以上就是Redis中结合的是常用操作指令了,更多其他指令可以参考官网,Redis官网,谢谢阅读,希望对你有所帮助。

Redis 提供了丰富的命令集,适用于多种数据结构操作,主要包括字符串 (String)、哈希 (Hash)、列表 (List)、集合 (Set)、有序集合 (ZSet)、键 (Keys)、Geo(地理位置)、HyperLogLog(基数统计)、Bitmap(位图)、BitField(位操作)、Scan(迭代查询)等类型的操作。 ### 常用命令分类 #### 1. Key(键)操作 - `EXISTS key`:检查某个键是否存在。 - `DEL key [key ...]`:删除一个或多个键。 - `EXPIRE key seconds`:设置键的过期时间。 - `TTL key`:查看键剩余的生存时间。 - `RENAME key newkey`:修改键的名称。 - `TYPE key`:获取键对应的值类型。 #### 2. 字符串 (String) 操作 - `SET key value`:设置键的字符串值。 - `GET key`:获取键的值。 - `INCR key`:将键的值增加1。 - `DECR key`:将键的值减少1。 - `MSET key value [key value ...]`:设置多个键值对。 - `MGET key [key ...]`:获取所有给定键的值。 #### 3. 哈希 (Hash) 操作 - `HSET key field value`:设置哈希表中字段的值。 - `HGET key field`:获取哈希表中字段的值。 - `HGETALL key`:获取哈希表中所有字段和值。 - `HDEL key field [field ...]`:删除哈希表中的一个或多个字段。 #### 4. 列表 (List) 操作 - `LPUSH key value [value ...]`:将一个或多个值插入到列表头部。 - `RPUSH key value [value ...]`:将一个或多个值插入到列表尾部。 - `LPOP key`:移除并返回列表的第一个元素。 - `RPOP key`:移除并返回列表的最后一个元素。 - `LRANGE key start stop`:获取列表中指定范围的元素。 #### 5. 集合 (Set) 操作 - `SADD key member [member ...]`:向集合中添加一个或多个成员。 - `SMEMBERS key`:获取集合中的所有成员。 - `SISMEMBER key member`:判断成员是否是集合的成员。 - `SREM key member [member ...]`:移除集合中的一个或多个成员。 #### 6. 有序集合 (ZSet) 操作 - `ZADD key score member [score member ...]`:向有序集合中添加一个或多个成员。 - `ZRANGE key start stop [WITHSCORES]`:获取有序集合中指定范围的成员。 - `ZREM key member [member ...]`:移除有序集合中的一个或多个成员。 - `ZSCORE key member`:获取有序集合中成员的分数。 #### 7. 迭代查询 (Scan) 操作 - `SCAN cursor [MATCH pattern] [COUNT count]`:增量迭代键空间,逐步遍历数据库中符合特定模式的键。 #### 8. 其他常用命令 - `KEYS pattern`:查找所有符合给定模式的键(注意:在生产环境中不推荐使用此命令,因为其在键过多时效率较低)。 - `PING`:测试 Redis 服务器是否正常运行。 - `INFO`:获取 Redis 服务器的各种信息和统计。 ### 示例代码 ```python # 示例:使用 Redis 的 SET 和 GET 命令 import redis # 连接到 Redis 服务器 r = redis.Redis(host='localhost', port=6379, db=0) # 设置键值对 r.set('name', 'Alice') # 获取键的值 print(r.get('name')) # 输出: b'Alice' # 删除键 r.delete('name') # 检查键是否存在 print(r.exists('name')) # 输出: 0 ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值