Jave-Redis
Jave-Redis
Redis介绍
基于内存 的 key-value 结构数据库
特点:
- 基于内存存储,读写性能高
- 适合存储热点数据(热点商品、资讯)
数据类型
key是 字符串类型
value有5种常用数据类型:
- 字符串 string
- 哈希 hash (hashMap)
- 列表 list (LinkedList)
- 集合 set (HashSet)
- 有序集合 sorted set / zset (集合中每个元素关联一个分数「score」 根据分数升序排序,没有重复元素)
字符串
根据字符串的格式不同,可以分为三类
- string
- int
- float
字符串操作命令
哈希操作命令
列表操作命令
集合操作命令
Redis set 是string类型的无序集合,集合成员是唯一的,不能出现重复的数据
有序集合操作命令
通用操作命令
Redis 缓存注解
存入缓存数据: @Cacheable(cacheNames = "setmealCache", key = "#categoryId")
清除指定key的缓存数据: @CacheEvict(cacheNames = "setmealCache",key = "#setmealDTO.categoryId")
清除全部缓存数据: @CacheEvict(cacheNames = "setmealCache",allEntries = true)
Redis 缓存注解常见使用思路
RedisTemplate 两种序列化实践方案
添加Redis缓存
1 |
|
缓存穿透
缓存穿透是指 当客户端请求的数据在数据库和redis缓存中都没有的时候,这些缓存永远不会生效,从而导致一直请求数据库。
解决方案:
- 缓存空对象
- 布隆过滤
缓存雪崩
同一时间,大量请求无法使用缓存(key集体过期,缓存服务器宕机),像雪崩一样冲向数据库
解决方案:
- 设置随机的一个过期时间
缓存击穿
热点的key过期,导致一瞬间大量访问该key的请求打到数据库 。该key有两个特征:1. 被大量请求访问 2. 缓存重建业务复杂(在重建长时间里,大量请求透过,多次进行缓存重建)
Jave-Redis
https://cs-lb.github.io/2024/11/05/Java/Jave-Redis/