当前位置: 首页 > news >正文

Redis 五种数据结构

Redis 五种数据结构在 Spring Boot 中的使用方法

Redis 提供了五种主要数据结构:String(字符串)、List(列表)、Hash(哈希)、Set(集合)和 Sorted Set(有序集合)。在 Spring Boot 中,可以通过 StringRedisTemplate 或 RedisTemplate 来操作这些数据结构。

1. String(字符串)

String 是最基本的 Redis 数据类型,可以存储字符串、整数或浮点数。

@Autowired
private StringRedisTemplate stringRedisTemplate;// 设置值
stringRedisTemplate.opsForValue().set("user:1:name", "张三");
stringRedisTemplate.opsForValue().set("user:1:age", "30");// 获取值
String name = stringRedisTemplate.opsForValue().get("user:1:name");
String age = stringRedisTemplate.opsForValue().get("user:1:age");// 设置过期时间
stringRedisTemplate.expire("user:1:name", 60, TimeUnit.SECONDS);// 自增操作
stringRedisTemplate.opsForValue().increment("counter");
stringRedisTemplate.opsForValue().increment("counter", 5);
 

2. List(列表)

List 是简单的字符串列表,按照插入顺序排序,可以在头部或尾部添加元素。

// 从左侧插入元素
stringRedisTemplate.opsForList().leftPush("messages", "hello");
stringRedisTemplate.opsForList().leftPush("messages", "world");// 从右侧插入元素
stringRedisTemplate.opsForList().rightPush("messages", "goodbye");// 获取列表范围
List<String> messages = stringRedisTemplate.opsForList().range("messages", 0, -1);// 获取列表长度
Long size = stringRedisTemplate.opsForList().size("messages");// 弹出元素
String leftPop = stringRedisTemplate.opsForList().leftPop("messages");
String rightPop = stringRedisTemplate.opsForList().rightPop("messages");

3. Hash(哈希)

Hash 是键值对集合,适合存储对象。

// 设置单个字段
stringRedisTemplate.opsForHash().put("user:1", "name", "李四");
stringRedisTemplate.opsForHash().put("user:1", "age", "25");// 设置多个字段
Map<String, String> userMap = new HashMap<>();
userMap.put("email", "lisi@example.com");
userMap.put("phone", "13800138000");
stringRedisTemplate.opsForHash().putAll("user:1", userMap);// 获取单个字段
String name = (String) stringRedisTemplate.opsForHash().get("user:1", "name");// 获取所有字段
Map<Object, Object> user = stringRedisTemplate.opsForHash().entries("user:1");// 删除字段
stringRedisTemplate.opsForHash().delete("user:1", "phone");

4. Set(集合)

Set 是 String 类型的无序集合,集合成员是唯一的。

// 添加元素
stringRedisTemplate.opsForSet().add("tags", "java", "redis", "spring");// 获取所有成员
Set<String> tags = stringRedisTemplate.opsForSet().members("tags");// 判断是否是成员
boolean isMember = stringRedisTemplate.opsForSet().isMember("tags", "java");// 获取集合大小
Long size = stringRedisTemplate.opsForSet().size("tags");// 移除元素
stringRedisTemplate.opsForSet().remove("tags", "redis");// 集合运算
stringRedisTemplate.opsForSet().add("tags1", "java", "redis", "spring");
stringRedisTemplate.opsForSet().add("tags2", "java", "mysql", "hibernate");
Set<String> intersect = stringRedisTemplate.opsForSet().intersect("tags1", "tags2"); // 交集
Set<String> union = stringRedisTemplate.opsForSet().union("tags1", "tags2"); // 并集
Set<String> diff = stringRedisTemplate.opsForSet().difference("tags1", "tags2"); // 差集

5. Sorted Set(有序集合)

Sorted Set 类似于 Set,但每个成员都关联一个分数,用于排序。


// 添加元素(带分数)
stringRedisTemplate.opsForZSet().add("leaderboard", "player1", 100);
stringRedisTemplate.opsForZSet().add("leaderboard", "player2", 85);
stringRedisTemplate.opsForZSet().add("leaderboard", "player3", 95);// 获取元素分数
Double score = stringRedisTemplate.opsForZSet().score("leaderboard", "player1");// 获取排名(从低到高)
Long rank = stringRedisTemplate.opsForZSet().rank("leaderboard", "player1");// 获取排名(从高到低)
Long reverseRank = stringRedisTemplate.opsForZSet().reverseRank("leaderboard", "player1");// 获取范围内的元素(按分数从低到高)
Set<String> topPlayers = stringRedisTemplate.opsForZSet().range("leaderboard", 0, 2);// 获取范围内的元素(按分数从高到低)
Set<String> topPlayersRev = stringRedisTemplate.opsForZSet().reverseRange("leaderboard", 0, 2);// 获取分数范围内的元素
Set<String> players = stringRedisTemplate.opsForZSet().rangeByScore("leaderboard", 90, 100);// 增加分数
stringRedisTemplate.opsForZSet().incrementScore("leaderboard", "player2", 10);

通用操作

// 判断key是否存在
Boolean exists = stringRedisTemplate.hasKey("user:1");// 删除key
stringRedisTemplate.delete("user:1");// 设置过期时间
stringRedisTemplate.expire("user:1", 60, TimeUnit.SECONDS);// 获取剩余生存时间
Long ttl = stringRedisTemplate.getExpire("user:1");

以上就是在 Spring Boot 中使用 StringRedisTemplate 操作 Redis 五种基本数据结构的方法。根据不同的业务场景选择合适的数据结构,可以大大提高应用的性能和开发效率。

相关文章:

  • keil新建工程文件结构和每个文件的作用解析(标准库版本)
  • 零知开源——STM32F4实现ILI9486显示屏UI界面系列教程(一):电子书阅读器功能
  • uniapp实现聊天中的接发消息自动滚动、消息定位和回到底部
  • QTableView为例:Qt模型视图委托(MVD)(Model-View-Delegate)
  • C# CSharpScript 的原理与应用
  • python校园拼团系统
  • Uniapp 中根据不同离开页面方式处理 `onHide` 的方法
  • uniapp的video遮盖了popup
  • Web安全性测试--超详细用例CASE整理总结
  • linux unix socket 通信demo
  • 理解RocketMQ顺序消息的全局有序消息和分区有序消息、延迟消息、事务消息
  • 英一真题阅读单词笔记 13年
  • JS数据类型检测方法总结
  • 大数据学习(140)-数仓概述分析
  • 你的下一把量化“瑞士军刀”?KHQuant适用场景全解析【AI量化第32篇】
  • FastAdmin退出登录不提示的修改方法
  • C#上位机通过WebApi对接DeepSeek
  • 关于球面投影SphericalProjector的介绍以及代码开发
  • C语言——共用体
  • CppCon 2017 学习:C++ atomics:from basic to advanced. What do they do?
  • 基于jsp的网站开发/seo服务商技术好的公司
  • 青岛哪个网站建设公司价格低还能好一些/2021小学生新闻摘抄
  • 亚马逊国际站官网/谷歌网站推广
  • 专业制作网站建设/百度搜索关键词排名优化技术
  • 去哪里学习建设网站/seo流量的提升的软件
  • 关于推动门户网站建设d/怎么建立网站的步骤