全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

前言:

目前公司项目在上一个技术架构的处理,已经搭建好了Redis,但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版的,启动 再访问就不会报错

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


# spring  # redis缓存注解  # spring4  # redis  # 注解  # 详解Spring缓存注解@Cacheable  # @CachePut   #  @CacheEvict使用  # spring boot+spring cache实现两级缓存(redis+caffeine)  # Spring Boot 中使用cache缓存的方法  # SpringBoot手动使用EhCache的方法示例  # 详解springboot整合ehcache实现缓存机制  # springboot集成spring cache缓存示例代码  # SpringCache快速使用及入门案例  # 是在  # 就不  # 器中  # 好了  # 一台  # 还得  # 也得  # 报错  # 在上  # 用在  # 若不是  # 先在  # 那是因为  # 更适合  # 大家多多  # 每台  # 不起作用  # 只讲  # 器上  # 加载 


相关文章: 如何快速搭建二级域名独立网站?  头像制作网站在线制作软件,dw网页背景图像怎么设置?  如何快速上传建站程序避免常见错误?  赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?  如何在阿里云ECS服务器部署织梦CMS网站?  如何设计高效校园网站?  北京建设网站制作公司,北京古代建筑博物馆预约官网?  深圳网站制作的公司有哪些,dido官方网站?  如何在Golang中使用replace替换模块_指定本地或远程路径  如何挑选优质建站一级代理提升网站排名?  如何在VPS电脑上快速搭建网站?  建站之星客服服务时间及联系方式如何?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  如何批量查询域名的建站时间记录?  免费制作小说封面的网站有哪些,怎么接网站批量的封面单?  ,柠檬视频怎样兑换vip?  网站代码制作软件有哪些,如何生成自己网站的代码?  哈尔滨网站建设策划,哈尔滨电工证查询网站?  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  上海网站制作开发公司,上海买房比较好的网站有哪些?  网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?  如何高效生成建站之星成品网站源码?  建站上传速度慢?如何优化加速网站加载效率?  制作旅游网站html,怎样注册旅游网站?  个人网站制作流程图片大全,个人网站如何注销?  网站制作公司排行榜,抖音怎样做个人官方网站  一键网站制作软件,义乌购一件代发流程?  如何快速选择适合个人网站的云服务器配置?  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  陕西网站制作公司有哪些,陕西凌云电器有限公司官网?  建站之星后台密码遗忘如何找回?  如何制作一个表白网站视频,关于勇敢表白的小标题?  Java解压缩zip - 解压缩多个文件或文件夹实例  如何破解联通资金短缺导致的基站建设难题?  c++怎么用jemalloc c++替换默认内存分配器【性能】  外贸公司网站制作,外贸网站建设一般有哪些步骤?  如何选择高效稳定的ISP建站解决方案?  如何在香港免费服务器上快速搭建网站?  七夕网站制作视频,七夕大促活动怎么报名?  上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?  如何快速查询网站的真实建站时间?  黑客入侵网站服务器的常见手法有哪些?  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  如何解决VPS建站LNMP环境配置常见问题?  枣阳网站制作,阳新火车站打的到仙岛湖多少钱?  php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】  C++如何编写函数模板?(泛型编程入门)  微信小程序 五星评分(包括半颗星评分)实例代码  如何高效搭建专业期货交易平台网站?  如何快速登录WAP自助建站平台? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。