Redis系列-存储篇set主要操作函数小结
最近,总是以“太忙“为借口,很久没有blog了,凡事贵在恒,希望我能够坚持不懈,毕竟在blog的时候,也能提升自己。废话不说了,直奔主题”set“
redis set 是string类型对象的无序集合,set不管存储多少对象,对存储对象的add,remove和test操作的时间复杂度是O(1)。set最多能包含 232 - 1 个member。
1、增加
语法:sadd key member[member...]
解释:对特定key的set增加一个或多个值,返回是增加元素的个数。注意:对同一个member多次add,set中只会保留一份。
- [root@xsf001 ~]# redis-cli
- redis 127.0.0.1:6379> sadd stu zhangsan lisi wangwu #新增
- (integer) 3
- redis 127.0.0.1:6379> smembers stu #得到set的所有member
- 1) "wangwu"
- 2) "lisi"
- 3) "zhangsan"
- redis 127.0.0.1:6379> sadd stu zhangsan #增加存在的member
- (integer) 0
- redis 127.0.0.1:6379> smembers stu
- 1) "wangwu"
- 2) "lisi"
- 3) "zhangsan"
- redis 127.0.0.1:6379> sadd tech wangwu liming joe
- (integer) 3
- redis 127.0.0.1:6379> sadd tech jim
- (integer) 1
- redis 127.0.0.1:6379> smembers tech
- 1) "jim"
- 2) "liming"
- 3) "wangwu"
- 4) "joe"
2、查询
a)smembers
语法:smembers key
解释:获取set中的所有member
- redis 127.0.0.1:6379> smembers stu
- 1) "wangwu"
- 2) "lisi"
- 3) "zhangsan"
- redis 127.0.0.1:6379> smembers tech
- 1) "jim"
- 2) "liming"
- 3) "wangwu"
- 4) "joe"
b)sismember
语法:sismember key member
解释:判断值是否是set的member。如果值是set的member返回1,否则,返回0
- redis 127.0.0.1:6379> sismember tech jim #jim 是set的member
- (integer) 1
- redis 127.0.0.1:6379> sismember tech jim001 #jim001 不是set的member
- (integer) 0
c)scard
语法:scard key
解释:返回set的member个数,如果set不存在,返回0
- redis 127.0.0.1:6379> scard tech # tech 存在
- (integer) 4
- redis 127.0.0.1:6379> scard stud #stud 不存在
- (integer) 0
- redis 127.0.0.1:6379> scard stu
- (integer) 4
d)srandmember
语法:srandmember key
解释:从set中返回一个随机member
- redis 127.0.0.1:6379> srandmember stu
- "zhangsan"
- redis 127.0.0.1:6379> srandmember stu
- "zhangsan"
- redis 127.0.0.1:6379> srandmember stu
- "wangwu"
- redis 127.0.0.1:6379> srandmember stu
- "zhangsan01"
3、删除
a)spop
语法:spop key
解释:移除并返回一个随机member
- redis 127.0.0.1:6379> smembers stu #pop前
- 1) "zhangsan01"
- 2) "wangwu"
- 3) "lisi"
- 4) "zhangsan"
- redis 127.0.0.1:6379> spop stu #移除一个随机member
- "lisi"
- redis 127.0.0.1:6379> smembers stu #pop后
- 1) "zhangsan01"<span style="white-space:pre"> </span>
- 2) "wangwu"
- 3) "zhangsan"
b)srem
语法:srem key member [member ...]
解释:移除一个或多个member
- redis 127.0.0.1:6379> smembers tech
- 1) "jim"
- 2) "liming"
- 3) "wangwu"
- 4) "joe"
- redis 127.0.0.1:6379> srem tech jim #移除jim
- (integer) 1
- redis 127.0.0.1:6379> smembers tech
- 1) "liming"
- 2) "wangwu"
- 3) "joe"
- redis 127.0.0.1:6379> srem tech liming joe #移除多个member
- (integer) 2
- redis 127.0.0.1:6379> smembers tech
- 1) "wangwu"
c)smove
语法:smove source destination member
解释:将source中的member移动到destination
- redis 127.0.0.1:6379> smembers tech #smove前
- 1) "wangwu"
- redis 127.0.0.1:6379> smembers stu
- 1) "zhangsan01"
- 2) "wangwu"
- 3) "zhangsan"
- redis 127.0.0.1:6379> smove stu tech zhangsan #将zhangsan 从stu移动到tech
- (integer) 1
- redis 127.0.0.1:6379> smembers stu #smove后
- 1) "zhangsan01"
- 2) "wangwu"
- redis 127.0.0.1:6379> smembers tech
- 1) "wangwu"
- 2) "zhangsan"
4、其他
a)并集
语法:sunion key[key...]
解释:多个set的并集
- redis 127.0.0.1:6379> smembers stu
- 1) "zhangsan01"
- 2) "wangwu"
- redis 127.0.0.1:6379> sunion stu
- 1) "zhangsan01"
- 2) "wangwu"
- redis 127.0.0.1:6379> smembers tech
- 1) "wangwu"
- 2) "zhangsan"
- redis 127.0.0.1:6379> sunion stu tech
- 1) "zhangsan01"
- 2) "wangwu"
- 3) "zhangsan"
b)把并集结果存储到set
语法:sunionstore destination key [key ...]
解释:求多个set并集,并把结果存储到destination
- redis 127.0.0.1:6379> sunionstore same stu tech #把stu tech并集结果存储在union
- (integer) 3
- redis 127.0.0.1:6379> smembers union
- 1) "zhangsan01"
- 2) "wangwu"
- 3) "zhangsan"
c)交集
语法:sinter key[key...]
解释:多个set的交集
- redis 127.0.0.1:6379> smembers stu
- 1) "zhangsan01"
- 2) "wangwu"
- redis 127.0.0.1:6379> smembers tech
- 1) "wangwu"
- 2) "zhangsan"
- redis 127.0.0.1:6379> sinter stu tech
- 1) "wangwu"
d)把交集结果存储到指定set
语法:sinterstore destination key [key ...]
解释:把多个set的交集结果存储到destination
- redis 127.0.0.1:6379> sinterstore inter stu tech
- (integer) 1
- redis 127.0.0.1:6379> smembers inter
- 1) "wangwu"
e) set中在其他set中不存在member
语法:sdiff key[key ...]
- redis 127.0.0.1:6379>
- redis 127.0.0.1:6379> smembers stu
- 1) "zhangsan01"
- 2) "wangwu"
- redis 127.0.0.1:6379> smembers tech
- 1) "wangwu"
- 2) "zhangsan"
- redis 127.0.0.1:6379> sdiff stu tech
- 1) "zhangsan01"
- redis 127.0.0.1:6379> sdiff tech stu
- 1) "zhangsan"
f)把set中在其他set中不存在的member存储到新的set
语法:sdiffstore key[key...]
- redis 127.0.0.1:6379> sdiffstore diff stu tech
- (integer) 1
- redis 127.0.0.1:6379> smembers diff
- 1) "zhangsan01"
主要参考:
http://redis.io/topics/data-types
Redis系列-存储篇set主要操作函数小结的更多相关文章
- Redis系列-存储篇string主要操作函数小结
通过上两篇的介绍,我们的redis服务器基本跑起来.db都具有最基本的CRUD功能,我们沿着这个脉络,开始学习redis丰富的数据结构之旅,当然先从最简单且常用的string开始. 1.新增 a)se ...
- Redis系列-存储篇hash主要操作函数小结
阳光透过玻璃,洒在身上,一杯暖茶在手,说不尽的安逸自得,让我有种想再写篇blog的冲动.上篇主要谈了string,这里谈谈hash吧!hash是一些列key value(field value)的映射 ...
- Redis系列-存储篇list主要操作函数小结
在总结list之前,先要弄明白几个跟list相关的概念: 列表:一个从左到右的队列,个人理解更类似于一个栈,常规模式下,先进列表的元素,后出. 表头元素:列表最左端第一个元素. 表尾元素:列表最右端的 ...
- Redis系列-存储篇list主要操作函数小结(转)
在总结list之前,先要弄明白几个跟list相关的概念: 列表:一个从左到右的队列,个人理解更类似于一个栈,常规模式下,先进列表的元素,后出. 表头元素:列表最左端第一个元素. 表尾元素:列表最右端的 ...
- Redis系列-存储篇sorted set主要操作命令
Redis系列-存储篇sorted set主要操作函数小结 redis支持有序集合,即sorted set.sorted set在set的基础上,增加了排序属性,是set的升级版.这里简要谈谈sort ...
- Redis系列-存储篇string主要操作命令
Redis系列-存储篇string主要操作命令 通过上两篇的介绍,我们的redis服务器基本跑起来.db都具有最基本的CRUD功能,我们沿着这个脉络,开始学习redis丰富的数据结构之旅,当然先从最简 ...
- Redis系列-存储篇list主要操作命令
Redis系列-存储篇list主要操作命令小结 在总结list之前,先要弄明白几个跟list相关的概念: 列表:一个从左到右的队列,个人理解更类似于一个栈,常规模式下,先进列表的元素,后出. 表头元素 ...
- Redis系列-存储篇sorted set主要操作函数小结
redis支持有序集合,即sorted set.sorted set在set的基础上,增加了排序属性,是set的升级版.这里简要谈谈sorted set的常用函数: 1)insert a) zadd ...
- Redis系列-存储hash主要操作命令
Redis系列-存储篇hash主要操作函数小结 hash是一些列key value(field value)的映射表.常常用其存储一些对象实例.相对于把一个对象的各个字段存储为string,存储为ha ...
随机推荐
- 构件工具Maven----坐标、依赖、仓库、生命周期的简单学习
这篇文章对Maven中几个比较重要的概念坐标.依赖.仓库.生命周期做一个简单的介绍. 1.关于Maven坐标 用来区别Maven世界中任何一个构件,Maven坐标的元素包括groupId.artifa ...
- 搭建LNMP环境
下载软件包 百度云地址下载地址:http://pan.baidu.com/s/1eSfWNoY 一共有17个包 [root@localhost lnmp]# ls /usr/local/src/lnm ...
- web前端学习(一) html+js实现文本框背景及只读属性修改
因为工作需求接触了html+javascript,对于从事嵌入式开发,一直接触c和汇编的我,感觉这种语言是一个的全新的领域,宽松的语法要求,等同于文本逻辑的输出,当然我并不认为它简单,错误检查的缺少让 ...
- junit4 javaee 5.0 jpa SSH 单元测试问题集锦
本篇文章基于已经实现了ssh集成的demo.项目.具体的ssh项目怎么配置,请参考本文最后 spring环境下的JUnit4测试 1,下载所需jar包: spring-test-3.2.0.RELEA ...
- Mvc4_ActionResult应用
通常我们在一个ASP.NET MVC项目中创建一个Controller的时候,Index()方法默认的返回类型都是ActionResult,通过查看UML图,ActionResult实际上是一个抽象类 ...
- MYSQL 编码方式 ------导入 .sql 文件 报编码错误
在做计量泵上位机时,利用MYSQL存储数据,建表hisruninfo(计量泵历史运行数据表). 表格式为utf8,查过数据库 格式 同样为utf8 导入该hisruninfo.sql文件时,并没有报错 ...
- xmpp4-总览
1注意点 创建的聊天室本地缓存,和服务器存储有时不同步,似乎聊过天就更稳定一点.
- hdu_3555 bomb
数位动态规划 数位动态规划是求解一个大区间[L, R]中间满足条件Q的所有数字的个数(或者和,或其他)的一种方法.它通过分析每一位上的数字,一般用 dp[len][digit][...] 来表 ...
- ing
#include <stdio.h> int main(){ int a,b; while(scanf("%d%d",&a,&b)!=EOF & ...
- easyui 中重复加载两次url
之前一直在使用easyui中,忽视了官网上的小细节,类似于datagrid.combobox 等组件在使用的时候,它的数据加载方式分为两种: 官网中: ①在html中,比如: <table id ...