如何保证Redis缓存和收数据库一致性
- 先更新Redis缓存,再更新数控
- 先更新数据库,再更新Redis缓存
- 先删除Redis缓存,再更新数据库
- 先更新数据库,再删除Redis缓存
- 先删除Redis缓存,再更新数据库,再删除Redis缓存(缓存双删)(据说是删得最干净的,但没有看到用过)
关系型数据库与非关系型数据库的区别
Redis客户端类型
| 客户端 | 特点 |
|---|---|
| jedis | |
| redission | |
Redis数据类型
| 类型 | 使用场景 |
|---|---|
| string | 计数器,点赞 |
| list | 延时队列 |
| hash | |
| set | |
| sort set | 排行榜 |
Redis异常
| 异常 | 定义 | 解决方式 |
|---|---|---|
| 缓存穿透 | 缓存没有的数据,数据库也没有(如:查询null值,缓存没有,数据库也没有,一直穿过缓存打到数据库 | 1.过滤不合法的入参,2.缓存没有,数据库也没有的值也设置到缓存中,设置一个过期时间,3.使用布隆过滤器 |
| 缓存击穿 | 缓存中存在热点数据,当缓存失效时,有大量的请求过来,打到数据库 | 设置热点数据永远有效 |
| 缓存雪崩 | 在同一个时间点,存在大量的缓存key失效 | 设置不同的key过期时间 |
Redis的集群方式
| 集群方式 | 描述 |
|---|---|
| 单机 | |
| master-slave | |
| 哨兵 | |
| cluster |
Redis文件保存方式
| 方式 | 优点 |
|---|---|
| rdb(快照) | 默认方式,60,300,900秒保存一次,时间间隔比较长,如果在这个间隔中宕机,则数据丢失 |
| aof(文件追加) | 先写的缓存,再写到磁盘,时间间隔比较短,数据丢失少, |
选择那种方式进行持久化
Redis分布式锁
| 实现方式 | 缺点 |
|---|---|
| setnx | |
| lua脚本 | |
| 红锁 |