网站关键词设置数量,网页游戏哪个平台最好,商标查询免费,网站建设建网站做网站网站设计目录 Day 2.25
异步子线程机制
CPU架构类型#xff0c;以及可能产生的影响
Day 2.26
redis 缓存与后端 MySQL 数据不一致问题
redis 缓存异常问题 #xff08;缓存雪崩#xff0c;缓存击穿#xff0c;缓存穿透#xff09;及 解决措施
布隆过滤器实现原理 Day 2.25
…目录 Day 2.25
异步子线程机制
CPU架构类型以及可能产生的影响
Day 2.26
redis 缓存与后端 MySQL 数据不一致问题
redis 缓存异常问题 缓存雪崩缓存击穿缓存穿透及 解决措施
布隆过滤器实现原理 Day 2.25
学习了导致redis高性能的原因除去高效数据结构和内存数据库以外的原因。 异步子线程机制 CPU架构对redis性能的影响
异步子线程机制
针对阻塞点可能需要异步处理避免阻塞主线程。
egBigKey (键值对) 删除操作、清空数据库操作、AOF日志同步写操作AOF异步刷盘、从库加载RDB文件、集合的全量查询和聚合操作 O(N)。
思考一个问题AOF日志同步写操作我知道会阻塞那读写缓存中的同步直写策略是否也会阻塞会
两者阻塞之后的处理是否一致不一致。 同步直写在redis主线程中完成AOF刷盘是异步完成的。 哪些操作可以采取异步子线程处理的形式
多数写操作、无需带回返回值的非关键路径操作
egBigKey 删除操作、数据库清空操作、AOF日志同步写操作、大文件关闭. CPU架构类型以及可能产生的影响
单CPU单核 不存在由于程序在不同核上运行导致的 context switch 以及 缓存失效 问题
单CPU多核存在 context switch 和 缓存失效问题解决办法bind_cpu_core.
多CPU多核NUMA 架构非统一内存访问架构存在远程内存访问问题不在一个CPU Socket处理器上面解决办法绑到一起避免远程内存访问。
将Redis实例绑定核心的弊端多程序资源竞争措施绑定物理核或者直接修改源码将不同程序绑定到不同逻辑核上。 Day 2.26 redis 缓存与后端 MySQL 数据不一致问题 redis 缓存异常问题 缓存雪崩缓存击穿缓存穿透及 解决措施
redis 缓存与后端 MySQL 数据不一致问题
一致性描述 缓存中有数据且缓存中数据与后端MySQL数据一致. 缓存中无数据且后端MySQL数据是最新值.
出现情况
针对读写缓存必须同步直写操作才能保障数据一致.
采用异步写回策略必然会出现这个数据不一致问题。写回前都是不一致的.
解决策略用同步只写不就OK了. 针对只读缓存
eg1在修改或者删除操作的时候需要同时操作缓存和数据库既要跟新数据库删除数据库中的数据、还要删除对应缓存。 两者操作如果只完成其一自然会出现读取旧值的问题。
解决策略用消息队列缓存重试 【重试机制】
eg2两者操作均完成但是无法保障原子性问题。大量的线程并发读取操作的时候其他线程切入进来读取到旧值并可能利用旧值做缓存跟新操作导致数据不一致。
解决策略延迟双删。 redis 缓存异常问题 缓存雪崩缓存击穿缓存穿透及 解决措施
What How?
雪崩大量的请求无法在redis中进行处理导致压力给到后端MySQL可能导致MySQL崩溃.
击穿在redis中的超级热点数据过期redis中没有大量请求压到MySQL上.
穿透请求数据不在redis中同时也不在MySQL上. redis彻底沦为 “摆设”.
雪崩分类解决措施 redis大量数据同时过期 解决1给过期时间设置随机值避免同时. 解决2服务降级只提供核心数据的访问服务有点像限流但是是按照数据的重要程度做的限制. redis实例发生宕机 解决1访问熔断 暂停服务对业务影响大待redis实例恢复. 解决2访问限流限制访问量待redis实例恢复. 解决3高可用策略设置redis实例集群主从复制容灾容错自动切换. 击穿解决策略 不给特别热点的数据设置过期时间. 穿透解决策略 针对不存在的数据设置空置缓存缺省值缓存。直接返回空值. 使用布隆过滤器判断数据是否存在. 前端进行请求合法性检测避免恶意攻击. 布隆过滤器实现原理
描述创建阶段就是一个hash函数族算出这个不同的hash值然后 hash_value % hash_table_len 映射到不同的hash槽位上并且将这个bite位设置为1。若后续数据再次来临。依次检验hash_value对应槽位是否全为1. 若非则数据不存在若全1则可能存在。
作用过滤去除一定不存在的数据。