RedisTemplate之集合类型常用方法详解

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云原生内存数据库 Tair,内存型 2GB
简介: RedisTemplate之集合类型常用方法详解

前言


  近期在将Spring Boot中集成了Redis。并针对Redis使用RedisTemplate进行了操作,查看文档之后总结了RedisTemplate操作集合的常用方法,特汇总下来分享一下。


List类型


  Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)


索引查询


  通过索引获取列表中的元素

redisTemplate.opsForList().index(key, index)


范围查询

  获取列表指定范围内的元素(start开始位置, 0是开始位置,end 结束位置, -1返回所有)

redisTemplate.opsForList().range(key, start, end)


放在最前面

  存储在list的头部,添加一个就把它放在最前面的索引处

redisTemplate.opsForList().leftPush(key, value)


多值插入

  把多个值存入List中(value可以是多个值,也可以是一个Collection value)

redisTemplate.opsForList().leftPushAll(key, value)


存在插入

  List存在的时候再加入

redisTemplate.opsForList().leftPushIfPresent(key, value)


指定值前插入

  如果pivot处值存在则在pivot前面添加

redisTemplate.opsForList().leftPush(key, pivot, value)


先进先出添加

  按照先进先出的顺序来添加(value可以是多个值,或者是Collection var2)

redisTemplate.opsForList().rightPush(key, value) redisTemplate.opsForList().rightPushAll(key, value)


在指定值后插入

  在pivot元素的右边添加值

redisTemplate.opsForList().rightPush(key, pivot, value)


指定索引值

  设置指定索引处元素的值

redisTemplate.opsForList().set(key, index, value)


移除并获取列表中第一个元素

  移除并获取列表中第一个元素(如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止)

redisTemplate.opsForList().leftPop(key) redisTemplate.opsForList().leftPop(key, timeout, unit)


移除并获取列表最后一个元素

  移除并获取列表最后一个元素

redisTemplate.opsForList().rightPop(key) redisTemplate.opsForList().rightPop(key, timeout, unit)


将值放入第一个

   从一个队列的右边弹出一个元素并将这个元素放入另一个指定队列的最左边

redisTemplate.opsForList().rightPopAndLeftPush(sourceKey, destinationKey) redisTemplate.opsForList().rightPopAndLeftPush(sourceKey, destinationKey, timeout, unit)


删除集合中值等于value的元素

  删除集合中值等于value的元素(index=0, 删除所有值等于value的元素; index>0, 从头部开始删除第一个值等于value的元素; index<0, 从尾部开始删除第一个值等于value的元素)

redisTemplate.opsForList().remove(key, index, value)


将List列表进行剪裁

redisTemplate.opsForList().trim(key, start, end)


获取当前key的List列表长度

redisTemplate.opsForList().size(key)


Set类型


  Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。集合对象的编码可以是 intset 或者 hashtable。Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。


添加元素


redisTemplate.opsForSet().add(key, values)


移除元素(单个值、多个值)

redisTemplate.opsForSet().remove(key, values)


删除并且返回一个随机的元素

redisTemplate.opsForSet().pop(key)


获取集合的大小

redisTemplate.opsForSet().size(key)


判断集合是否包含value

redisTemplate.opsForSet().isMember(key, value)


获取两个集合的交集(key对应的无序集合与otherKey对应的无序集合求交集)

redisTemplate.opsForSet().intersect(key, otherKey)


获取多个集合的交集(Collection var2)

redisTemplate.opsForSet().intersect(key, otherKeys)


key集合与otherKey集合的交集存储到destKey集合中(其中otherKey可以为单个值或者集合)

redisTemplate.opsForSet().intersectAndStore(key, otherKey, destKey)


key集合与多个集合的交集存储到destKey无序集合中

redisTemplate.opsForSet().intersectAndStore(key, otherKeys, destKey)


获取两个或者多个集合的并集(otherKeys可以为单个值或者是集合)

redisTemplate.opsForSet().union(key, otherKeys)


key集合与otherKey集合的并集存储到destKey中(otherKeys可以为单个值或者是集合)

redisTemplate.opsForSet().unionAndStore(key, otherKey, destKey)


获取两个或者多个集合的差集(otherKeys可以为单个值或者是集合)

redisTemplate.opsForSet().difference(key, otherKeys)


差集存储到destKey中(otherKeys可以为单个值或者集合)

redisTemplate.opsForSet().differenceAndStore(key, otherKey, destKey)


随机获取集合中的一个元素

redisTemplate.opsForSet().randomMember(key)


获取集合中的所有元素

redisTemplate.opsForSet().members(key)


随机获取集合中count个元素

redisTemplate.opsForSet().randomMembers(key, count)


获取多个key无序集合中的元素(去重),count表示个数

redisTemplate.opsForSet().distinctRandomMembers(key, count)


遍历set类似于Interator(ScanOptions.NONE为显示所有的)

redisTemplate.opsForSet().scan(key, options)


结语


  关于RedisTemplate之集合类型常用方法详解就已经介绍完了,相信大家对RedisTemplate之集合类型常用方法都有了初步的了解,这都是基本的Redis操作,更深入的大家可以继续研究一起探讨。


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
3月前
|
存储 安全 Java
HashMap的使用,以及内置方法
HashMap的使用,以及内置方法
|
10月前
|
安全 Java vr&ar
泛型和Map集合的不同
泛型和Map集合的不同
|
JSON fastjson Java
Fastjson 序列化,反序列化Map对象排序问题(字符串转map,map转字符串)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qingfeng812/article/details/61194594 ...
4776 0
|
15天前
|
存储 Java
HashMap与LinkedHashMap类型集合
【8月更文挑战第4天】`HashMap` 是基于哈希表实现的键值对存储结构,提供快速的查找、插入和删除操作,但不保证元素顺序。适用于不关心顺序且需高效操作的场景。 `LinkedHashMap` 继承自 `HashMap`,保持了元素的插入或访问顺序。适合需要按特定顺序遍历元素的应用,如按添加顺序显示购物车商品。其操作效率与 `HashMap` 相近。
|
2月前
|
Java
Java集合之map 集合使用
Java集合之map 集合使用
15 0
|
3月前
|
存储 C#
33.c#:hashtable集合
33.c#:hashtable集合
25 1
|
3月前
|
存储 算法 安全
HashMap 的常用方法
HashMap 的常用方法
26 0
|
3月前
|
存储 NoSQL Redis
RedisTemplate常用方法总结
RedisTemplate常用方法总结
|
10月前
集合架构-Map集合及工具类
集合架构-Map集合及工具类
80 0
|
存储 C# 索引
C#视频—集合常用方法
C#视频—集合常用方法