springboot集成 redis
需要引入

官方推进用lettuce连接池,Lettuce的连接是基于Netty的,连接实例(StatefulRedisConnection)可以在多个线程间并发访问,应为StatefulRedisConnection是线程安全的
@Configuration
public class EhcacheConfig { public interface CacheManagerNames {
String REDIS_CACHE_MANAGER = "redisCacheManager";
String EHCACHE_CACHE_MANAGER = "ehCacheManager";
} @Bean(name = CacheManagerNames.REDIS_CACHE_MANAGER)
public RedisCacheManager redisCacheManager(RedisConnectionFactory factory) {
FastJsonRedisSerializer<Object> fastJsonRedisSerializer = new FastJsonRedisSerializer<>(Object.class);
RedisCacheConfiguration configuration = RedisCacheConfiguration.defaultCacheConfig();
configuration = configuration.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(fastJsonRedisSerializer)).entryTtl(Duration.ofDays(30));
return RedisCacheManager
.builder(RedisCacheWriter.nonLockingRedisCacheWriter(factory))
.cacheDefaults(configuration).build(); } @Bean
public EhCacheManagerFactoryBean cacheManagerFactoryBean(){
EhCacheManagerFactoryBean bean = new EhCacheManagerFactoryBean();
bean.setConfigLocation(new ClassPathResource("ehcache.xml"));
bean.setShared(true);
return bean;
}
/**
* @Description @Primary 设置默认加载manager
* @param bean
* @return org.springframework.cache.ehcache.EhCacheCacheManager
* @date 2019/5/31 4:38 PM
* @auther lixin
*/
@Bean(name = CacheManagerNames.EHCACHE_CACHE_MANAGER)
@Primary
public EhCacheCacheManager ehCacheCacheManager(EhCacheManagerFactoryBean bean){
return new EhCacheCacheManager(bean.getObject());
} /**
* @Description 自定义缓存 key规则
* @return org.springframework.cache.interceptor.KeyGenerator
* @date 2019/5/31 4:38 PM
* @auther lixin
*/
@Bean
public KeyGenerator keyGenerator() {
return (target, method, params) -> {
StringBuilder sb = new StringBuilder();
sb.append(target.getClass().getName());
sb.append(method.getName());
for (Object obj : params) {
// 由于参数可能不同, hashCode肯定不一样, 缓存的key也需要不一样
sb.append(JSON.toJSONString(obj).hashCode());
}
return sb.toString();
};
} /**
* 设置 redis 数据默认过期时间,默认1天
* 设置@cacheable 序列化方式
* @return
*/
@Bean
public RedisCacheConfiguration redisCacheConfiguration(){
FastJsonRedisSerializer<Object> fastJsonRedisSerializer = new FastJsonRedisSerializer<>(Object.class);
RedisCacheConfiguration configuration = RedisCacheConfiguration.defaultCacheConfig();
configuration = configuration.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(fastJsonRedisSerializer)).entryTtl(Duration.ofDays(1));
return configuration;
}
}
序列化 需要自定义
 FastJsonRedisSerializer 类
public class FastJsonRedisSerializer<T> implements RedisSerializer<T> {

    public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");

    private Class<T> clazz;

    public FastJsonRedisSerializer(Class<T> clazz) {
super();
this.clazz = clazz;
} @Override
public byte[] serialize(T t) throws SerializationException {
if (t == null) {
return new byte[0];
}
return JSON.toJSONString(t, SerializerFeature.WriteClassName).getBytes(DEFAULT_CHARSET);
} @Override
public T deserialize(byte[] bytes) throws SerializationException {
if (bytes == null || bytes.length <= 0) {
return null;
}
String str = new String(bytes, DEFAULT_CHARSET);
return (T) JSON.parseObject(str, clazz);
} }


最新文章

  1. 文法分类的python实现
  2. 在RHEL6p5中设置网卡
  3. Android课程---首学开发
  4. iOS开发小技巧--利用运行时得到隐藏的成员变量
  5. lmdb简介——结合MVCC的B+树嵌入式数据库
  6. AspNet上传文件的几个控件
  7. AutoLayout UITableViewCell 动态高度
  8. Linux基础(二)
  9. python turtle,random,math
  10. hdu 1811 Rank of Tetris
  11. PLSQL在cmd命令行中的基本用法
  12. OpenJudge Trans
  13. HDU - 2802 F(N) (周期)
  14. VS2017 启动调试报错:ID为{....}进程未启动解决方案
  15. NB群友
  16. Unity3D中利用Action实现自己的消息管理(订阅/发布)类
  17. BZOJ2872 : 优莱卡
  18. HDU 4704 Sum(隔板原理+组合数求和公式+费马小定理+快速幂)
  19. 声明元素&lt;%! %&gt;、Scriptlet元素&lt;% %&gt;、表达式元素&lt;%= %&gt;、注释元素、输出特殊符号&lt;%和%&gt;
  20. kettle性能优化

热门文章

  1. 微信小程序支持windows PC版了
  2. 自定义组合控件SettingItemView的简单实现
  3. 阶段3 3.SpringMVC&#183;_05.文件上传_1 文件上传之上传原理分析和搭建环境
  4. systemctl stop 列表
  5. django 模板里面for循环和if常用的方法
  6. ubuntu下自动获取ip设置
  7. CTF—攻防练习之HTTP—暴力破解
  8. Android开发 互相调用模式之提供扩展类
  9. 华为HCNA乱学Round 6:PVID,TAG,TRUNK
  10. 【Linux开发】linux设备驱动归纳总结(七):2.内核定时器