spring结合redis实现缓存,主要是cache和cachemanager,建议看看源码,确实很好用
来源:互联网 发布:淘宝营销案例 编辑:程序博客网 时间:2024/06/04 18:55
配置xml文件:spring自己提供 RedisCacheManager类,因为自己的需要可以自己实现这个类,也可以实例化spring的其它cacheManager类
<!-- redis pool相关配置 --><bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig"><!-- 最小空闲数 --><property name="minIdle" value="${redis.minIdle}" /><!-- 最大空闲数 --><property name="maxIdle" value="${redis.maxIdle}" /><!-- 最大连接数 --><property name="maxTotal" value="${redis.maxTotal}" /><!-- 最大等待时间 单位毫秒(ms) --><property name="maxWaitMillis" value="${redis.maxWaitMillis}" /><!-- 使用连接时测试连接是否可用 --><property name="testOnBorrow" value="${redis.testOnBorrow}" /></bean><!-- jedis客户端连接工厂 --><bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"><property name="poolConfig" ref="poolConfig" /><property name="database" value="${redis.database}" /><property name="port" value="${redis.port}" /><property name="hostName" value="${redis.host}" /><property name="password" value="${redis.password}" /></bean><!-- redisTemplate模板 --><bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"><property name="connectionFactory" ref="jedisConnectionFactory" /></bean><!-- redis缓存管理器 --><bean id="cacheManager" class="org.gyy.redis.spring_redis.RedisCacheManager"><constructor-arg name="redisOperations" ref="redisTemplate" /><!-- 是否事务提交,如果事务回滚,缓存也回滚,默认false --><property name="transactionAware" value="true" /><!-- 设置缓存超时时间 已实现自动续期 如果不设置将永久存在 --><property name="expires"><map><!-- 模块信息相关缓存配置 --><entry key="cache_module" value="1800" /></map></property></bean><!-- 支持缓存注解 --><cache:annotation-driven cache-manager="cacheManager" />properties文件:
###Redis缓存配置#缓存池最小空闲数redis.minIdle=5#缓存池最大空闲数redis.maxIdle=100#缓存池最大连接数redis.maxTotal=300#最大等待时间redis.maxWaitMillis=3000#使用连接时是否测试可用redis.testOnBorrow=true#主机地址redis.host=#主机端口redis.port=6379#主机密码redis.password=#数据库下标redis.database=4
spring提供了很方便的注解缓存的方法,只需要在方法上面注解就可以自动使用缓存,不需要自己手动去操作,这里有一个小坑,注解缓存时key最好不要用integer类型,
因为你手动去获取的时候key支持是string类型,就会拿不到,
@Cacheable、@CachePut、@CacheEvict 注释介绍
表 1. @Cacheable 作用和配置方法
@Cacheable 的作用 主要针对方法配置,能够根据方法的请求参数对其结果进行缓存@Cacheable 主要的参数value缓存的名称,在 spring 配置文件中定义,必须指定至少一个例如:@Cacheable(value=”mycache”) 或者
@Cacheable(value={”cache1”,”cache2”}key缓存的 key,可以为空,如果指定要按照 SpEL 表达式编写,如果不指定,则缺省按照方法的所有参数进行组合例如:
@Cacheable(value=”testcache”,key=”#userName”)condition缓存的条件,可以为空,使用 SpEL 编写,返回 true 或者 false,只有为 true 才进行缓存例如:
@Cacheable(value=”testcache”,condition=”#userName.length()>2”)
------------------------------------------------------------
--////////////////////////////////////////////////////////////////////////////////
表 2. @CachePut 作用和配置方法
@CachePut 的作用 主要针对方法配置,能够根据方法的请求参数对其结果进行缓存,和 @Cacheable 不同的是,它每次都会触发真实方法的调用@CachePut 主要的参数value缓存的名称,在 spring 配置文件中定义,必须指定至少一个例如:@Cacheable(value=”mycache”) 或者
@Cacheable(value={”cache1”,”cache2”}key缓存的 key,可以为空,如果指定要按照 SpEL 表达式编写,如果不指定,则缺省按照方法的所有参数进行组合例如:
@Cacheable(value=”testcache”,key=”#userName”)condition缓存的条件,可以为空,使用 SpEL 编写,返回 true 或者 false,只有为 true 才进行缓存例如:
@Cacheable(value=”testcache”,condition=”#userName.length()>2”)
//////////////////////////////////////////////////////
表 3. @CacheEvict 作用和配置方法
@CachEvict 的作用 主要针对方法配置,能够根据一定的条件对缓存进行清空@CacheEvict 主要的参数value缓存的名称,在 spring 配置文件中定义,必须指定至少一个例如:@CachEvict(value=”mycache”) 或者
@CachEvict(value={”cache1”,”cache2”}key缓存的 key,可以为空,如果指定要按照 SpEL 表达式编写,如果不指定,则缺省按照方法的所有参数进行组合例如:
@CachEvict(value=”testcache”,key=”#userName”)condition缓存的条件,可以为空,使用 SpEL 编写,返回 true 或者 false,只有为 true 才清空缓存例如:
@CachEvict(value=”testcache”,
condition=”#userName.length()>2”)allEntries是否清空所有缓存内容,缺省为 false,如果指定为 true,则方法调用后将立即清空所有缓存例如:
@CachEvict(value=”testcache”,allEntries=true)beforeInvocation是否在方法执行前就清空,缺省为 false,如果指定为 true,则在方法还没有执行的时候就清空缓存,缺省情况下,如果方法执行抛出异常,则不会清空缓存例如:
@CachEvict(value=”testcache”,beforeInvocation=true)
阅读全文
0 0
- spring结合redis实现缓存,主要是cache和cachemanager,建议看看源码,确实很好用
- 使用spring cacheManager配置Guava Cache和Redis Cache
- 使用spring cacheManager配置Guava Cache和Redis Cache
- Spring Cache+Redis实现自定义注解缓存
- spring aop结合redis实现数据缓存
- Spring Cache抽象详解,一篇很好的spring Cache的解释文章,结合源码更加让人容易懂
- 注解Spring Cache+Redis缓存
- spring结合redis如何实现数据的缓存
- spring结合redis如何实现数据的缓存
- spring结合redis如何实现数据的缓存
- spring结合redis如何实现数据的缓存
- spring结合redis如何实现数据的缓存
- 数据缓存---Spring Redis Cache 缓存
- spring boot整合redis,实现shiro的CacheManager
- Spring Cache与Redis结合使用
- 6 SpringBoot数据缓存Cache [Guava和Redis实现]
- spring cache 与redis缓存整合
- spring cache使用redis做缓存
- 【javascript】数组那些事儿
- Vuejs之路之--style和class的绑定
- TensorFlow的 数据和参数的输入 及变量存储
- python中如何才能采用中文注释
- 1064. 朋友数(20)
- spring结合redis实现缓存,主要是cache和cachemanager,建议看看源码,确实很好用
- 03,进入Java的世界
- spring aop获取目标对象的方法对象(包括方法上的注解)
- 网络设置
- HDU 6106 (2017 多校训练赛6 1011)Classes
- Python 闭包
- 迅捷CAD转换器解决CAD文件版本转换问题
- LeetCode 11. Container With Most Water --多个点的x轴垂直线与x轴围成的最大矩形面积
- stm8的I2C库的使用