中间件-Redis-运维经验总结

一、Redis缓存更新策略

1、当内存超过maxmemory阈值后,对数据进行剔除,具体选择的剔除算法可通过maxmemory-policy配置LRU/LFU算法。一致性最差,是保底的策略。

2、给缓存数据设置超时时间,过期后自动删除。存在一个数据不一致的窗口。

3、主动更新。一致性最好。

二、Redis缓存穿透

缓存穿透导致不存在的数据每次请求都会到存储层查询,失去了缓存保护存储层的意义。

1、缓存空对象。会带来数据不一致的问题。

2、布隆过滤器拦截。

三、集群节点过多对批量操作的影响。

1、串行命令:编程简单,key量大了时延迟大,O(keys);

2、串行IO:编程简单,节点少时可以,但节点多了延迟严重,O(nodes);

3、并行IO:编程复杂,O(max_slow(nodes));

4、hash_tag:性能最高,维护成本较高,容易出现数据倾斜,O(1);

四、Redis缓存雪崩

1、缓存key有效期随机;

2、限流和降级​​​​​​​;

五、配置参数说明

1、vm.overcommit_memory

#cat /proc/sys/vm/overcommit_memory

#echo "vm.overcommit_memory=1" >> /etc/sysctl.conf

#sysctl vm.overcommit_memory=1

六、最佳实践

1、Redis设置maxmemory,保证机器有20%-30%的空闲内存。

2、集中管理AOF重写和RDB的bgsave。

3、设置vm.overcommit_memory=1。

你可能感兴趣的:(中间件,缓存技术)