缓存
1、缓存目的是减少db压力,提高数据访问速度,降低服务相应时间,给用户良好的体验。
2、缓存工具:readis、memcached
3、缓存监测工具:zabbix、MemAdmin、Redis-star
4、配置策略
配置策略需要考虑以下维度:业务场景、时效性、粒度、容量、命中率
(1)业务场景
某业务访问量高,或一个读多写少,或并发高的业务可以使用缓存策略。如借贷类APP,从注册、认证、绑卡、充值、提现,还款提醒都需要用户ID、手机号、身份证号等信息,甚至很多服务架构中,直接将用户服务作为一个单独服务。此时可以考虑为用户信息设计缓存,将用户常用的信息包装缓存。
(2)粒度
redis支持字符串、hash散列、list、set、有序集合。(1)中介绍的缓存用户数据,我们可以缓存用户所有信息,或部分信息,或全部信息的集合等方式,可是缓存为了高速,一般存放与内存,而且缓存也是需要更新,否则信息失效导致不准确,当用户信息以list存储,有一个用户信息发生变化,更新会消耗很多资源却不具简洁。所以,缓存粒度也需要按需而定。
(3)时效性
用户某些关键信息是固定的如身份证,那么身份证号具有永久性(不会更新),即缓存后不会失效。对于有定期变更信息,需要根据变更的频率,设置适当的失效时间,过期后失效,或过期后更新。
(4)容量
内存容量相比硬盘十分可贵,设计缓存需要考虑内存使用情况,根据服务选用单台或分布式缓存。redis支持数据持久化到硬盘。
5、命中率
缓存实际效果可以使用命中率反应。命中率=取值成功数/总取值操作数,假设获取用户信息,取了100次,有96次取到值,那命中率=96/100=96%,命中率越高效果越好,可以通过缓存监测工具查看命中率。配置策略中提到的几个因素均会影响命中率,且不是单独影响。如用户缓存策略需考虑:业务中经常用到的用户信息封装存储,根据信息变更频率设置时效时间和更新策略,选取一个合适的容量。
附:参考