set集合(无序)

set是一个无序的不重复元素的集合


sadd

往集合内部添加元素

127.0.0.1:6379> sadd set1 a b c d
(integer) 4
127.0.0.1:6379> smembers set1
1) "d"
2) "a"
3) "b"
4) "c"
127.0.0.1:6379>

如果指定的key不存在会创建


srem

移除元素

127.0.0.1:6379> srem set1 c
(integer) 1
127.0.0.1:6379> smembers set1
1) "d"
2) "a"
3) "b"
127.0.0.1:6379>

如果要移除的元素不存在,则返回0

可以同时移出多个

spop

随机弹出一个元素

127.0.0.1:6379> spop set1
"d"
127.0.0.1:6379> smembers set1
1) "a"
2) "b"
127.0.0.1:6379>

因为set是无序的,如果要修改某个元素的值,直接将它删除在添加一个新的即可,修改真正的意义是替换,可是

set没有位置的概念(无序),替换就成了毫无意义的事情

scard

scard key

返回set中的元素的个数

如果查询一个不存在的key,返回0

smembers

smembers key

返回集合中所有的元素

sismember

sismember key value

查询value是否存在于key,存在返回1,否则返回0

srandmember

srandmember key [count]

随机返回count个集合中元素,注意count不能大于集合内部元素数

127.0.0.1:6379> srandmember set2
"3"
127.0.0.1:6379> srandmember set2 3
1) "96"
2) "2"
3) "5"

交集

sinter

sinter key1 key2 ....

返回key1key2或更多key中的交集(相同元素)

127.0.0.1:6379> sadd set1 1 2 3 45 6
(integer) 5
127.0.0.1:6379> sadd set2 8 5 2 96 3
(integer) 5
127.0.0.1:6379> sinter set1 set2
1) "2"
2) "3"

sinterstore

sinterstore newkey key1 key2 ...

key1key2或更多key的交集合并到新的集合newkey

127.0.0.1:6379> sinterstore set3 set1 set2
(integer) 2
127.0.0.1:6379> smembers set3
1) "2"
2) "3"

并集

sunion

sunion key1 key2 ...

将所有的key的元素合并返回,重复的值将只保留一个

127.0.0.1:6379> sunion set1 set2
1) "45"
2) "a"
3) "b"
4) "2"
5) "5"
6) "1"
7) "3"
8) "96"
9) "8"
10) "6"

sunionstore

sunionstore newkey key1 key2....

sinterstore类型,将并集移到newkey

差集

sdiff

sdiff key1 key2 ...

返回所有key的差集

sdiffstore

sdiffstore newkey key1 key2 ...

将所有key的差集移入newkey

移动

smove

smove key1 key2 value

valuekey1中移动到key2

Redis中set集合(无序)操作命令的更多相关文章

  1. [日常] Redis中set集合的使用思考

    公司部门同事有个需求,就是需要把当前另一个部门a中存储的数据全部导出来,自己当前业务b的数据全部导出来,两个要取一下差集,把a中存在,b中不存在的记下来,要去调用某接口把对应的文件删除.这个我感觉可以 ...

  2. 面试官:Redis中有序集合的内部实现方式是什么?

    面试官:Redis中基本的数据类型有哪些? 我:Redis的基本数据类型有:字符串(string).哈希(hash).列表(list).集合(set).有序集合(zset). 面试官:有序集合的内部实 ...

  3. Redis系列之key操作命令与Redis中的事务详解(六)

    序言 本篇主要目的有二: 1.展示所有数据类型中key的所有操作命令,以供大家学习,查阅,更深入的挖掘redis潜力. 2.掌握redis中的事务,让你的数据完整性一致性拥有更优的保障. redis命 ...

  4. 面试官:Redis中集合数据类型的内部实现方式是什么?

    虽然已经是阳春三月,但骑着共享单车骑了这么远,还有有点冷的.我搓了搓的被冻的麻木的手,对着前台的小姐姐说:"您好,我是来面试的."小姐姐问:"您好,您叫什么名字?&quo ...

  5. Redis 中的数据类型及基本操作

    Redis 内置的数据类型有 5种:字符串String.哈希Hash.列表List.集合Set.有序集合ZSet 字符串类型 String 是 Redis 中最基本的类型,一个 key 对应着一个 v ...

  6. java中避免集合死链调用

    目录 1. 前言 2. 场景 3. 环境 3.1 开发环境准备 3.2 数据准备 3.2.1 Mysql数据库表及数据 3.2.2 redis库数据 4. 解决方式 5.完整代码 5.1Model 5 ...

  7. redis中各种数据类型对应的jedis操作命令

    redis中各种数据类型对应的jedis操作命令 一.常用数据类型简介: redis常用五种数据类型:string,hash,list,set,zset(sorted set). 1.String类型 ...

  8. 5、Redis中对Set类型的操作命令

    写在前面的话:读书破万卷,编码如有神 -------------------------------------------------------------------- ------------ ...

  9. Redis中7种集合类型应用场景

    StringsStrings 数据结构是简单的key-value类型,value其实不仅是String,也可以是数字.使用Strings类型,你可以完全实现目前 Memcached 的功能,并且效率更 ...

随机推荐

  1. openstack nova 手动修改虚拟机状态

    source admin-openrc.sh nova list nova reset-state <id> --active

  2. linux 解压与压缩

    转http://www.cnblogs.com/eoiioe/archive/2008/09/20/1294681.html .tar 解包:tar xvf FileName.tar打包:tar cv ...

  3. DAO层,Service层,Controller层、View层、entity层

    1.DAO(mapper)层:DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DAO的接口,然后在Spring的配置文件中定义此接口的实现类,然后就 ...

  4. el-table表头v-for循环遇到的问题

    这两天在项目中遇到了el-table表头需要动态变化,也就是点击不同的标签显示对应的表格,主要表头都不一样,那么表格也就是动态的,表头也需要循环 一开始以为很简单 <el-table       ...

  5. Codeforces Round #669 (Div. 2)/Codeforces1407 ABCD

    A. Ahahahahahahahaha 通过作者半个小时的观察:全零和全一必定有一个是符合要求的答案,因为0的个数和1的个数至少有一个大于等于\(\frac{n}{2}\). B. Big Vova ...

  6. Agumaster添加股票日交易爬虫画面

  7. 如何解决SpringBoot工程中的错误:java.sql.SQLNonTransientConnectionException: CLIENT_PLUGIN_AUTH is required

    出错原因:MySQL依赖及MySQL驱动包高于在使用的MySQL数据库版本. 比如,我本地数据库版本是:Server version: 5.2.3-falcon-alpha-community-nt ...

  8. 深入理解Java中的装箱与拆箱

    一.Java数据类型 1.在说装箱与拆箱之前,先说一下Java的基本数据类型,Java从数据类型上可以划分为值类型与引用类型,值类型是四类八种,分别是: 整数型:byte̵,short̵,int̵,l ...

  9. Java审计之SQL注入篇

    Java审计之SQL注入篇 0x00 前言 本篇文章作为Java Web 审计的一个入门文,也是我的第一篇审计文,后面打算更新一个小系列,来记录一下我的审计学习的成长. 0x01 JDBC 注入分析 ...

  10. docker导出导入镜像docker save和docker load的用法

    1.百度搜的第一步是先将容器提交为镜像,然后用你提交的镜像去做上面的备份操作,提交为镜像后会新增一个镜像,但是感觉没有必要,直接做上面的save操作也是可以用的 百度的:docker commit 容 ...