一:Redis 集合(Set)

Redis的Set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。

二:set常用操作

  1)sadd(name,values) name对应的集合中添加元素

  2)scard(name) 获取name对应的集合中元素个数

  3)sdiff(keys, *args)  在第一个name对应的集合中且不在其他name对应的集合的元素集合

  4)sdiffstore(dest, keys, *args) 获取第一个name对应的集合中且不在其他name对应的集合,再将其新加入到dest对应的集合中

  5)sinter(keys, *args) 获取多一个name对应集合的交集

  6)sinterstore(dest, keys, *args) 获取多一个name对应集合的并集,再讲其加入到dest对应的集合中

  7)sismember(name, value) 检查value是否是name对应的集合的成员

  8)smembers(name) 获取name对应的集合的所有成员

  9)smove(src, dst, value) 将某个成员从一个集合中移动到另外一个集合

  10)spop(name) 从集合的左侧(头部)移除一个成员,并将其返回

  11)srandmember(name, numbers) 从name对应的集合中随机获取 numbers 个元素

  12)srem(name, values) 在name对应的集合中删除某些值

  13)sunion(keys, *args)  获取多一个name对应的集合的并集

  14)sunionstore(dest,keys, *args) 获取多一个name对应的集合的并集,并将结果保存到dest对应的集合中

  15)sscan(name, cursor=0, match=None, count=None)

三:示例

[BEGIN] // ::
127.0.0.1:[]> select 选择会话窗口3
OK
127.0.0.1:[]> sadd n1 在集合中增加数据
(integer)
127.0.0.1:[]> sadd n1
(integer)
127.0.0.1:[]> sadd n1
(integer)
127.0.0.1:[]> sadd n1
(integer)
127.0.0.1:[]> SCARD n1 集合中有多少个元素
(integer)
127.0.0.1:[]> sadd n2
(integer)
127.0.0.1:[]> sadd n2
(integer)
127.0.0.1:[]> sadd n2
(integer)
127.0.0.1:[]> sadd n2
(integer)
127.0.0.1:[]> scard n2
(integer)
127.0.0.1:[]> sdiff n1 n2 两个集合的差集在n1中,不在n2中
) ""
) ""
127.0.0.1:[]> sdiff n3 n1 n2
(empty list or set)
127.0.0.1:[]> SDIFFSTORE n3 n1 n2 两个集合的差集在n1中,不在n2中并保存到n3中
(integer)
127.0.0.1:[]> SINTER n1 n2 交集在n1中,也在n2中
) ""
) ""
127.0.0.1:[]> SINTERSTORE n4 n1 n2 交集在n1中,也在n2中,并保存到n4中
(integer)
127.0.0.1:[]> SISMEMBER n1 判断元素在不在集合中
(integer)
127.0.0.1:[]> SMEMBERS n1 查看集合
) ""
) ""
) ""
) ""
127.0.0.1:[]> SMEMBERS n2
) ""
) ""
) ""
) ""
127.0.0.1:[]> SMEMBERS n3
) ""
) ""
127.0.0.1:[]> SMEMBERS n4
) ""
) ""
127.0.0.1:[]> smove n1 n2 把集合n1中元素1移动集合n2中
(integer)
127.0.0.1:[]> SMEMBERS n1
) ""
) ""
) ""
127.0.0.1:[]> SMEMBERS n2
) ""
) ""
) ""
) ""
) ""
127.0.0.1:[]> spop n1 从集合左边移出一个元素并还回
""
127.0.0.1:[]> SMEMBERS n1
) ""
) ""
127.0.0.1:[]> SRANDMEMBER n2 从集体中随即取2个
) ""
) ""
127.0.0.1:[]> SRANDMEMBER n2
) ""
) ""
127.0.0.1:[]> SRANDMEMBER n2
) ""
) ""
127.0.0.1:[]> SRANDMEMBER n2
) ""
) ""
127.0.0.1:[]> SREM n2 从集合中删除一个元素
(integer)
127.0.0.1:[]> SUNION n1 n2 两个集体并集
) ""
) ""
) ""
) ""
127.0.0.1:[]> SUNION n5 n1 n2 两个集体并集,并保存到n5中
) ""
) ""
) ""
) ""
127.0.0.1:[]> SMEMBERS n5
(empty list or set)
127.0.0.1:[]> SUNIONSTORE n5 n1 n2 两个集体并集,并保存到n5中
(integer)
127.0.0.1:[]> SSCAN n5 match
(error) ERR syntax error
127.0.0.1:[]> SSCAN n5 match
) ""
) ) "" [END] // ::

  

