Redis 学习笔记
Redis 学习笔记
1. Redis 是什么
Redis 是一个基于内存的 NoSQL 数据库,特点是:
- 读写快
- 常用来做缓存
- 也能做计数器、排行榜、登录状态存储等
2. 常见基础命令
查看/删除
DEL key:删除 keyDBSIZE:查看当前库 key 的数量TTL key:查看 key 剩余过期时间-1:存在,但没有过期时间-2:key 不存在
清空/切库
SELECT 0:切换到 0 号库FLUSHDB:清空当前库FLUSHALL:清空所有库
FLUSHDB和FLUSHALL都是危险命令,线上慎用。
3. 什么叫“线上”
线上就是 生产环境,也就是项目真正给用户使用的环境。
比如:
- 本地环境:自己电脑
- 测试环境:测试人员使用
- 线上环境:真实用户访问
所以像 KEYS * 这种会遍历大量 key 的命令,本地能随便试,线上不能乱用。
4. String 类型常用命令
基础命令
SET key value:设置值GET key:获取值INCR key:数字加 1DECR key:数字减 1
典型业务
SET / GET- 缓存短信验证码
- 缓存 token / 登录状态
- 缓存系统配置
INCR- 收藏数
- 阅读量
- 登录失败次数
DECR- 库存扣减
- 剩余名额
INCR/DECR只能操作“整数形式的字符串”。
5. 四种重要数据类型
List
特点:有序,可重复
常用命令:
LPUSHRPUSHLRANGELPOPRPOP
适合场景:
- 消息队列简单版
- 待办列表
- 聊天消息顺序存储
Set
特点:无序,不可重复
常用命令:
SADDSMEMBERSSISMEMBERSREM
适合场景:
- 点赞用户去重
- 标签去重
- 签到用户去重
Hash
特点:field-value 结构,像 Map
常用命令:
HSETHGETHGETALLHDEL
适合场景:
- 用户对象
- 商品对象
- 配置信息对象
ZSet
特点:元素唯一,带 score,可排序
常用命令:
ZADDZRANGEZREVRANGEZSCOREZREM
适合场景:
- 排行榜
- 积分榜
- 热度榜
6. 怎么选数据类型
记一句话就行:
- 顺序 → List
- 去重 → Set
- 对象 → Hash
- 排行 → ZSet
7. RedisTemplate 和 StringRedisTemplate
默认 RedisTemplate
默认使用 JDK 序列化,存到 Redis 里常常不方便直接看懂。
StringRedisTemplate
默认 key、value、hashKey、hashValue 都用 字符串序列化,更适合直接存字符串数据。
所以项目里常见做法是:
- key 用 String
- value 用 JSON
这样好处是:
- Redis 中数据更清晰
- 方便排查问题
- 更适合实际项目维护
8. InitializingBean / afterPropertiesSet()
afterPropertiesSet() 的作用:
- Bean 属性注入完成后执行
- 用来做最终初始化
- 用来检查配置是否完整
在 Redis 配置里常见作用就是:
序列化器、连接工厂都设置好后,让模板真正进入可用状态。
9. 今日重点记忆
今天最重要的几句话:
- Redis 最常见用途是 缓存 + 计数 + 排行
SET/GET适合缓存INCR/DECR适合计数和库存KEYS *不适合线上乱用- List、Set、Hash、ZSet 一定要会区分
- 项目里常见:key 用 String,value 用 JSON
10. 复习口诀
顺序用 List,去重用 Set,对象用 Hash,排行用 ZSet。
缓存用 SET/GET,计数用 INCR/DECR。
浙公网安备 33010602011771号