Redis基本数据类型Set常用操作命令

目录
  • Redis基本数据类型Set常用操作
    • 一、sadd 添加一个、多个元素
    • 二、smembers 查看集合
    • 三、scard 元素数量
    • 四、srem 移除一个、多个元素
    • 五、srandmember 随机元素
    • 六、spop 随机移除一个、多个元素
    • 七、smove 移动元素到目标集合
    • 八、sdiff 差集
    • 九、sinter 交集
    • 十、sunion 并集

Redis基本数据类型Set常用操作

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

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

一、sadd 添加一个、多个元素

将一个或多个成员元素加入到集合中,已经存在于集合的成员元素将被忽略。
若key不存在,则创建一个只包含添加的元素作成员的集合。

sadd myset hello pingguo test

若key不是集合类型时,返回一个错误。

二、smembers 查看集合

返回集合中的所有的成员。

smembers myset

三、scard 元素数量

返回集合中元素的数量。

scard myset

四、srem 移除一个、多个元素

用于移除集合中的一个或多个成员元素,不存在的成员元素会被忽略。
当key不是集合类型,返回一个错误。

srem myset hello test

五、srandmember 随机元素

用于返回集合中的一个随机元素。

srandmember myset 3

这里随机抽取3个元素,注意这里仅仅返回随机元素,而不对集合进行任何改动。

六、spop 随机移除一个、多个元素

移除集合中的指定key的一个或多个随机元素,移除后会返回移除的元素。

spop myset 2

跟上面的srandmember区别开,虽然都是随机,但是这里的spop修改了集合。

七、smove 移动元素到目标集合

smove source destination member将指定成员 member 元素从 source 集合移动到 destination 集合。

smove myset myset2 pingguo

如果原集合不存在或不包含指定的元素,则不执行任何操作,仅返回 0。否则,移动成功。

如果目标集合里已经存在了此元素,那么命令只会移除原集合里的元素。

八、sdiff 差集

返回第一个集合与其他集合之间的差异,也可以说是第一个集合中独有的元素。

sdiff myset myset2 myset3

注意,这里差集的结果来自前面的myset

九、sinter 交集

返回给定所有给定集合的交集,当给定集合当中有一个空集时,结果也为空集。

sinter myset myset2 myset3sinter myset myset3

这里当比较3个集合myset myset2 myset3时,myset2里跟其他2个没有任何交集,所以整个结果返回空集。

十、sunion 并集

返回给定集合的并集,不存在的集合 key 被视为空集。

sunion myset myset2 myset3

集合利用差、并、交集可以用来实现一些场景的功能。比如社交软件中,把A用户关注的所有人放到一个set里,然后将B用户的粉丝放另一个set2里。
那么A, B两个用户共同关注的人就是交集了。

以上就是Redis基本数据类型Set常用操作的详细内容,更多关于Redis数据类型Set操作的资料请关注我们其它相关文章!

(0)

