@File
2019-11-28T09:46:32.000000Z
字数 4074
阅读 216
java
<!-- redis --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><!-- fastjson --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.46</version></dependency><!-- pool 连接池 --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId><version>2.7.0</version></dependency>
spring:redis:# 选库:0~16database: 0# ip地址host: 127.0.0.1# 端口号port: 6379# 密码#password:jedis:pool:# 连接池最大连接数(使用负值表示没有限制)max-active: 200# 连接池最大阻塞等待时间(使用负值表示没有限制)max-wait: -1ms# 连接池中的最大空闲连接max-idle: 10# 连接池中的最小空闲连接min-idle: 0# 连接超时时间timeout: 1000ms
lettuce:pool:min-idle:max-active:
@Configurationpublic class RedisConfiguration {/*** 注册 RedisTemplate* @param factory* @return*/@Beanpublic RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory factory){RedisTemplate<String,Object> redisTemplate = new RedisTemplate<>();// 注册到系统中去redisTemplate.setConnectionFactory(factory);// 1.2.36 低版本GenericFastJsonRedisSerializer serializer = new GenericFastJsonRedisSerializer();// 需要改 value 序列化方式redisTemplate.setValueSerializer(serializer);// 修改 key 序列化方式redisTemplate.setKeySerializer(new StringRedisSerializer());return redisTemplate;}/*** 注册 hash* @param redisTemplate* @return*/@Beanpublic HashOperations<String,String,Object> hashOperations(RedisTemplate<String,Object> redisTemplate){return redisTemplate.opsForHash();}/*** 注册 list* @param redisTemplate* @return*/@Beanpublic ListOperations<String,Object> listOperations(RedisTemplate<String,Object> redisTemplate){return redisTemplate.opsForList();}/*** 注册 value* @param redisTemplate* @return*/@Beanpublic ValueOperations<String,Object> valueOperations(RedisTemplate<String,Object> redisTemplate){return redisTemplate.opsForValue();}/*** 注册 set* @param redisTemplate* @return*/@Beanpublic SetOperations<String,Object> setOperations(RedisTemplate<String,Object> redisTemplate){return redisTemplate.opsForSet();}/*** 注册 zSet* @param redisTemplate* @return*/@Beanpublic ZSetOperations<String,Object> zSetOperations(RedisTemplate<String,Object> redisTemplate){return redisTemplate.opsForZSet();}/*** 注册 geo* @param redisTemplate* @return*/@Beanpublic GeoOperations<String,Object> geoOperations(RedisTemplate<String,Object> redisTemplate){return redisTemplate.opsForGeo();}/*** 注册 cluster* @param redisTemplate* @return*/@Beanpublic ClusterOperations<String,Object> clusterOperations(RedisTemplate<String,Object> redisTemplate){return redisTemplate.opsForCluster();}/*** 注册 hyperLogLog* @param redisTemplate* @return*/@Beanpublic HyperLogLogOperations<String,Object> hyperLogLogOperations(RedisTemplate<String,Object> redisTemplate){return redisTemplate.opsForHyperLogLog();}}
public class RedisCache implements Cache {/*** redis 对象(不通过注入获取)*/private RedisTemplate<Object, Object> redisTemplate;private String id;public RedisCache(){}/*** 构造时传入一个id*/public RedisCache(String id) {this.id = id;}/*** 获取 redis 对象* @return 返回 RedisTemplate 对象*/private RedisTemplate<Object, Object> getRedisTemplate() {if(null == this.redisTemplate) {// 注意要检查是否创建了 ApplicationContextHolderthis.redisTemplate = ApplicationContextHolder.getBean("redisTemplate", RedisTemplate.class);}return this.redisTemplate;}@Overridepublic String getId() {return this.id;}@Overridepublic void putObject(Object key, Object value) {if(value != null) {this.getRedisTemplate().opsForValue().set(key, value);}}@Overridepublic Object getObject(Object key) {if(null != key) {return this.getRedisTemplate().opsForValue().get(key);}return null;}@Overridepublic Object removeObject(Object key) {if(null != key) {this.getRedisTemplate().delete(key);}return null;}@Overridepublic void clear() {Set<Object> set = getRedisTemplate().keys("*:" + this.id + "*");if(null != set) {getRedisTemplate().delete(set);}}@Overridepublic int getSize() {return 0;}@Overridepublic ReadWriteLock getReadWriteLock() {return new ReentrantReadWriteLock();}}
<!--flushInterval: 清空缓存的时间间隔,单位为毫秒; 默认情况是不设置,也就是没有刷新间隔,缓存仅仅调用更新语句时刷新。size: 可以被设置为任意正整数, 缓存的数量,默认是1024;evication: LRU 移除最长时间不被使用的对象。blocking: 默认是false;--><cache size="1024" type="com.lidaye.cache.RedisCache" />