spring-data-redis 的优缺点

本文介绍Spring Data Redis的缓存机制,包括@Cacheable、@CachePut和@CacheEvict注解的使用方法,以及Spring如何通过CacheManagerBean支持不同的缓存实现。
spring-data-redis是由spring的 cache api 整合 redis 而来,它的命名规则由spring cache 的规则来定义key和对key的管理,进一步弱化redis的API。

事实上redis提供的功能已经足够强大,并且可以直接使用,同时支持灵活的分库。

spring 的 cache 功能主要由 @Cacheable @CacheEvict @CachePut 实现
@Cacheable 主要针对方法配置,能够根据方法的请求参数对其结果进行缓存
@CachePut 主要针对方法配置,能够根据方法的请求参数对其结果进行缓存,和 @Cacheable 不同的是,它每次都会触发真实方法的调用
@CachEvict 主要针对方法配置,能够根据一定的条件对缓存进行清空

默认情况下Spring使用CacheManagerBean 来实现,其实现有3种:EHCache,Redis,ConcurrentHashMap,默认的ConcurrentHashMap 是没有过期的。

Redis 的使用也是要自己手动调 expire ,所以暂时使用原生的 jedis ,直接调用 redis 的api
java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String at org.springframework.data.redis.serializer.StringRedisSerializer.serialize(StringRedisSerializer.java:36) ~[spring-data-redis-2.6.2.jar:2.6.2] at org.springframework.data.redis.core.script.DefaultScriptExecutor.keysAndArgs(DefaultScriptExecutor.java:112) ~[spring-data-redis-2.6.2.jar:2.6.2] at org.springframework.data.redis.core.script.DefaultScriptExecutor.lambda$execute$0(DefaultScriptExecutor.java:60) ~[spring-data-redis-2.6.2.jar:2.6.2] at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:223) ~[spring-data-redis-2.6.2.jar:2.6.2] at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:190) ~[spring-data-redis-2.6.2.jar:2.6.2] at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:177) ~[spring-data-redis-2.6.2.jar:2.6.2] at org.springframework.data.redis.core.script.DefaultScriptExecutor.execute(DefaultScriptExecutor.java:58) ~[spring-data-redis-2.6.2.jar:2.6.2] at org.springframework.data.redis.core.script.DefaultScriptExecutor.execute(DefaultScriptExecutor.java:52) ~[spring-data-redis-2.6.2.jar:2.6.2] at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:344) ~[spring-data-redis-2.6.2.jar:2.6.2] at com.hmdp.service.impl.VoucherOrderServiceImpl.seckillVoucher(VoucherOrderServiceImpl.java:102) ~[classes/:na] at com.hmdp.service.impl.VoucherOrderServiceImpl$$FastClassBySpringCGLIB$$ba28bb10.invoke(<generated>) ~[classes/:na] at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:779) ~[spring-aop-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.s
04-01
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值