使用Spring Data Redis实现缓存遇到的一些问题
使用Spring Data Redis实现缓存遇到的一些问题
scott0923 发表于2年前
使用Spring Data Redis实现缓存遇到的一些问题
  • 发表于 2年前
  • 阅读 36
  • 收藏 0
  • 点赞 1
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

摘要: Spring Data Redis使用中遇到的问题

最近项目由于部分功能数据量比较大,加载比较缓慢,为了加快加载速度使用到了Redis,主要是用通过Spring Data Redis来实现声明式缓存,Spring配置文件需要配置如下几项基本的

<bean id="redisConnectionFactory"
		class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
		<property name="hostName" value="127.0.0.1" />
		<property name="port" value="6379" />
		<property name="usePool" value="true" />
	</bean>
	<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
		<property name="connectionFactory" ref="redisConnectionFactory" />
	</bean>
	<bean id="cacheManagerRedis" class="org.springframework.data.redis.cache.RedisCacheManager">
		<constructor-arg ref="redisTemplate"></constructor-arg>
	</bean>

	<cache:annotation-driven cache-manager="cacheManagerRedis" />

上面的配置已经和Spring集成了就,我们采用声明式注解的方式@Cacheable的方式来显示的注明需要缓存,@Cacheab里面有几个可以配置的项value为cacheNames,key为缓存的键,以前用过EHChche的原因,错误的认为如果不写key就会按照方法名和方法参数来作为缓存的键,但是实验的结果却完全不一样,如果不指定一个key,也不自己实现一个keyGenerator的话那么默认就是一个空的key,这样的现象就是当你缓存第一个的时候成功,以后再缓存的话就会获取到第一个缓存的数据,因为其实缓存的key都是空的,所以要么实现一个自己的生成键的策略要么指定一个key,key的标注方式可SpEL表达式,如下:

这样就可以动态生成我们自定义的key,需注意key的唯一。目前数据同步我们是根据当缓存的数据发生CUD操作时就情况该缓存,使用@CacheEvict注解,value即为对应缓存的key。

共有 人打赏支持
粉丝 2
博文 21
码字总数 16182
×
scott0923
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: