Redis之无序集合类型命令
Redis 集合(Set)
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)
集合的性质: 唯一性,无序性,确定性
注: 在string和link的命令中,可以通过range 来访问string中的某几个字符或某几个元素
但,因为集合的无序性,无法通过下标或范围来访问部分元素。因此想看元素,要么随机先一个,要么全选
使用场景 : 抽奖,点赞,标签,互相关注,好友推荐
sadd : 添加一个或者多个元素到集合中,成功返回新添加到集合的元素数量,已存在的会被忽略,不是集合类型返回错误
127.0.0.1:6379> sadd yhq name age sex name
(integer) 3
127.0.0.1:6379> sadd yhq id
(integer) 1
smembers : 返回集合所有元素 (sinter 单个集合)
127.0.0.1:6379> smembers yhq
1) "id"
2) "age"
3) "sex"
4) "name"
127.0.0.1:6379> sinter yhq
1) "id"
2) "age"
3) "sex"
4) "name"
scard : 返回集合元素数量,不存在返回0
127.0.0.1:6379> scard yhq
(integer) 4
sdiff : 返回多个集合的差集,差集结果基于前面的集合
127.0.0.1:6379> smembers yhq
1) "id"
2) "age"
3) "sex"
4) "name"
127.0.0.1:6379> smembers qhh
1) "id"
2) "name"
127.0.0.1:6379> sdiff yhq qhh
1) "age"
2) "sex"
sdiffstore : 将差集(差集结果基于前面的集合)存到指定集合,如果存在覆盖,返回集合元素个数
127.0.0.1:6379> smembers yhq
1) "id"
2) "age"
3) "sex"
4) "name"
127.0.0.1:6379> smembers qhh
1) "id"
2) "name"
127.0.0.1:6379> sdiffstore diffs yhq qhh
(integer) 2
127.0.0.1:6379> smembers diffs
1) "age"
2) "sex"
sinter : 返回指定集合的交集,不存在集合视为空集合,当有空集合时,结果也为空集(key不存在视为空,一个空全是空)
127.0.0.1:6379> smembers yhq
1) "id"
2) "age"
3) "sex"
4) "name"
127.0.0.1:6379> smembers qhh
1) "id"
2) "name"
127.0.0.1:6379> smembers yhqqhh
1) "age"
2) "id"
3) "name"
127.0.0.1:6379> sinter yhq qhh yhqqhh
1) "id"
2) "name"
127.0.0.1:6379> sinter yhq qhh yhqqhh a
(empty list or set)
sinterstore : 将交集存到一个集合,存在覆盖,返回集合个数
127.0.0.1:6379> sinterstore inters yhq qhh yhqqhh
(integer) 2
127.0.0.1:6379> smembers inters
1) "id"
2) "name"
sismember : 判断是否是集合元素,存在返回1,不存在或者不是返回0
127.0.0.1:6379> sismember yhq name
(integer) 1
127.0.0.1:6379> sismember yhq name1
(integer) 0
spop : 随机移除一个或多个元素,返回移除的元素,集合不存在或者空集合返回nil(srandmember返回随机元素,不对集合修改)[count 3.2+版本可以指定移除数量,count大于集合数返回整个集合]
127.0.0.1:6379> smembers yhq
1) "id"
2) "sex"
3) "name"
127.0.0.1:6379> spop yhq
"name"
127.0.0.1:6379> smembers yhq
1) "id"
2) "sex"
srandmember : 返回集合的随机元素(2.6+版本开始增加count) 如果count为正数,且小于集合基数,返回一个包含count的数组,数组中元素各不相同,如果count大于集合基数,返回整个集合,count为负数,返回一个数组,数组可能重复,长度为count绝对值 只提供key,返回一个元素,集合为空,返回nil,提供count返回一个数组,集合为空数组
127.0.0.1:6379> smembers yhq
1) "age"
2) "id"
3) "name"
4) "sex"
127.0.0.1:6379> srandmember yhq 2
1) "id"
2) "age"
127.0.0.1:6379> srandmember yhq 2
1) "id"
2) "name"
127.0.0.1:6379> srandmember yhq -3
1) "age"
2) "sex"
3) "age"
smove : 将m元素从一个a集合移到另一个b集合,如果a集合不存在m,命令不执行,返回0。否则m从a移到b,当b中以包含m时,命令仅是从a中移除m,ab不是集合类型,返回错误
127.0.0.1:6379> smembers qhh
1) "id"
2) "name"
127.0.0.1:6379> smove yhq qhh age
(integer) 1
127.0.0.1:6379> smembers qhh
1) "age"
2) "id"
3) "name"
srem : 从集合移除一个或者多个元素,不存在元素忽略,不是集合类型返回错误,集合不存在返回0,>=2.4可以移除多个元素
127.0.0.1:6379> smembers qhh
1) "age"
2) "id"
3) "sex"
4) "name"
127.0.0.1:6379> srem qhh age id
(integer) 2
127.0.0.1:6379> smembers qhh
1) "sex"
2) "name"
sunion : 返回集合并集
127.0.0.1:6379> smembers yhq
1) "age"
2) "id"
3) "name"
4) "sex"
127.0.0.1:6379> smembers qhh
1) "sex"
2) "name"
127.0.0.1:6379> smembers yhqqhh
1) "age"
2) "id"
3) "name"
127.0.0.1:6379> sunion yhq qhh yhqqhh
1) "age"
2) "id"
3) "name"
4) "sex"
sunionstore : 将集合并集存储到指定集合中,如果存在覆盖
127.0.0.1:6379> sunionstore sst yhq qhh yhqqhh
(integer) 4
127.0.0.1:6379> smembers sst
1) "age"
2) "id"
3) "name"
4) "sex"
sscan :迭代集合元素(未完全理解)
127.0.0.1:6379> sscan yhq 0 match a*
1) "0"
2) 1) "age"
2) "add"
3) "apple"
Redis之无序集合类型命令的更多相关文章
- 第二百九十八节,python操作redis缓存-Set集合类型,可以理解为不能有重复元素的列表
python操作redis缓存-Set集合类型,可以理解为不能有重复元素的列表 sadd(name,values)name对应的集合中添加元素 #!/usr/bin/env python # -*- ...
- C#操作Redis Set 无序集合
/// <summary> /// redis 无序集合 /// </summary> public static void Redis_Set() { RedisClient ...
- redis之(八)redis的有序集合类型的命令
[一]增加元素 --->命令:ZADD key score member [score member] --->向有序集合放入一个分数为score的member元素 --->元素存在 ...
- Redis 常用命令学四:集合类型命令
1.增加和删除命令 127.0.0.1:6379> SADD st a (integer) 1 127.0.0.1:6379> SADD st r f g (integer) 3 127. ...
- Redis 常用命令学四:有序集合类型命令
1.增加元素,修改存在元素的分数 127.0.0.1:6379> zadd score 99 a 88 b 66 c (integer) 3 127.0.0.1:6379> ZADD sc ...
- StackExchange.Redis 之 Set集合 类型示例
话不多说直接上代码: // set添加单个元素 stopwatch.Start(); "); stopwatch.Stop(); Console.WriteLine("set添加单 ...
- Redis之哈希类型命令
Hash(哈希) Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象. Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿 ...
- redis之有序集合类型(Zset)——排行榜的实现
当数据库对排序支持的不是很好,可以利用redis有序集合排序 原文链接:http://blog.csdn.net/loophome/article/details/50373202
- Redis的List链表类型命令
List是一个链表结构,主要功能是push.pop.获取一个范围的所有值等等,操作中key理解为链表的名字.list类型其实就是一个每个子元素都是string类型的双向链表.我们可以通过push.po ...
随机推荐
- JSON—基础
什么是JSON?(JavaScript Object Notation) 1:一种轻量级的数据交换格式 2:采用独立于语言的文本格式 3:常用于客户端和服务器之间传递数据(以对象的形式传递) JSON ...
- strus2 框架介绍
strus2 执行过程: ActionMapper会去找ActionMapping查找URL请求的映射 1:ActionMapping这个类用name+namespace确定请求的映射, (但是仍然不 ...
- NFS Iptables放行服务端口
启动NFS会开启如下端口:1)portmapper 端口:111 udp/tcp:2)nfs/nfs_acl 端口:2049 udp/tcp:3)mountd 端口:"32768--6553 ...
- 20145332 MAL_简单后门
20145332 MAL_简单后门 用NC获取远程主机的shell 2.1.1 Windows获得Linux的权限 首先要在Windows主机下安装ncat.exe,安装完成后需要配置环境变量path ...
- linux下获取本机的获取内网和外网地址
1.获取内网地址(私有地址) ifconfig -a 2.获取外网地址(公网地址) curl members.3322.org/dyndns/getip
- FJUT Home_W的gcd(乱搞)题解
题意: 给出一个序列a1,a2,a3,……an. HOME_W想在其中挖掘二元组,其中二元组的挖掘方法如下. 对于任意整数 l,r ,可得到一个二元组(l,gcd(al,al+1,……,ar)). H ...
- POJ 2975 Nim(博弈)题解
题意:已知异或和为0为必败态,异或和不为0为必胜态,问你有几种方法把开局从当前状态转为必败态. 思路:也就是说,我们要选一堆石头,然后从这堆石头拿走一些使剩下的石碓异或和为0.那么只要剩下石堆的异或和 ...
- HDU 1823 Luck and Love (二维线段树&区间最值)题解
思路: 树套树,先维护x树,再维护y树,多练练应该就能懂了 代码: #include<cstdio> #include<cmath> #include<cstring&g ...
- spring注解注入properties配置文件
早期,如果需要通过spring读取properties文件中的配置信息,都需要在XML文件中配置文件读取方式. 基于XML的读取方式: <bean class="org.springf ...
- springmvc基础知识及注解
SpringMVC 1.概念 Spring的MVC框架是一个基于DispatcherServlet的MVC框架,主要由DispatcherServlet.处理器映射.处理器.视图解析器.视图组成.每一 ...