redis的简单理解
redis的作用
1 做缓存存储数据2 做锁 分布式锁
3 可以作为缓存数据库和计算等用途
redis的持久化方案
RDB(默认) 和AOF
rdb 保存某个时间节点的全部快照 根据redis.conf配置里的save m n定时触发
AOF(Append-Only-File)持久化:保存写状态 记录所有写指令
当AOF和RDB文件同时存在时,优先加载AOF
redis的一些概念
缓存穿透
缓存穿透是指用户查询数据,在数据库没有,自然在缓存中也不会有。这样就导致用户查询的时候,在缓存中找不到,每次都要去数据库再查询一遍,然后返回空
例如 id=-1或null 或者userId=0这种情况
解决方案 特殊字段校验 或者布隆过滤器过滤 或者会缓存一个特定值返回
缓存击穿
一些热点数据没有缓存 或者 到期了没有缓存
解决方案 上线后缓存预热 提前缓存 第三方key24小时过期 缓存就设置23小时过期以防 过期后失败
缓存雪崩
多个缓存同一时间失效或到期
解决方案 缓存时间设置不一样
redis 锁分布式锁
原理 redis.setNx
但是高峰期可能设置的锁时间不够用
1锁到期但任务没执行完
2误删除其他线程锁
解决方案
1用redisson 锁
2 value值里存储不一样 删除锁时比较