redis大杂烩
redis 基础的五种数据结构: string, hash ,list (双向链表) ,set(不重复集合),zset(跳表)
1.redis的3种问题:
缓存雪崩:大量缓存过期时间一致导致 同时过期,大量请求到数据库崩了。解决方案: 差异化过期时间
缓存击穿:正在被大量请求的热键突然过期导致大量请求执行到了数据库。解决方案:1.热点数据写入到内存缓存中。2.热点数据永不过期。3.加锁。串行访问数据库。第一个访问到数据到写入到redis,其他的就不会再访问到数据库了。
缓存穿透:访问缓存和数据库中都不存在的值,比如 id=-1这种,会一直将请求执行到数据库。高并发会导致数据库崩溃。 解决方案:将这种数据也缓存在redis中,(-1,null)。
2.分布式中数据一致性问题:延迟双删策略:先更新数据库数据,再删除缓存中数据,再2,3s后再删除缓存数据。
主要解决多个请求的互相干扰问题。(两个更新一个读操作的数据一致性问题)
3.redis的rdb和aof:
rdb 将缓存快照异步写入到磁盘文件:会存在数据丢失
aof 将操作日志同步写入到磁盘文件:文件比较大