缓存使用的一些注意事项

最近在项目中使用了很多缓存技术,包括局部缓存,远程集中式缓存,分布式缓存,在缓存的使用中也发现一些问题,整体总结如下:

1 使用局部缓存要注意内存溢出

一般局部缓存使用Map来实现,很容易无限制的往Map中填入数据,导致内存溢出。最好的方法就是使用SoftReference引用对象,而不是强引用对象

2 在分布式环境下使用局部缓存,如果缓存是同一类数据,比如同一张表的数据库配置,则需要考虑一个同步措施,保证各个集群之间的数据是在一致的。

一般情况下,需要每台集群机器定时刷新缓存,在刷新缓存的时候,注意要对缓存加锁。这种情况下,需要对某一时刻,个台机器之间的缓存状态是不一致的。

3 远程集中缓存需要考虑远程调用开销和缓存对象的序列化和反序列化开销。

远程缓存就需要通过远程调用缓存服务器来实现,远程调用开销比较大,所以缓存对象设置的要合理,避免获取一个完成对象的时候时候多次访问缓存信息。又由于序列化和反序列化的开销,缓存对象要尽可能的小。

4 远程集中式缓存需要考虑单点问题。如果缓存服务器宕机,所有的对缓存访问都失效。需要考虑备份的缓存服务器。

5 分布式缓存需要考虑缓存对象的分配算法,分配算法很重要,需要缓存请求能够平均的分配到各台缓存服务器。尤其当缓存机器增加一台或者减少一台的时候,分配算法需要考虑哈希一致性的问题。

6 分布式缓存也会存在某写缓存服务器宕掉问题,会影响1/N的缓存访问。

作者:猫叔玩流量
14年互联网技术、产品、运营经验,前支付宝技术专家,互金创业公司CTO,大令保事业部总经理。
在互金领域有比较强的产品以及运营经验,尤其擅长用户增长、转化、运营上的经验,兼具技术、产品、运营思维。
目前是云猫增长实验室 创始人

云猫增长实验室是一家致力于帮助中小企业主、个人品牌提升流量运营能力的增长团队。
团队成员来自阿里等国内知名互联网公司,曾在互联网金融、互联网保险、企业级SaaS等项目中负责用户增长,团队管理的工作,拥有丰富的一线流量增长经验与实操手段。

欢迎关注我们,用技术驱动增长

B站专栏:云猫增长实验室
本人版权归作者和博客园所有,欢迎转载,转载请注明出处

原文地址:https://www.cnblogs.com/aigongsi/p/2531232.html