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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 自己不长记性怎么办 孩子不愿意开口说话怎么办 孩子不爱开口说话怎么办 宝宝犟脾气不好怎么办 小孩说话不算话怎么办 孩子说话不算话怎么办 孩子故意不好好说话怎么办 小孩说话吐字不清楚怎么办 腿老是抽筋是怎么办 半夜睡觉脚抽筋怎么办 我不爱说话内向怎么办 小孩子吐字不清怎么办 宝宝前边头发少怎么办 宝宝咬嘴唇龅牙怎么办 小孩老是咬下唇怎么办 五月小孩掉下床怎么办 小孩说话夹舌头怎么办 小孩自闭不说话怎么办 孩子突然不说话怎么办 孩子说话语速慢怎么办 做磁共振不睡觉怎么办 宝宝吃饭不多怎么办 孩子吃饭爱说话怎么办 孩子吃饭喜欢说话怎么办 小孩子讲话嘴巴歪怎么办 小孩有自闭倾向怎么办 小孩笨反应慢怎么办 2岁不会说话怎么办 老公冷战不说话怎么办 小孩个子不高怎么办 额头发际线不齐怎么办 婴儿睡眠时间少怎么办 智商低不会说话怎么办 说话老是喷口水怎么办 数胎动宝宝不动怎么办 早教业绩不好怎么办 宝宝一岁还不会走路怎么办 两岁半宝宝开始叛逆怎么办 两岁半宝宝很叛逆怎么办 两岁半宝宝特别叛逆怎么办 小儿说不了话怎么办