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数据类型和操作相关推荐

  1. Redis(数据类型及操作指令、Java连接Redis)

    数据类型 1).五大数据类型 key+ ①string ②set ③list ④hash ⑤zset tips:只能存储字符串 2).String ①最基本类型 二进制安全意味着可以包含任何数据,如j ...

  2. redis:hash数据类型与操作

    Redis hash介绍 Redis hash是一个string类型的field和value的映射表.一个key可对应多个field,一个field对应一个value.将一个对象存储为hash类型,较 ...

  3. redis数据类型及操作

    (一).redis 的数据类型级操作: 1.[Strings 类型和操作] String 类型:一个key对于一个value,最简单的数据类型,二进制安全的:Redis的String可以包含任何数据, ...

  4. redis当中各种数据类型的操作

    1.redis当中对字符串string的操作 下表列出了常用的 redis 字符串命令 2.redis当中对hash列表的操作 Redis hash 是一个string类型的field和value的映 ...

  5. Redis二:redis-cli操作各种数据类型

    Redis二:redis-cli操作各种数据类型 1. redis-cli的登录与常用数据类型 2. 各种数据类型的操作 2.1 String(数值在这里也被视为字符串) 2.3 Hash(可以将一个 ...

  6. Redis五大基本类型三种特殊数据类型事务操作(悲观锁,乐观锁)

    Redis五大基本类型 Redis是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件.它支持多种类型的数据 结构,如字符串(strings),散列(hashes) ...

  7. Redis的数据类型以及每种数据类型的使用场景

    人就是很奇怪的动物,很简单的问题往往大家都容易忽略,当我们在使用分布式缓存Redis的时候,一个最简单的问题往往被人忽略,Redis的数据类型以及每种数据类型的使用场景是什么? 是不是觉得这个问题很基 ...

  8. redis数据类型_认识Redis与Redis的数据类型

    本文作为Redis的入门教程,旨在让大家对Redis有一个概念性和整体性的认识,并且可以快速上手,为深入Redis打下基础. 文章概要: 1. Redis的介绍 2. Redis与其他数据库的对比 3 ...

  9. redis 读取mysql数据类型_认识Redis与Redis的数据类型

    本文作为Redis的入门教程,旨在让大家对Redis有一个概念性和整体性的认识,并且可以快速上手,为深入Redis打下基础. 文章概要: 1. Redis的介绍 2. Redis与其他数据库的对比 3 ...

最新文章

  1. 国外AI教学网红网站
  2. MobX详解(二):ES7 装饰器 decorator
  3. python利用决策树进行特征选择
  4. python处理excel视频-从零基础开始用Python处理Excel数据 视频教程
  5. SQL案例_0_员工表数据集
  6. 排序算法一:冒泡排序,插入排序以及选择排序原理与MATLAB实现
  7. oracle查询慢怎么优化,Oracle查询优化-怎样建立索引优化下面的查询语句啊
  8. Oracle物化视图的创建及使用(一
  9. Pytorch中nn.Conv2d的用法
  10. CodeForces - 976C(结构体排序思维)
  11. Java反射----理解反射的源头Class类
  12. 周志华-机器学习.pdf 学习心得 附整理材料
  13. 校验码(循环冗余校验码)
  14. allgro pcb铜皮编辑_干货技巧-Allegro如何设置整体铜皮连接或设置单个管脚连接方式...
  15. 嵌入式linux软件数据参数保存的三种方式
  16. FFMPEG命令汇总
  17. 解决手机端中文输入法中keyup不灵便的方法
  18. Fiddler简单的使用教程(入门级)
  19. DataBinding 大坑总结(网上我暂时搜不到解决方法)
  20. 【JavaScript】this指向经典面试题(超详细)

热门文章

  1. 【干货】深度学习中的线性代数---简明教程
  2. PREEMPT_RT 3.18.136 实时时延评估
  3. 尝试一种新的生命状态
  4. 京东供应链金融科技推出“采购融资”服务 最高100万无抵押融资
  5. 芒果超媒:子公司与咪咕文化签署合作框架协议
  6. 疯狂的华为MateX2:375万人在线抢,转手一台赚2万
  7. 华为P50 Pro+高清渲染图曝光:居中单挖孔屏+后置徕卡五摄
  8. 去哪儿:腊月二十九的火车线路有余票 机票价格低于往年
  9. 掏出来的“耳屎经济”
  10. 乐视网1354项商标1.3亿元成交,接盘的是这家公司