redis 集合操作
SADD : 将元素添加到集合
1 | 127.0.0.1:6379> sadd list element [element ...] |
命令返回成功添加的元素数量作为返回值
1 2 | 127.0.0.1:6379> sadd databases "redis" (integer) 1 |
忽略已存在的元素,因为集合不存储相同的元素
1 2 | 127.0.0.1:6379> sadd databases "redis" (integer) 0 |
如果有新元素与已存在的旧元素,忽略已存在的元素
1 2 | 127.0.0.1:6379> sadd databases "redis" "mysql" (integer) 1 |
srem 从集合里移除元素
1 | 127.0.0.1:6379> SREM set element [element ...] |
移除元素操作
1 2 | 127.0.0.1:6379> SREM databases "redis" (integer) 1 |
如果给定元素不存在于集合里,那么srem命令会忽略不存在元素,只移除存在的元素
1 2 | 127.0.0.1:6379> srem databases "memcached" (integer) 0 |
smove :将一个元素熊一个集合移动到另一个集合
1 | 127.0.0.1:6379> SMOVE source target element |
使用smove命令将存在于databases集合的redis元素以及mongodb元素移动到nodes集合里
1 2 3 4 5 6 | 127.0.0.1:6379> sadd databases "redis" "mongodb" (integer) 2 127.0.0.1:6379> SMOVE databases nodesql "redis" (integer) 1 127.0.0.1:6379> SMOVE databases nodesql "mongodb" (integer) 1 |
忽略不存在的元素,如果用户想要移动的元素并不存在与原集合,那么smove将放弃执行移动操作,返回0表示失败
1 2 3 4 5 6 7 8 | 127.0.0.1:6379> sadd tr "app" "lpp" "cpp" (integer) 3 127.0.0.1:6379> sadd tk "aipp" "lipp" "clpp" (integer) 3 127.0.0.1:6379> SMOVE tr tk "apple" 不存在 (integer) 0 127.0.0.1:6379> SMOVE tr tk "app" (integer) 1 |
smembers :获取集合包含的所以元素
1 | SMEMBERS set |
获取集合tk里所有元素
1 2 3 4 5 | 127.0.0.1:6379> SMEMBERS tk 1) "app" 2) "aipp" 3) "clpp" 4) "lipp" |
元素的无序排列:因为redis集合以无序的方式存储,并且以smembers命令在获取元素时也不会对元素进行任何排序,所以根据元素添加顺序不同,两个包含相同元素的集合在执行smembers命令时结果也会有所不同
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 127.0.0.1:6379> sadd redis-1 "apple" "banana" "cherry" "hg" (integer) 4 127.0.0.1:6379> sadd redis-2 "hg" "banana" "apple" "cherry" (integer) 4 127.0.0.1:6379> SMEMBERS redis-1 1) "hg" 2) "cherry" 3) "apple" 4) "banana" 127.0.0.1:6379> SMEMBERS redis-2 1) "cherry" 2) "hg" 3) "apple" 4) "banana" |
scard:获取集合包含元素数量
1 | 127.0.0.1:6379> SCARD set |
查看redis-1 包含元素数量
1 2 | 127.0.0.1:6379> SCARD redis-1 (integer) 4 |
sismember:检查给定的元素是否存在于集合里
1 | 127.0.0.1:6379> SISMEMBER set element |
查看测试
1 2 3 4 5 6 7 8 9 10 11 12 | 127.0.0.1:6379> SMEMBERS databases 1) "Neo4j" 2) "mysql" 3) "redis" 4) "mongodb" 5) "Postgresql" 127.0.0.1:6379> SISMEMBER databases "redis" (integer) 1 127.0.0.1:6379> SISMEMBER databases "mongodb" (integer) 1 127.0.0.1:6379> SISMEMBER databases "mysql" (integer) 1 |
检查不存在的元素
1 2 | 127.0.0.1:6379> SISMEMBER databases "oracle" (integer) 0 |
srandmember:随机获取集合里元素,命令不会移除集合里元素
1 2 3 4 5 6 7 8 | 127.0.0.1:6379> SRANDMEMBER databases "mongodb" 127.0.0.1:6379> SRANDMEMBER databases "redis" 127.0.0.1:6379> SRANDMEMBER databases "redis" 127.0.0.1:6379> SRANDMEMBER databases "redis" |
随机获取指定数量的元素
1 2 3 4 5 6 7 | 127.0.0.1:6379> SRANDMEMBER databases 2 1) "Neo4j" 2) "mongodb" 127.0.0.1:6379> SRANDMEMBER databases 3 1) "redis" 2) "mysql" 3) "Neo4j" |
spop 随机从集合移除指定数量元素默认一个元素
1 | 127.0.0.1:6379> spop key [count] |
随机移除元素操作
1 2 3 4 5 6 7 | 127.0.0.1:6379> spop databases "mysql" 127.0.0.1:6379> SMEMBERS databases 1) "redis" 2) "Neo4j" 3) "Postgresql" 4) "mongodb" |
sinter sinterstore:对集合进行交集计算
1 | 127.0.0.1:6379> sinter set [ set set ] [key ...] |
创建两个元素,查看交集
1 2 3 4 5 6 7 | 127.0.0.1:6379> sadd c1 "a" "b" "c" "d" (integer) 4 127.0.0.1:6379> sadd c2 "c" "d" "e" "f" (integer) 4 127.0.0.1:6379> SINTER c1 c2 1) "d" 2) "c" |
sinterstore 命令可以把给定的集合的交集计算结果存储到指定的键里
1 | 127.0.0.1:6379> SINTERSTORE destination_key set [ set ...] |
将c1与c2的交集写入c3里
1 2 3 4 5 | 127.0.0.1:6379> SINTERSTORE c3 c1 c2 (integer) 2 127.0.0.1:6379> SMEMBERS c3 1) "d" 2) "c" |
sunion 、sunionstore 集合并执行并集运算
1 | 127.0.0.1:6379> SUNION set [ set ...] [key |
对c1与c2进行并集运算
1 2 3 4 5 6 7 | 127.0.0.1:6379> SUNION c1 c2 1) "d" 2) "f" 3) "c" 4) "e" 5) "b" 6) "a" |
sunionstore 并集结果存入c4里
1 2 3 4 5 6 7 8 9 | 127.0.0.1:6379> SUNIONSTORE c4 c1 c2 (integer) 6 127.0.0.1:6379> SMEMBERS c4 1) "d" 2) "f" 3) "c" 4) "e" 5) "b" 6) "a" |
sdiff sdiffstore 对集合进行差集运算
1 | 127.0.0.1:6379> SDIFF set [ set ...] |
对c1与c2 进行差集运算
1 2 3 | 127.0.0.1:6379> SDIFF c1 c2 1) "b" 2) "a" |
sdiffstore 把c1与c2的差集运算的结果写进c5里
1 2 3 4 5 | 127.0.0.1:6379> SDIFFSTORE c5 c1 c2 (integer) 2 127.0.0.1:6379> SMEMBERS c5 1) "b" 2) "a" |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