4.Redis的常用存储结构有哪些
String 字符串
Hash 散列 适合用于存储对象
List 列表 可以添加一个元素到头部(左边) 或者尾部(右边)
Set 集合
Sorted(苏特) set 有序集合 每一个元素关联一个double分数 成员是唯一的 分数可以重复
5.redis缓存雪崩,缓存穿透 缓存击穿
缓存雪崩
redis缓存key同一时间大量失效 导致大量请求全部打到数据库 导致数据库挂掉
扩展:解决方案
1.设置缓存失效时间 让它不要在同一时间失效 随机初始化失效时间
2.部署集群 把热点的key放在不同的节点
3.暴力方法 不设置缓存失效时间
4.定时刷缓存失效时间 在缓存失效之前 重新把redis缓存进去
缓存穿透
是指缓存和数据库都没有这种数据 例如用户请求id=-1这种数据缓存里面没有 直接打到数据
库导致数据库挂掉
扩展:解决方案
1.无论在数据库查到什么数据 都给它缓存到redis
2.将ip拉黑
3.对参数进行合法校验 如果参数不合法 直接return
4.使用布隆过滤器
缓存击穿
突然该key失效(热点的key) 一瞬间大量key的请求打到数据库上
扩展:解决方案
1.不设置缓存失效时间
2.使用分布式锁 请求数据库的时候 只有一个线程操作数据库 将查询到的数据库存到redis 其
它没有抢到锁的线程让它睡眠几秒 然后再去redis查询 这样数据库的请求就非常小
6.Redis持久化机制
ROB
在不同的时间点 将Redis中的数据生成快照 存储到硬盘当中 默认是ROB方式
AOF
把执行Redis的操作全部记录下来 在下次重启Redis的时候 重新执行所有指令
ROB和AOF可以同时使用 如果Redis重启 则会使用AOF持久化机制 因为AOF持久化恢复数据更整