文章目录
- 前言
- [1. 命令行中使用Redis](#1. 命令行中使用Redis)
-
- 1.1启动服务和客户端
- [1.2 数据结构](#1.2 数据结构)
-
- [1.2.1 String](#1.2.1 String)
- [1.2.2 Hash](#1.2.2 Hash)
- [1.2.3 List](#1.2.3 List)
- [1.2.4 Set](#1.2.4 Set)
- [1.2.5 Zset](#1.2.5 Zset)
- [2 SpringBoot 中 使用StringRedisTemplate](#2 SpringBoot 中 使用StringRedisTemplate)
-
- [2.1 配置](#2.1 配置)
- [2.2 RedisTemplate](#2.2 RedisTemplate)
- [2.3 StringRedisTemplate](#2.3 StringRedisTemplate)
前言
学习redis命令行使用, SpringBoot中的RedisTemplate使用
1. 命令行中使用Redis
1.1启动服务和客户端
启动redis服务
找到Redis安装目录
bash
redis-server.exe redis.windows.conf
启动redis命令行客户端
bash
redis-cli
选择数据库0-15
bash
select 1
1.2 数据结构
1.2.1 String
bash
# 放入, 不带过期时间, 已有就覆盖
set name qinyuan
# 获取
get name
# 带过期时间放入
set name qinyuan ex 20
# 没有才设置成功
set name zhangfalin nx
1.2.2 Hash
存储简单对象, 实用性不如String
1.2.3 List
双向链表, 双端可出可进
用来做抢票
1.2.4 Set
唯一无序
提供交并集操作
1.2.5 Zset
可排序的set
2 SpringBoot 中 使用StringRedisTemplate
2.1 配置
配置redis和lettuce连接池
java
spring:
data:
redis:
host: 127.0.0.1
port: 6379
# password:
database: 1
lettuce:
pool:
max-active: 10
max-idle: 10
min-idle: 2
max-wait: 3000ms
shutdown-timeout: 100ms
2.2 RedisTemplate
redis的客户端:
除了命令行客户端, 还有RESP图形化客户端, 还有Java客户端
Java客户端常见的有Lettuce和Jedis, Redis启动依赖默认包含lettuce客户端, RedisTemplate 则是对redis的java客户端的更高级的封装
使用模板模式封装:把操作的通用、不变的核心步骤(如 "获取连接→发送命令→处理响应→释放连接→异常处理")封装在父类, 开放可变扩展点:把个性化、可变的部分(如 "执行 SET 命令" 还是 "执行 GET 命令")延迟到子类 / 方法调用时实现, 避免重复编码
2.3 StringRedisTemplate
RedisTemplate本身并不好用,原因如下:
- 使用JDK序列化器, 生成乱码,
- 只有Java能反序列化
日常用RedisTemplate的子类StringRedisTemplate, 配合FastJson2将对象高效序列化与反序列化
使用流程:
- 建议进一步封装为工具类,统一团队的序列化
- 编写redis前缀Enum枚举, 动态拼接key