缓存设计原则当然是离用户越近越好。
Screen Shot 2022-06-11 at 12.59.26 PM.pngnginx分发层,nginx openrestry层需要做ip-hash的设置.
lua动态渲染模板+html+本地缓存.
web层: redis-cache或者Ehcache缓存数据。
MQ:
会员服务,商品,库存,交易,仓储状态微服务.
- 缓存空对象 2. 布隆过滤器 3. 缓存失效(击穿)
热点缓存Key重建优化策略
互斥锁
缓存不一致问题:
- 并发概率很小的情况(个人维度的订单数据,用户数据),这种加上缓存失效时间就可以了。
- 并发较高,比如商品名称,菜单这种,加上缓存过期时间可以解决大部分业务场景对于缓存的要求
- 如果不能容忍缓存一致性问题,延迟双删或者读写锁保证并发读写或者写写的按照顺序。 读读相当于是无锁的
- canal
- bigkeys
big hash ,拆分大的key,成为多个小的key.
-
key 设计.
业务名:表名: id -
redis 事务功能弱,建议用Lua进行代替
缓存雪崩问题
sentinel 做熔断限制
- Redis过期健三种策略
定时,惰性,定期
对cpu不友好
对内存不友好,对cpu友好
隔断时间去检查一次
- 淘汰策略
- noeviction
- 淘汰数据:
2.1 设置了过期数据:采取的策略
volatile-lru
volatile-random
volatile-ttl
2.2 allkeys-lru (针对所有的数据采用的策略)
allkeys-random
allkeys-lfu
网友评论