相关知识
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环境。
操作步骤
添加依赖
配置
验证
Spring 提供了 RedisTemplate 作为操作 Redis 的工具类,可以通过 Spring 进行自动加载。StringRedisTemplate 是 RedisTemplate 基于 String 类型的实现。
RedisTemplate 提供了以下方法分别用于对 Redis 的各个数据结构进行操作。
- opsForValue: 对应 String(字符串)
- opsForZSet: 对应 ZSet(有序集合)
- opsForHash: 对应 Hash(哈希)
- opsForList: 对应 List(列表)
- opsForSet: 对应 Set(集合)
- opsForGeo: 对应 GEO(地理位置)
编码(使用自定义序列化)
定义对象
@NoArgsConstructor 一定要记得加,反序列化时会调用无参构造函数进行对象实例化。
注册自定义 RedisTemplate
值的序列化选择了 jackson
验证
源码地址
本章源码 :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