您的位置:首页 > 数据库 > Redis

使用Spring Data Redis实现缓存遇到的一些问题

2016-04-14 00:00 931 查看
摘要: 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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: