当前位置: 代码迷 >> 综合 >> SpringBoot2.0实战(13)整合Redis之初体验Lettuce
  详细解决方案

SpringBoot2.0实战(13)整合Redis之初体验Lettuce

热度:39   发布时间:2023-09-29 02:58:21.0

相关知识

Redis 简介

Redis 是一个开源的,基于内存中的,高性能的数据存储系统,它可以用作数据库、缓存和消息中间件。

Redis 支持多种类型的数据结构,如:string、hashes、lists、sets、sortedSets等。

Redis 内置了复制(replication)、LUA脚本(Lua scripting)、事务(transactions)、磁盘持久化(persistence)、LRU驱动事件(LRU eviction)等功能。

Redis 可以通过哨兵(Sentinel)以及集群(Cluster)提供高可用性

Lettuce 和 Jedis

Lettuce 和 Jedis 都是连接 Redis Server 的客户端程序,

SpringBoot2.x 之前默认使用 Jedis 作为与 Redis 进行交互的组件,SpringBoot2.x 则换成了 Lettuce(生菜)。

Jedis 在实现上是直连 redis server,多线程环境下非线程安全,除非使用连接池,为每个 Jedis 实例增加物理连接。

Lettuce 基于 Netty 的连接实例(StatefulRedisConnection),可以在多个线程间并发访问,且线程安全,满足多线程环境下的并发访问,

同时它是可伸缩的设计,一个连接实例不够的情况也可以按需增加连接实例。

目标

整合 Redis 实现对 redis 的增删查改

准备工作

我是基于windows测试,请自行根据windows或Linux安装redis环境。

 

操作步骤

添加依赖

SpringBoot2.0实战(13)整合Redis之初体验Lettuce

配置

SpringBoot2.0实战(13)整合Redis之初体验Lettuce

验证

Spring 提供了 RedisTemplate 作为操作 Redis 的工具类,可以通过 Spring 进行自动加载。StringRedisTemplate 是 RedisTemplate 基于 String 类型的实现。

RedisTemplate 提供了以下方法分别用于对 Redis 的各个数据结构进行操作。

  • opsForValue: 对应 String(字符串)
  • opsForZSet: 对应 ZSet(有序集合)
  • opsForHash: 对应 Hash(哈希)
  • opsForList: 对应 List(列表)
  • opsForSet: 对应 Set(集合)
  • opsForGeo: 对应 GEO(地理位置)

SpringBoot2.0实战(13)整合Redis之初体验Lettuce

SpringBoot2.0实战(13)整合Redis之初体验Lettuce

编码(使用自定义序列化)

定义对象

@NoArgsConstructor 一定要记得加,反序列化时会调用无参构造函数进行对象实例化。

SpringBoot2.0实战(13)整合Redis之初体验Lettuce

注册自定义 RedisTemplate

值的序列化选择了 jackson

SpringBoot2.0实战(13)整合Redis之初体验Lettuce

验证

SpringBoot2.0实战(13)整合Redis之初体验Lettuce

SpringBoot2.0实战(13)整合Redis之初体验Lettuce

源码地址

本章源码 :https://github.com/caiyuanzi-song/boot

扩展

Redis 相关资料

  • spring-data-redis文档: https://docs.spring.io/spring-data/redis/docs/2.0.1.RELEASE/reference/html/#new-in-2.0.0
  • Redis 文档: https://redis.io/documentation
  • Redis 中文文档: http://www.redis.cn/commands.html