男女做网站,兰州网络推广,青岛哪家公司做网站好,网站优化软件排名技术Redis的数据持久化策略有哪些
RDB的执行原理#xff1f;
bgsave开始时会fork主进程得到子进程#xff0c;子进程共享主进程的内存数据。完成fork后读取内存数据并写入 RDB 文件。 fork采用的是copy-on-write技术#xff1a; 当主进程执行读操作时#xff0c;访问共享内存…Redis的数据持久化策略有哪些
RDB的执行原理
bgsave开始时会fork主进程得到子进程子进程共享主进程的内存数据。完成fork后读取内存数据并写入 RDB 文件。 fork采用的是copy-on-write技术 当主进程执行读操作时访问共享内存 当主进程执行写操作时则会拷贝一份数据执行写操作。 因为是记录命令AOF文件会比RDB文件大的多。而且AOF会记录对同一个key的多次写操作但只有最后一次写操作才有意义。通过执行bgrewriteaof命令可以让AOF文件执行重写功能用最少的命令达到相同效果。 什么是缓存穿透怎么解决 什么是布隆过滤器
缓存穿透查询一个不存在的数据mysql查询不到数据也不会直接写入缓存就会导致每次请求都查数据库
解决方案一缓存空数据查询返回的数据为空仍把这个空结果进行缓存
优点简单 缺点消耗内存可能会发生不一致的问题
解决方案二布隆过滤器
优点内存占用较少没有多余key
缺点实现复杂存在误判
误判率数组越小误判率就越大数组越大误判率就越小但是同时带来了更多的内存消耗
用redisson实现布隆过滤器
什么是缓存击穿怎么解决
缓存击穿给某一个key设置了过期时间当key过期的时候恰好这时间点对这个key有大量的并发请求过来这些并发的请求可能会瞬间把DB压垮
解决方案一互斥锁 解决方案二逻辑过期 什么是缓存雪崩怎么解决
缓存雪崩是指在同一时段大量的缓存key同时失效或者Redis服务宕机导致大量请求到达数据库带来巨大压力
解决方案 给不同的Key的TTL添加随机值
利用Redis集群提高服务的可用性
给缓存业务添加降级限流策略
给业务添加多级缓存
redis双写问题
双写一致性当修改了数据库的数据也要同时更新缓存的数据缓存和数据库的数据要保持一致
1、延迟双删 2、 3、 Redis分布式锁如何实现、Redis实现分布式锁如何合理的控制锁的有效时长
redisson实现的分布式锁-可重入
主从一致性
RedLock(红锁)不能只在一个redis实例上创建锁应该是在多个redis实例上创建锁(n / 2 1)避免在一个redis实例上加锁
Redis的数据删除策略有哪些
惰性删除设置该key过期时间后我们不去管它当需要该key时我们在检查其是否过期如果过期我们就删掉它反之返回该key
优点 对CPU友好只会在使用该key时才会进行过期检查对于很多用不到的key不用浪费时间进行过期检查
缺点 对内存不友好如果一个key已经过期但是一直没有使用那么该key就会一直存在内存中内存永远不会释放 定期删除每隔一段时间我们就对一些key进行检查删除里面过期的key(从一定数量的数据库中取出一定数量的随机key进行检查并删除其中的过期key)
优点可以通过限制删除操作执行的时长和频率来减少删除操作对 CPU 的影响。另外定期删除也能有效释放过期键占用的内存
缺点难以确定删除操作执行的时长和频率 Redis的过期删除策略惰性删除 定期删除两种策略进行配合使用
Redis的数据淘汰策略有哪些 Redis集群有哪些方案, 知道嘛
主从复制
哨兵模式
分片集群
Redis是单线程的但是为什么还那么快
Redis是纯内存操作执行速度非常快
采用单线程避免不必要的上下文切换可竞争条件多线程还要考虑线程安全问题
使用I/O多路复用模型非阻塞IO