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 ...
随机推荐
- 安卓备份 To Do(待办事项)的数据库
真正路径:/data/data/com.mediatek.todos/databases/todos.db 使用过链接的路径:/data/user/0/com.mediatek.todos/datab ...
- explain查看sql执行计划
http://www.cnblogs.com/wolf-sun/p/5291563.html 一该命令作用:该命令会向您展示查询是如何被执行的. 1.各个项的含义:https://blog.csdn. ...
- 获取Android设备的唯一识别码|设备号|序号|UUID
如何获取一个能唯一标识每台Android设备的序号? 这个问题有很多答案,但是他们中的大部分只在某些情况下有效. 根据测试: 所有的设备都可以返回一个 TelephonyManager.getDevi ...
- Azkaban学习笔记(一)
1. 任务调度概述 一个完整的数据分析系统通常都是由大量任务单元组成: shell脚本程序,java程序,mapreduce程序.hive脚本等 各任务单元之间存在时间先后及前后依赖关系 现成的开源调 ...
- 数据仓库原理<4>:联机分析处理(OLAP)
本文转载自:http://www.cnblogs.com/hbsygfz/p/4762085.html 1. 引言 本篇主要介绍数据仓库中的一项重要分析技术——联系分析处理(OLAP). 在第一篇笔者 ...
- linux基础命令---chattr
chattr 改变文件的属性,这个命令只有超级用户才能使用.这个指令适用于ext2.ext3.ext4.xfs.ubifs.reiserfs.jfs系统. 此命令的适用范围:RedHat.RHEL.U ...
- 使用 SSH 和 SFTP 协议
通过 SSH 和 SFTP 协议,我们能够访问其他设备,有效而且安全的传输文件等等. 几年前,我决定配置另外一台电脑,以便我能在工作时访问它来传输我所需要的文件.要做到这一点,最基本的一步是要求你的网 ...
- [目前最火的前端开发框架]React组件的应用分析
React组件 一.如何创建React组件 方式一:React.createClass 用 React.createClass 构建组件是 React 最传统.也是兼容最好的方法. const But ...
- wireshark捕获表达式之Berkeley Packet Filter (BPF) syntax
就网络抓包来说,绝大部分的情况下,我们都是对特定的ip/端口/协议进行捕获和分析,否则就会有大量的垃圾报文,使得分析和性能低下.大部分的抓包工具都采用BPF语法,具体可参考 http://biot.c ...
- Django 编写自定义的 404 / 500 报错界面
Django 编写自定义的 404 / 500 报错界面 1. 首先 setting.py 文件中的 debug 参数设置成 false ,不启用调试. DEBUG = False 2. 在 temp ...