Set是集合,它是string类型的无序集合。set是通过hash table实现的,添加、删除和查找的复杂度都是O(1)。

对集合我们可以取并集、交集、差集。通过这些操作我们可以实现SNS中的好友推荐和blog的tag功能。

Set集合操作:

sadd:向名称为Key的set中添加元素,同一集合中不能出现相同的元素值。(用法:sadd set集合名称 元素值)

127.0.0.1:6379> sadd myset1 hello

(integer) 1

127.0.0.1:6379> sadd myset1 world

(integer) 1

127.0.0.1:6379> smembers myset1

1) "hello"

2) "world"

127.0.0.1:6379> sadd myset1 hello

(integer) 0

srem:删除名称为key的set中的元素。(用法:srem set集合名称 要删除的元素值)

127.0.0.1:6379> smembers myset1

1) "hello"

2) "fine"

3) "world"

127.0.0.1:6379> srem myset1 fine

(integer) 1

127.0.0.1:6379> smembers myset1

1) "hello"

2) "world"

spop:随机返回并删除名称为key的set中一个元素。(用法:srem set集合名称)

127.0.0.1:6379> smembers myset1

1) "hello"

2) "world"

127.0.0.1:6379> spop myset1

"hello"

127.0.0.1:6379> smembers myset1

1) "world"

sdiff:返回所有给定key与第一个key的差集。(用法:sdiff set集合1 set集合2)

127.0.0.1:6379> smembers myset2

1) "two"

2) "one"

127.0.0.1:6379> smembers myset3

1) "three"

2) "two"

127.0.0.1:6379> sdiff myset2 myset3

1) "one"

sdiffstore:返回所有给定key与第一个key的差集,并将结果存为另一个key。(用法:sdiffstore 差集数据存入的集合 set集合1 set集合2)

127.0.0.1:6379> smembers myset3

1) "one"

2) "two"

3) "four"

127.0.0.1:6379> smembers myset4

1) "two"

2) "one"

127.0.0.1:6379> sdiffstore myset5 myset3 myset4

(integer) 1

127.0.0.1:6379> smembers myset5

1) "four"

sinter:返回所有给定key的交集。(用法:sinter set集合1 set集合2)

127.0.0.1:6379> smembers myset3
1) "one"
2) "two"
3) "four"
127.0.0.1:6379> smembers myset4
1) "two"
2) "one"
127.0.0.1:6379> sinter myset3 myset4
1) "two"
2) "one"

sinterstore:返回所有给定Set集合的交集,并将结果存为另一个set集合。(用法:sinterstore 交集结果集合 set集合1 set集合2)

127.0.0.1:6379> smembers myset3
1) "one"
2) "two"
3) "four"
127.0.0.1:6379> smembers myset4
1) "two"
2) "one"
127.0.0.1:6379> sinterstore myset6 myset3 myset4
(integer) 2
127.0.0.1:6379> smembers myset6
1) "one"
2) "two"

sunion:返回所有给定key的并集。(用法:sunion set集合1 set集合2)

127.0.0.1:6379> smembers myset3
1) "one"
2) "two"
3) "four"
127.0.0.1:6379> smembers myset4
1) "two"
2) "one"
127.0.0.1:6379> sunion myset3 myset4
1) "two"
2) "one"
3) "four"

sunionstore:返回所有给定key的并集,并将结果存为另一个set集合。(用法:sunionstore 并集结果集合 set集合1 set集合2)

127.0.0.1:6379> smembers myset3
1) "one"
2) "two"
3) "four"
127.0.0.1:6379> smembers myset4
1) "two"
2) "one"
127.0.0.1:6379> sunionstore myset7 myset3 myset4
(integer) 3
127.0.0.1:6379> smembers myset7
1) "two"
2) "one"
3) "four"

smove:从第一个集合中移除一个元素到另一个集合中。(用法:smove 集合1 集合2 要移除的元素值)

127.0.0.1:6379> smembers myset7
1) "two"
2) "one"
3) "four"
127.0.0.1:6379> smembers myset5
1) "four"
127.0.0.1:6379> smove myset7 myset5 one
(integer) 1
127.0.0.1:6379> smembers myset5
1) "one"
2) "four"

scard:返回名称为key的set集合的元素个数。(用法:scard 集合1)

127.0.0.1:6379> smembers myset5
1) "one"
2) "four"
127.0.0.1:6379> scard myset5
(integer) 2

sismember:判断某个值是否是集合的元素。(用法:sismember 集合1 指定的元素值)

127.0.0.1:6379> smembers myset7
1) "two"
2) "four"
127.0.0.1:6379> sismember myset7 two
(integer) 1
127.0.0.1:6379> sismember myset7 five
(integer) 0

