redis:set数据类型和操作
redis set 是string类型对象的无序集合,set不管存储多少对象,对存储对象的add,remove和test操作的时间复杂度是O(1)。set最多能包含 232 - 1 个member。
1、增加
语法:sadd key member[member...]
解释:对特定key的set增加一个或多个值,返回是增加元素的个数。注意:对同一个member多次add,set中只会保留一份。
1. [root@xsf001 ~]# redis-cli
2. redis 127.0.0.1:6379> sadd stu zhangsan lisi wangwu #新增
3. (integer) 3
4. redis 127.0.0.1:6379> smembers stu #得到set的所有member
5. 1) "wangwu"
6. 2) "lisi"
7. 3) "zhangsan"
8. redis 127.0.0.1:6379> sadd stu zhangsan #增加存在的member
9. (integer) 0
10.redis 127.0.0.1:6379> smembers stu
11. 1) "wangwu"
12.2) "lisi"
13. 3) "zhangsan"
14.redis 127.0.0.1:6379> sadd tech wangwu liming joe
15. (integer) 3
16.redis 127.0.0.1:6379> sadd tech jim
17. (integer) 1
18.redis 127.0.0.1:6379> smembers tech
19. 1) "jim"
20.2) "liming"
21. 3) "wangwu"
22.4) "joe"
2、查询
a)smembers
语法:smembers key
解释:获取set中的所有member
1. redis 127.0.0.1:6379> smembers stu
2. 1) "wangwu"
3. 2) "lisi"
4. 3) "zhangsan"
5. redis 127.0.0.1:6379> smembers tech
6. 1) "jim"
7. 2) "liming"
8. 3) "wangwu"
9. 4) "joe"
b)sismember
语法:sismember key member
解释:判断值是否是set的member。如果值是set的member返回1,否则,返回0
1. redis 127.0.0.1:6379> sismember tech jim #jim 是set的member
2. (integer) 1
3. redis 127.0.0.1:6379> sismember tech jim001 #jim001 不是set的member
4. (integer) 0
c)scard
语法:scard key
解释:返回set的member个数,如果set不存在,返回0
1. redis 127.0.0.1:6379> scard tech # tech 存在
2. (integer) 4
3. redis 127.0.0.1:6379> scard stud #stud 不存在
4. (integer) 0
5. redis 127.0.0.1:6379> scard stu
6. (integer) 4
d)srandmember
语法:srandmember key
解释:从set中返回一个随机member
1. redis 127.0.0.1:6379> srandmember stu
2. "zhangsan"
3. redis 127.0.0.1:6379> srandmember stu
4. "zhangsan"
5. redis 127.0.0.1:6379> srandmember stu
6. "wangwu"
7. redis 127.0.0.1:6379> srandmember stu
8. "zhangsan01"
3、删除
a)spop
语法:spop key
解释:移除并返回一个随机member
1. redis 127.0.0.1:6379> smembers stu #pop前
2. 1) "zhangsan01"
3. 2) "wangwu"
4. 3) "lisi"
5. 4) "zhangsan"
6. redis 127.0.0.1:6379> spop stu #移除一个随机member
7. "lisi"
8. redis 127.0.0.1:6379> smembers stu #pop后
9. 1) "zhangsan01"<span style="white-space:pre"> </span>
10.2) "wangwu"
11. 3) "zhangsan"
b)srem
语法:srem key member [member ...]
解释:移除一个或多个member
1. redis 127.0.0.1:6379> smembers tech
2. 1) "jim"
3. 2) "liming"
4. 3) "wangwu"
5. 4) "joe"
6. redis 127.0.0.1:6379> srem tech jim #移除jim
7. (integer) 1
8. redis 127.0.0.1:6379> smembers tech
9. 1) "liming"
10.2) "wangwu"
11. 3) "joe"
12.redis 127.0.0.1:6379> srem tech liming joe #移除多个member
13. (integer) 2
14.redis 127.0.0.1:6379> smembers tech
15. 1) "wangwu"
c)smove
语法:smove source destination member
解释:将source中的member移动到destination
1. redis 127.0.0.1:6379> smembers tech #smove前
2. 1) "wangwu"
3. redis 127.0.0.1:6379> smembers stu
4. 1) "zhangsan01"
5. 2) "wangwu"
6. 3) "zhangsan"
7. redis 127.0.0.1:6379> smove stu tech zhangsan #将zhangsan 从stu移动到tech
8. (integer) 1
9. redis 127.0.0.1:6379> smembers stu #smove后
10.1) "zhangsan01"
11. 2) "wangwu"
12.redis 127.0.0.1:6379> smembers tech
13. 1) "wangwu"
14.2) "zhangsan"
4、其他
a)并集
语法:sunion key[key...]
解释:多个set的并集
1. redis 127.0.0.1:6379> smembers stu
2. 1) "zhangsan01"
3. 2) "wangwu"
4. redis 127.0.0.1:6379> sunion stu
5. 1) "zhangsan01"
6. 2) "wangwu"
7. redis 127.0.0.1:6379> smembers tech
8. 1) "wangwu"
9. 2) "zhangsan"
10.redis 127.0.0.1:6379> sunion stu tech
11. 1) "zhangsan01"
12.2) "wangwu"
13. 3) "zhangsan"
b)把并集结果存储到set
语法:sunionstore destination key [key ...]
解释:求多个set并集,并把结果存储到destination
1. redis 127.0.0.1:6379> sunionstore same stu tech #把stu tech并集结果存储在union
2. (integer) 3
3. redis 127.0.0.1:6379> smembers union
4. 1) "zhangsan01"
5. 2) "wangwu"
6. 3) "zhangsan"
c)交集
语法:sinter key[key...]
解释:多个set的交集
1. redis 127.0.0.1:6379> smembers stu
2. 1) "zhangsan01"
3. 2) "wangwu"
4. redis 127.0.0.1:6379> smembers tech
5. 1) "wangwu"
6. 2) "zhangsan"
7. redis 127.0.0.1:6379> sinter stu tech
8. 1) "wangwu"
d)把交集结果存储到指定set
语法:sinterstore destination key [key ...]
解释:把多个set的交集结果存储到destination
1. redis 127.0.0.1:6379> sinterstore inter stu tech
2. (integer) 1
3. redis 127.0.0.1:6379> smembers inter
4. 1) "wangwu"
e) set中在其他set中不存在member
语法:sdiff key[key ...]
1. redis 127.0.0.1:6379>
2. redis 127.0.0.1:6379> smembers stu
3. 1) "zhangsan01"
4. 2) "wangwu"
5. redis 127.0.0.1:6379> smembers tech
6. 1) "wangwu"
7. 2) "zhangsan"
8. redis 127.0.0.1:6379> sdiff stu tech
9. 1) "zhangsan01"
10.redis 127.0.0.1:6379> sdiff tech stu
11. 1) "zhangsan"
f)把set中在其他set中不存在的member存储到新的set
语法:sdiffstore key[key...]
1. redis 127.0.0.1:6379> sdiffstore diff stu tech
2. (integer) 1
3. redis 127.0.0.1:6379> smembers diff
1) "zhangsan01"
redis:set数据类型和操作相关推荐
- Redis(数据类型及操作指令、Java连接Redis)
数据类型 1).五大数据类型 key+ ①string ②set ③list ④hash ⑤zset tips:只能存储字符串 2).String ①最基本类型 二进制安全意味着可以包含任何数据,如j ...
- redis:hash数据类型与操作
Redis hash介绍 Redis hash是一个string类型的field和value的映射表.一个key可对应多个field,一个field对应一个value.将一个对象存储为hash类型,较 ...
- redis数据类型及操作
(一).redis 的数据类型级操作: 1.[Strings 类型和操作] String 类型:一个key对于一个value,最简单的数据类型,二进制安全的:Redis的String可以包含任何数据, ...
- redis当中各种数据类型的操作
1.redis当中对字符串string的操作 下表列出了常用的 redis 字符串命令 2.redis当中对hash列表的操作 Redis hash 是一个string类型的field和value的映 ...
- Redis二:redis-cli操作各种数据类型
Redis二:redis-cli操作各种数据类型 1. redis-cli的登录与常用数据类型 2. 各种数据类型的操作 2.1 String(数值在这里也被视为字符串) 2.3 Hash(可以将一个 ...
- Redis五大基本类型三种特殊数据类型事务操作(悲观锁,乐观锁)
Redis五大基本类型 Redis是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件.它支持多种类型的数据 结构,如字符串(strings),散列(hashes) ...
- Redis的数据类型以及每种数据类型的使用场景
人就是很奇怪的动物,很简单的问题往往大家都容易忽略,当我们在使用分布式缓存Redis的时候,一个最简单的问题往往被人忽略,Redis的数据类型以及每种数据类型的使用场景是什么? 是不是觉得这个问题很基 ...
- redis数据类型_认识Redis与Redis的数据类型
本文作为Redis的入门教程,旨在让大家对Redis有一个概念性和整体性的认识,并且可以快速上手,为深入Redis打下基础. 文章概要: 1. Redis的介绍 2. Redis与其他数据库的对比 3 ...
- redis 读取mysql数据类型_认识Redis与Redis的数据类型
本文作为Redis的入门教程,旨在让大家对Redis有一个概念性和整体性的认识,并且可以快速上手,为深入Redis打下基础. 文章概要: 1. Redis的介绍 2. Redis与其他数据库的对比 3 ...
最新文章
- 国外AI教学网红网站
- MobX详解(二):ES7 装饰器 decorator
- python利用决策树进行特征选择
- python处理excel视频-从零基础开始用Python处理Excel数据 视频教程
- SQL案例_0_员工表数据集
- 排序算法一:冒泡排序,插入排序以及选择排序原理与MATLAB实现
- oracle查询慢怎么优化,Oracle查询优化-怎样建立索引优化下面的查询语句啊
- Oracle物化视图的创建及使用(一
- Pytorch中nn.Conv2d的用法
- CodeForces - 976C(结构体排序思维)
- Java反射----理解反射的源头Class类
- 周志华-机器学习.pdf 学习心得 附整理材料
- 校验码(循环冗余校验码)
- allgro pcb铜皮编辑_干货技巧-Allegro如何设置整体铜皮连接或设置单个管脚连接方式...
- 嵌入式linux软件数据参数保存的三种方式
- FFMPEG命令汇总
- 解决手机端中文输入法中keyup不灵便的方法
- Fiddler简单的使用教程(入门级)
- DataBinding 大坑总结(网上我暂时搜不到解决方法)
- 【JavaScript】this指向经典面试题(超详细)
热门文章
- 【干货】深度学习中的线性代数---简明教程
- PREEMPT_RT 3.18.136 实时时延评估
- 尝试一种新的生命状态
- 京东供应链金融科技推出“采购融资”服务 最高100万无抵押融资
- 芒果超媒:子公司与咪咕文化签署合作框架协议
- 疯狂的华为MateX2:375万人在线抢,转手一台赚2万
- 华为P50 Pro+高清渲染图曝光:居中单挖孔屏+后置徕卡五摄
- 去哪儿:腊月二十九的火车线路有余票 机票价格低于往年
- 掏出来的“耳屎经济”
- 乐视网1354项商标1.3亿元成交,接盘的是这家公司