缓存使用的一些注意事项

简介:

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

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

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

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

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

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

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

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

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

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


本文转自快乐就好博客园博客,原文链接:http://www.cnblogs.com/happyday56/p/3890219.html,如需转载请自行联系原作者
相关文章
|
2月前
|
缓存 NoSQL 网络安全
【Azure Redis 缓存 Azure Cache For Redis】Azure Redis由低级别(C)升级到高级别(P)的步骤和注意事项, 及对用户现有应用的潜在影响,是否需要停机时间窗口,以及这个时间窗口需要多少的预估问题
【Azure Redis 缓存 Azure Cache For Redis】Azure Redis由低级别(C)升级到高级别(P)的步骤和注意事项, 及对用户现有应用的潜在影响,是否需要停机时间窗口,以及这个时间窗口需要多少的预估问题
|
5月前
|
存储 缓存 监控
中间件Read-Through Cache(直读缓存)策略注意事项
【5月更文挑战第11天】中间件Read-Through Cache(直读缓存)策略注意事项
33 2
|
存储 JSON 缓存
关于本地缓存localstorage与sessionStorage 数组 (array)字符串(string) 对象(object)的存储技巧和注意事项
localstorage与sessionStorage的使用方法都是一样的 唯一的区别在与 localstorage是永久储存在你的计算机上  sessionstorage只要浏览器关闭,存储就消失 <!DOCTYPE html> <html> <head> <title>本地缓存</title> </head&g
1555 0
|
缓存 .NET 开发框架
ASP.net里不让浏览器缓存代码和Session使用注意事项
          //不让浏览器缓存             context.Response.Buffer = true;             context.
759 0
|
23天前
|
canal 缓存 NoSQL
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
根据对一致性的要求程度,提出多种解决方案:同步删除、同步删除+可靠消息、延时双删、异步监听+可靠消息、多重保障方案
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
|
2月前
|
缓存 NoSQL Redis
【Azure Redis 缓存】Redission客户端连接Azure:客户端出现 Unable to send PING command over channel
【Azure Redis 缓存】Redission客户端连接Azure:客户端出现 Unable to send PING command over channel
|
2月前
|
缓存 NoSQL Java
Redis深度解析:解锁高性能缓存的终极武器,让你的应用飞起来
【8月更文挑战第29天】本文从基本概念入手,通过实战示例、原理解析和高级使用技巧,全面讲解Redis这一高性能键值对数据库。Redis基于内存存储,支持多种数据结构,如字符串、列表和哈希表等,常用于数据库、缓存及消息队列。文中详细介绍了如何在Spring Boot项目中集成Redis,并展示了其工作原理、缓存实现方法及高级特性,如事务、发布/订阅、Lua脚本和集群等,帮助读者从入门到精通Redis,大幅提升应用性能与可扩展性。
60 0
|
24天前
|
存储 NoSQL Redis
SpringCloud基础7——Redis分布式缓存,RDB,AOF持久化+主从+哨兵+分片集群
Redis持久化、RDB和AOF方案、Redis主从集群、哨兵、分片集群、散列插槽、自动手动故障转移
SpringCloud基础7——Redis分布式缓存,RDB,AOF持久化+主从+哨兵+分片集群
|
2天前
|
缓存 NoSQL Java
Springboot自定义注解+aop实现redis自动清除缓存功能
通过上述步骤,我们不仅实现了一个高度灵活的缓存管理机制,还保证了代码的整洁与可维护性。自定义注解与AOP的结合,让缓存清除逻辑与业务逻辑分离,便于未来的扩展和修改。这种设计模式非常适合需要频繁更新缓存的应用场景,大大提高了开发效率和系统的响应速度。
9 2
|
7天前
|
存储 缓存 NoSQL
解决Redis缓存击穿问题的技术方法
解决Redis缓存击穿问题的技术方法
21 2
下一篇
无影云桌面