srandmember:随机返回集合中的一个元素,但不删除元素。(用法:srandmember 集合1)

127.0.0.1:6379> smembers myset3
1) "one"
2) "two"
3) "four"
127.0.0.1:6379> srandmember myset3
"four"
127.0.0.1:6379> srandmember myset3
"four"

Redis学习第五课:Redis Set类型及操作的更多相关文章

  1. redis学习(五) redis过期时间

    redis过期时间 1.redis过期时间介绍 有时候我们并不希望redis的key一直存在.例如缓存,验证码等数据,我们希望它们能在一定时间内自动的被销毁.redis提供了一些命令,能够让我们对ke ...

  2. Redis学习(五)Redis知识点总结

    一.基础概念 Q:什么是 Redis? 定义:Redis 是完全开源免费基于内存亦可持久化的,遵守 BSD 协议,是一个高性能的 key-value 数据库. 特点: 数据的持久化 :可以将内存中的数 ...

  3. 【Redis】Redis学习(五) Redis cluster模式详解

    一般情况下,使用主从模式加Sentinal监控就可以满足基本需求了,但是当数据量过大一个主机放不下的时候,就需要对数据进行分区,将key按照一定的规则进行计算,并将key对应的value分配到指定的R ...

  4. redis学习教程五《管道、分区》

    redis学习教程五<管道.分区>  一:管道 Redis是一个TCP服务器,支持请求/响应协议. 在Redis中,请求通过以下步骤完成: 客户端向服务器发送查询,并从套接字读取,通常以阻 ...

  5. redis 学习(4)-- 哈希类型

    redis 学习(4)-- 哈希类型 介绍 redis 中哈希键值结构: 可以看出:哈希键值包括 key,field,value 这三部分,即键,属性,值这三部分.可以这样来表示: key, (fie ...

  6. Elasticsearch7.X 入门学习第五课笔记---- - Mapping设定介绍

    原文:Elasticsearch7.X 入门学习第五课笔记---- - Mapping设定介绍 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本 ...

  7. redis学习教程一《Redis的安装和配置》

    redis学习教程一<Redis的安装和配置> Redis的优点 以下是Redis的一些优点. 异常快 - Redis非常快,每秒可执行大约110000次的设置(SET)操作,每秒大约可执 ...

  8. C# Redis学习系列三:Redis配置主从

    Redis配置主从 主IP :端口      192.168.0.103 6666 从IP:端口       192.168.0.108 3333 配置从库 (1)安装服务: redis-server ...

  9. redis 学习(1)-- redis 安装与启动

    redis 学习(1)-- redis 安装与启动 redis 特性 关于 redis 的介绍网上已经有很多信息了,这里我就不在详细说明了.介绍一下几个鲜明特性: 1.速度快 官方称可以达到10W的q ...

随机推荐

  1. SqlParameter 参数化模糊查询

    sql += " and a.f_fullName like N'%'+@fullName+'%'";

  2. Intel微处理器学习笔记(三) 不可见寄存器

    参考资料: 1.  http://blog.chinaunix.net/uid-20797642-id-2495244.html 2.  http://www.techbulo.com/708.htm ...

  3. python ros 创建节点订阅robot_pose

    建立文件夹hello_rospy,再在该目录下建立子目录src,cd到该src目录,运行如下命令创建工作包 catkin_create_pkg beginner_tutorials std_msgs ...

  4. python 时间元组转可视化时间(自定义)

    >>> time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) '2019-01-04 11:20:25'

  5. lua_VC6环境

    1. 下载得到 lua-5.1.4.tar.gz,解压得到 文件夹"lua-5.1.4" 2. 视频[02:00] 将 lua-5.1.4/etc/luavs.bat 复制到 lu ...

  6. C#一套简单的单例系统

    单例基类 public class CSingletonBase<TYPE> { public static TYPE Singleton { get { return m_singlet ...

  7. asp.net一般处理程序利用反射定位方法

    asp.net的一般处理程序我想大家用得都不少,经常会如下如下的代码: using System; using System.Collections.Generic; using System.Lin ...

  8. English trip -- Review Unit3 Family 家人

    Words daughter grandfather grandmother husband wife uncle aunt brother sister Who is ...? Loki's ... ...

  9. 『cs231n』作业3问题3选讲_通过代码理解图像梯度

    Saliency Maps 这部分想探究一下 CNN 内部的原理,参考论文 Deep Inside Convolutional Networks: Visualising Image Classifi ...

  10. hdu-5465-二维BIT+nim

    Clarke and puzzle Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others ...