Spring cache+ redis与redis 的比较
来源:互联网 发布:mac的pages怎么保存 编辑:程序博客网 时间:2024/05/20 22:41
1. 缓存级别不同
Spring cache是代码级的缓存,他一般是使用一个ConcurrentMap。也就是说实际上还是是使用JVM的内存来缓存对象的,
那么肯定会造成大量的内存消耗。但是使用方便。
Redis 作为一个缓存服务器,是内存级的缓存。它是使用单纯的内存来进行缓存。
2. sprirng cache+redis的好处
那么Spring cache +redis的好处显而易见了。既可以很方便的缓存对象,同时用来缓存的内存的是使用redis的内存,不会消耗JVM的内存,提升了性能。当然这里Redis不是必须的,换成其他的缓存服务器一样可以,只要实现Spring的Cache类,并配置到XML里面就行了。
3.集群环境下的springcache+redis
集群环境下,每台服务器的spring cache是不同步的,这样会出问题的,spring cache只适合单机环境
redis是设置单独的缓存服务器,所有集群服务器统一访问redis,不会出现缓存不同步的情况
spring cache是很早就有的东西,现在+redis是为了顺应时代,更好的兼容集群环境,加强保留spring cache功能,不如直接使用redis
4. spring cache基本原理
和 spring 的事务管理类似,spring cache 的关键原理就是 spring AOP,通过 spring AOP,其实现了在方法调用前、调用后获取方法的入参和返回值,进而实现了缓存的逻辑。我们来看一下下面这个图:
图 2. 原始方法调用图
上图显示,当客户端“Calling code”调用一个普通类 Plain Object 的 foo() 方法的时候,是直接作用在 pojo 类自身对象上的,客户端拥有的是被调用者的直接的引用。
而 Spring cache 利用了 Spring AOP 的动态代理技术,即当客户端尝试调用 pojo 的 foo()方法的时候,给他的不是 pojo 自身的引用,而是一个动态生成的代理类
图 3. 动态代理调用图
如上图所示,这个时候,实际客户端拥有的是一个代理的引用,那么在调用 foo() 方法的时候,会首先调用 proxy 的 foo() 方法,这个时候 proxy 可以整体控制实际的 pojo.foo() 方法的入参和返回值,比如缓存结果,比如直接略过执行实际的 foo() 方法等,都是可以轻松做到的。
2 0
- Spring cache+ redis与redis 的比较
- redis与Spring Cache的整合
- redis与spring cache集成
- Redis的安装、部署和与Spring Cache整合
- spring cache 与redis缓存整合
- Springboot中Spring-cache与redis整合
- Spring Cache与Redis结合使用
- Spring Cache集成redis
- Spring Cache注解+Redis
- Spring Cache集成redis
- Spring cache +redis
- Spring Cache注解+Redis
- spring boot 下 shiro+redis与mybatis redis cache冲突的解决办法
- spring+redis(redis当cache使用)
- Redis与Memcached的比较
- Redis与Memcached的比较
- Redis与Memcached的比较
- Redis与Memcached的比较
- LINQ读书笔记(一)
- T级数据搜索中值思路
- C语言初级练习
- java多态性
- UML系列图--实现图(构件图 Component 和部署图Deployment)
- Spring cache+ redis与redis 的比较
- 7.5.4
- hdu Card Game
- leetcode-273-Delete Node in a Linked List
- codeforces 392 div2 D ability to convert
- 蓝桥杯心得
- 配置maven环境和创建第一个maven项目
- 微信小程序输入框大全
- 九数组分数