缓存数据库-redis数据类型和操作(set)的更多相关文章

  1. 缓存数据库-redis数据类型和操作(list)

    转: 狼来的日子里! 奋发博取 缓存数据库-redis数据类型和操作(list) 一:Redis 列表(List) Redis列表是简单的字符串列表,按照插入顺序排序.你可以添加一个元素导列表的头部( ...

  2. 缓存数据库-redis数据类型和操作(string)

    Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合) 一:String(字符串) string是redis ...

  3. 缓存数据库-redis数据类型和操作(sorted set)

    一:Redis 有序集合(sorted set) Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员. 不同的是每个元素都会关联一个double类型的分数.redis正是 ...

  4. 缓存数据库-redis数据类型和操作(hash)

    一:Redis 哈希(Hash) Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象. Redis 中每个 hash 可以存储 232 - 1 ...

  5. 缓存数据库redis

    什么是Redis? Redis是一个TCP服务器,支持请求/响应协议. 在Redis中,请求通过以下步骤完成: 客户端向服务器发送查询,并从套接字读取,通常以阻塞的方式,用于服务器响应. 服务器处理命 ...

  6. Redis数据类型及其操作

    redis数据类型即操作 1. 字符串 set 设置字符串 格式: set key value 例子: set name kainhuck get 获取字符串的值 格式: get key 例子: ge ...

  7. 缓存数据库-redis介绍

    一:Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的 ...

  8. Redis数据类型和操作

    <"Java技术员"成长手册>,包含框架.存储.搜索.优化.分布式等必备知识,都收集在GitHub JavaEgg ,N线互联网开发必备技能兵器谱,欢迎指导 Redis ...

  9. 三个缓存数据库Redis、Memcache、MongoDB

    >>Memcached Memcached的优点:Memcached可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS(取决于key.value的字节大小以及服务器硬件性能,日常环境 ...

随机推荐

  1. zookeeper和PHP zookeeper和kafka 扩展安装

    http://blog.csdn.net/fenglailea/article/details/52458737#t3   目录(?)[-] 安装zookeeper 1直接安装zookeeper无须编 ...

  2. git 利用hook 实现服务器自动更新代码

    如何利用git的hook实现提交代码后自动更新? 因为个人开发经常需要提交代码,每次都需要连接服务器去pull代码,重启服务器就显得十分繁琐,因此github提供了一个时间钩子,用户push代码后可以 ...

  3. 笔记 jquery 的一个bug解决方法积累

    本博客是自己在学习和工作途中的积累与总结,仅供自己参考,也欢迎大家转载,转载时请注明出处 当id或匹配条件中包含特殊字符时,浏览器控制台会报缺少")"的异常,解决办法目前有两个: ...

  4. 转:Launch Screen在iOS7/8中的实现

    目前项目中需要解决的问题是: 兼容iOS7和iOS8,之前的版本不需要支持了 实现兼容3.5.4.4.7和5.5寸屏幕,竖屏的Lauch Screen 创建所需的PNG图片 有关iPhone6/6+相 ...

  5. JVM加载一个类的过程

    类的加载过程 Java源代码被编译成class字节码,JVM把描述类数据的字节码.Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的java类型,这就是虚拟机 ...

  6. 动态规划:树形DP-选课(树形背包)

    学校开设了N(N<300)门的选修课程,每个学生可选课程的数量M是给定的.学生选修了这M门课并考核通过就能获得相应的学分.在选修课程中,有些课程可以直接选修,有些课程需要一定的基础知识,必须在选 ...

  7. CF869 C 组合

    先吐槽下,题面套的物语系列欸.. 由于距离为3,那么必定两种颜色间要填入第3种颜色,否则就是单独点的情况,那么两两之间可以单独考虑而不影响答案,枚举两种颜色之间边数,计算一边的组合和另一边的排列,最后 ...

  8. asp.net WebForm程序删除.designer.cs文件之后的故事

    1.介绍 正常情况下添加一个WebForm程序结构如下(命名为:myWebForm.aspx) 文件说明:.aspx文件:书写html代码部分,以及javascript,css等代码书写及引用 .as ...

  9. CentOs7 Python3安装Openssl以及解决ssl问题

    一.安装OpenssL 1.下载的压缩包放在根目录 wget http://www.openssl.org/source/openssl-1.0.2j.tar.gz 2.在文件夹下解压缩,得到open ...

  10. PHP编程效率的20个要点-[转]

    用 单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则 不会,注意:只有echo能这么做,它是一种可以把多个字符 串当作参数的“函数”(译注:PHP手 ...