相关推荐

  • Redis 整数集合的具体使用(intset)

    目录 一.集合概述 二.Redis整数集合(intset) 1.intset结构定义 2.编码方式 3.编码升级 三.整数集合常用操作 1.创建集合 2.元素设置 3.元素获取 4.元素查找 5.内存重分配 6.编码升级 7.内存迁移 8.元素插入 9.元素删除 一.集合概述 对于集合,STL 的 set 相信大家都不陌生,它的底层实现是红黑树.无论插入.删除.查找都是 O(log n) 的时间复杂度.当然,如果用哈希表来实现集合,插入.删除.查找都可以达到 O(1).那么为什么集合要用红黑树和

  • redis zset实现滑动窗口限流的代码

    目录 限流 rediszset特性 滑动窗口算法 java代码实现 补充:RediszSet实现滑动窗口对短信进行防刷限流 前言 示例代码 限流 需求背景:同一用户1分钟内登录失败次数超过3次,页面添加验证码登录验证,也即是限流的思想. 常见的限流算法:固定窗口计数器:滑动窗口计数器:漏桶:令牌桶.本篇选择的滑动窗口计数器 redis zset特性 Redis 有序集合(sorted set)和集合(set)一样也是 string 类型元素的集合,且不允许重复的成员.不同的是每个元素都会关联一个

  • RedisTemplate常用操作方法总结(set、hash、list、string等)

    目录 String类型 Hash类型 List类型 Set类型 zSet类型 Redis常用的数据类型: String Hash List Set zSet Sorted set String类型 保存和读取String(最常用的) System.out.println("缓存正在设置........."); redisTemplate.opsForValue().set("key1","value1"); redisTemplate.opsFo

  • Redis源码分析之set 和 sorted set 使用

    目录 set 和 sorted set 前言 set 常见命令 set 的使用场景 看下源码实现 sorted set 常见的命令 使用场景 分析下源码实现 总结 参考 set 和 sorted set 前言 前面在几个文章聊到了 list,string,hash 等结构的实现,这次来聊一下 set 和 sorted set 的细节. set Redis 的 Set 是 String 类型的无序集合,集合成员是唯一的. 底层实现主要用到了两种数据结构 hashtable 和 inset(整数集合

  • Redis基本数据类型Zset有序集合常用操作

    目录 Redis数据类型Zset有序集合 一.zadd 二.zrange 三.zrevrange 四.zrangebyscore 五. zrem 六.zcard 七.zcount Redis数据类型Zset有序集合 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员. 不同的是有序集合每个元素都会关联一个 double 类型的分数.redis 正是通过分数来为集合中的成员进行从小到大的排序. 有序集合的成员是唯一的,但分数(score)却可以重复. 集合是通过哈希表实现的,

  • 基于Redis zSet实现滑动窗口对短信进行防刷限流的问题

    前言 主要针对目前线上短信被脚本恶意盗刷的情况,用Redis实现滑动窗口限流 public void checkCurrentWindowValue(String telNum) { String windowKey = CommonConstant.getNnSmsWindowKey(telNum); //获取当前时间戳 long currentTime = System.currentTimeMillis(); //1小时,默认只能发5次,参数smsWindowMax做成可配置项,配置到Na

  • Redis基本数据类型String常用操作命令

    目录 Redis数据类型String操作命令 一.append 追加字符串 二.strlen 获取key 字符串长度 三.自增.自减 四.字符串range 五.替换字符串 六.设置值及其过期时间 setex setnx 七.批量操作 1. mset.mget 2. msetnx 八.设置一个json对象 九.getset 先获取再设置 Redis数据类型String操作命令 一.append 追加字符串 append name 2222 二.strlen 获取key 字符串长度 strlen n

  • Redis基本数据类型List常用操作命令

    目录 Redis数据类型List操作 一.push 插入元素 1. lpush,在头部插入 2. rpush,在尾部插入 二.range 通过区间获取元素 三.pop 移除元素 1. lpop 左边移除 2. rpop 右边移除 四.lindex 通过下标获取元素 五.llen 获取list长度 六.lrem 移除指定元素 七.ltrim 修剪 八.组合命令 rpoplpush 移除并添加 九.exists 判断key 是否存在 十.lset,设置指定下标的值 十一.linsert,指定位置之前

  • Redis基本数据类型Set常用操作命令

    目录 Redis基本数据类型Set常用操作 一.sadd 添加一个.多个元素 二.smembers 查看集合 三.scard 元素数量 四.srem 移除一个.多个元素 五.srandmember 随机元素 六.spop 随机移除一个.多个元素 七.smove 移动元素到目标集合 八.sdiff 差集 九.sinter 交集 十.sunion 并集 Redis基本数据类型Set常用操作 Set是String类型的无序集合.集合成员是唯一的,这就意味着集合中不能出现重复的数据. 另外,redis中

  • Redis基本数据类型哈希Hash常用操作

    目录 Redis数据类型Hash常用操作 一.hset 二.hget 三.hmset 四.hmget 五.hgetall 六.hdel 七.hlen 八.hexists 九.hkeys 十.hvals 十一.hincrby 十二.hsetnx Redis数据类型Hash常用操作 redis里的hash是一个string类型的field(字段)和value(值)的映射表.特别适合用于存储对象,每个hash可以存储40多亿键值对. 熟悉python的童鞋可以想象成字典dict.之前的数据类型存储都是

  • Redis入门基础常用操作命令整理

    目录 Redis基础 一.redis是单线程 二.关于数据库的常用操作 1. 默认数据库 2. 切换数据库 3. 查看数据库大小 4. 清空数据库 三.关于Redis-Key的常用操作 1. set 设置key 和 value 2. keys * 查看所有的key 3. get key 的 value 4. exists key 是否存在key 5. move 移动 key 6. 设置key过期时间 7. 查看key的剩余时间 8. 查看key的类型 Redis基础 Redis 是一个开源(BS

  • Redis字符串类型的常用命令小结

    Redis字符串类型 字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等.在Redis中字符串类型的Value最多可以容纳的数据长度是512M. 一.最简单的命令 1.获得符合规则的键名列表 keys * 这里的*号,是指列出所有的键,同时*号也可以替换成其他支持glob风格通配符格式,具体规则如下: ?:匹配一个字符 *:匹配任意个(包括0个)字符 []:匹配括号间多大任一个字符,可

  • Redis安装配置与常用命令

    Redis简介 Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理.  它支持字符串.哈希表.列表.集合.有序集合,位图,hyperloglogs等数据类型.  内置复制.Lua脚本.LRU收回.事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区.    简言之,Redis是一种面向"键/值"对数据类型的内存数据库,可以满足我们对海量数据的快速读写需求.    Red

  • redis在php中常用的语法【推荐】

    Redis是一个C/S结构类型的服务,C是指客户端,S是指服务端,客户端与服务端可以通过网络进行通信.对于redis而言,服务端上需要安装redis服务,那客户端呢?其实redis为很多语言提供了API,都可以通过语言来进行客户端和服务端的通信,对于php语言而言,我们可以通过安装redis扩展实现客户端与服务端的通信. String 类型操作 string是redis最基本的类型,而且string类型是二进制安全的.意思是redis的string可以包含任何数据.比如jpg图片或者序列化的对象

  • redis中数据类型命令整理

    redis是键值对的数据库,有5中主要数据类型: 字符串类型(string),散列类型(hash),列表类型(list),集合类型(set),有序集合类型(zset) 几个基本的命令: 函数 说明 keys * 获得当前数据库的所有键 
exists key [key ...] 判断键是否存在,返回个数,如果key有一样的也是叠加数 del key [key ...] 删除键,返回删除的个数 
type key 获取减值的数据类型(string,hash,list,set,zset) flush

随机推荐