首页 > 开发 > Java > 正文

配置Spring4.0注解Cache+Redis缓存的用法

2024-07-13 10:06:48
字体:
来源:转载
供稿:网友

前言:

目前公司项目在上一个技术架构的处理,已经搭建好了Redis,但redis/207896.html">redis只用在了做session的管理,然而 后台的对象缓存没有用上

1. redis 和 ehcache的区别:

简单了解了下,个人觉得 从部署上而言,redis更适合分布式部署,ehcache是在每台应用服务器上开辟一块内存做缓存,集群时还得考虑缓存的情况, redis就不需要考虑缓存了、单独部署在一台服务器中(也可以是在某一台应用服务器中)

2. 项目配置(spring mvc+maven+mybaits+redis),这里只讲Spring 集成 redis:

a. 配置 pom.xml 文件  (若不是maven管理项目,下载2个jar 即可 )

<!-- redis cache related.....start -->     <dependency>       <groupId>org.springframework.data</groupId>       <artifactId>spring-data-redis</artifactId>       <version>1.6.0.RELEASE</version>     </dependency>     <dependency>       <groupId>redis.clients</groupId>       <artifactId>jedis</artifactId>       <version>2.7.3</version>     </dependency>     <!-- redis cache related.....end --> 

b.配置 applicationContext.xml文件

先在<beans>中加入 cache缓存

xmlns:cache="http://www.springframework.org/schema/cache"  xsi:schemaLocation="http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-4.2.xsd" 

在Spring加载redis配置

<!-- ******************** redis缓存  **********************--> <!-- 注解一定要配置,不然不起作用 --> <cache:annotation-driven />   <!-- jedis 配置 -->   <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">     <property name="maxIdle" value="${redis.maxIdle}" />     <!--<property name="maxWaitMillis" value="${redis.maxWait}" />-->     <property name="testOnBorrow" value="${redis.testOnBorrow}" />   </bean>    <!-- redis服务器中心 -->   <bean id="connectionFactory"     class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">     <property name="poolConfig" ref="poolConfig" />     <property name="port" value="${redis.port}" />     <property name="hostName" value="${redis.hostname}" />     <!-- <property name="password" value="${redis.password}" /> -->     <property name="timeout" value="${redis.timeout}"></property>   </bean>      <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">     <property name="connectionFactory" ref="connectionFactory" />     <property name="keySerializer">       <bean         class="org.springframework.data.redis.serializer.StringRedisSerializer" />     </property>     <property name="valueSerializer">       <bean         class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" />     </property>   </bean>   <!-- 配置缓存 -->   <bean id="cacheManager" class="org.springframework.data.redis.cache.RedisCacheManager">     <constructor-arg ref="redisTemplate" />   </bean>    <!-- ******************** redis缓存  **********************--> 

c.配置 application.properties 资源文件

#redis config #redis.hostname=192.168.242.131  redis.hostname=localhost redis.port=6379  redis.timeout=2000 redis.usePool=true redis.default.db=0 #/u6700/u5927/u5206/u914D/u7684/u5BF9/u8C61/u6570   redis.maxTotal=600 #/u6700/u5927/u80FD/u591F/u4FDD/u6301idel/u72B6/u6001/u7684/u5BF9/u8C61/u6570  redis.maxIdle=300  #/u591A/u957F/u65F6/u95F4/u68C0/u67E5/u4E00/u6B21/u8FDE/u63A5/u6C60/u4E2D/u7A7A/u95F2/u7684/u8FDE/u63A5 redis.timeBetweenEvictionRunsMillis=30000  #/u7A7A/u95F2/u8FDE/u63A5/u591A/u957F/u65F6/u95F4/u540E/u4F1A/u88AB/u6536/u56DE redis.minEvictableIdleTimeMillis=30000  #/u5F53/u8C03/u7528borrow Object/u65B9/u6CD5/u65F6/uFF0C/u662F/u5426/u8FDB/u884C/u6709/u6548/u6027/u68C0/u67E5  redis.testOnBorrow=true  ########reids/u7F16/u7801/u683C/u5F0F redis.encode=utf-8 ######/u7F13/u5B58/u8FC7/u671F/u65F6/u95F4 /u79D2 1000*60*60*24*7 /u4E03/u5929 redis.expire=604800000 ####/u662F/u5426/u5F00/u542FRedis/u670D/u52A1/u5E94/u7528 redis.unlock=false 

3. 测试  

@Service("testService") public class TestServiceImpl implements ITestService {      @Resource   private ITestDao testDao;    @Cacheable(value="testId",key="'id_'+#id")   public Test getTestById(int id) {     return this.testDao.getObjById(id);   }      @CacheEvict(value="testId",key="'id_'+#id")   public void removeTestById(int id) {        } } 

结果:

第一次 进入Service方法

第二次 不进入service方法 也得到了值

注: 有朋友会问,启动访问时保错, 那是因为本地未启动redis服务, 下载win32/win64版的,启动 再访问就不会报错

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持VeVb武林网。


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表