- Spring cache是代码级的缓存,一般是使用一个ConcurrentMap,也就是说实际上还是是使用JVM的内存来缓存对象的,这势必会造成大量的内存消耗。但好处是显然的:使用方便。
- Redis 作为一个缓存服务器,是内存级的缓存。它是使用单纯的内存来进行缓存。
- 集群环境下,每台服务器的spring cache是不同步的,这样会出问题的,spring cache只适合单机环境。
- Redis是设置单独的缓存服务器,所有集群服务器统一访问redis,不会出现缓存不同步的情况。
Spring cache的基本原理:
和 spring 的事务管理类似,spring cache 的关键原理就是 spring AOP,通过 spring AOP,其实现了在方法调用前、调用后获取方法的入参和返回值,进而实现了缓存的逻辑。
补充:
什么样的数据需要放进缓存呢?把数据放入缓存,有三个标准:
- 数据量不大
- 访问频率高
- 数据更改频率低