使用spring-data-redis的时候,其序列化工具自带:

aaarticlea/png;base64,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" alt="" />

这些类,进行序列化,主要使用的是Jackson2JsonRedisSerializer,编码如下:

  

  @Bean
  @SuppressWarnings({ "rawtypes", "unchecked" })
public Jackson2JsonRedisSerializer jackson2JsonRedisSerializer() {
Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
return jackson2JsonRedisSerializer;
} @Bean
@SuppressWarnings("rawtypes")
public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory, RedisSerializer fastJson2JsonRedisSerializer) {
StringRedisTemplate template = new StringRedisTemplate(factory); template.setValueSerializer(fastJson2JsonRedisSerializer); template.afterPropertiesSet();
return template;
}

但是使用jackson会有一个问题,因为我springMVC同样是使用的jackson,这样的话由于一些发送给前端的json是需要一定的处理的,如jsonIgnore之类的,这样会在进行缓存时同样处理掉,达不到缓存的目的,于是决定在spring-data-redis进行缓存时,将jackson的序列化由fastjson替换掉。

  首先需要一个RedisSerializer:

public class FastJson2JsonRedisSerializer<T> implements RedisSerializer<T> {

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

    private Class<T> clazz;

    public FastJson2JsonRedisSerializer(Class<T> clazz) {
super();
this.clazz = clazz;
} public byte[] serialize(T t) throws SerializationException {
if (t == null) {
return new byte[0];
}
return JSON.toJSONString(t, SerializerFeature.WriteClassName).getBytes(DEFAULT_CHARSET);
} 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);
} }

   此类需要实现RedisSerializer接口。

  然后set到RedisTemplate上:

  

    @Bean
@SuppressWarnings("rawtypes")
public RedisSerializer fastJson2JsonRedisSerializer() {
return new FastJson2JsonRedisSerializer<Object>(Object.class);
} @Bean
@SuppressWarnings("rawtypes")
public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory, RedisSerializer fastJson2JsonRedisSerializer) {
StringRedisTemplate template = new StringRedisTemplate(factory); template.setValueSerializer(fastJson2JsonRedisSerializer); template.afterPropertiesSet();
return template;
}

  结束

spring-data-redis注册fastjson序列化工具的更多相关文章

  1. spring data redis jackson 配置,工具类

    spring data redis 序列化有jdk .jackson.string 等几种类型,自带的jackson不熟悉怎么使用,于是用string类型序列化,把对象先用工具类转成string,代码 ...

  2. Spring Data Redis入门示例:数据序列化 (四)

    概述 RedisTemplate默认使用的是基于JDK的序列化器,所以存储在Redis的数据如果不经过相应的反序列化,看到的结果是这个样子的: 可以看到,出现了乱码,在程序层面上,不会影响程序的运行, ...

  3. spring mvc Spring Data Redis RedisTemplate [转]

    http://maven.springframework.org/release/org/springframework/data/spring-data-redis/(spring-data包下载) ...

  4. Spring Data Redis简介以及项目Demo,RedisTemplate和 Serializer详解

    一.概念简介: Redis: Redis是一款开源的Key-Value数据库,运行在内存中,由ANSI C编写,详细的信息在Redis官网上面有,因为我自己通过google等各种渠道去学习Redis, ...

  5. Spring Data Redis—Pub/Sub(附Web项目源码)

    一.发布和订阅机制 当一个客户端通过 PUBLISH 命令向订阅者发送信息的时候,我们称这个客户端为发布者(publisher). 而当一个客户端使用 SUBSCRIBE 或者 PSUBSCRIBE ...

  6. Spring Data Redis—Pub/Sub(附Web项目源码) (转)

    一.发布和订阅机制 当一个客户端通过 PUBLISH 命令向订阅者发送信息的时候,我们称这个客户端为发布者(publisher). 而当一个客户端使用 SUBSCRIBE 或者 PSUBSCRIBE ...

  7. 关于在项目中使用spring data redis与jedis的选择

    项目中需要用到redis,主要用来作为缓存,redis的客户端有两种实现方式,一是可以直接调用jedis来实现,二是可以使用spring data redis,通过spring的封装来调用. 应该使用 ...

  8. Spring Data Redis与Jedis的选择(转)

    说明:内容可能有点旧,需要在业务上做权衡. Redis的客户端有两种实现方式,一是可以直接调用Jedis来实现,二是可以使用Spring Data Redis,通过Spring的封装来调用.应该使用哪 ...

  9. Redis与Spring Data Redis

    1.Redis概述 1.1介绍 官网:https://redis.io/ Redis是一个开源的使用ANSIC语言编写.支持网络.可基于内存 亦可持久化的日志型.Key-Value型的高性能数据库. ...

随机推荐

  1. 《从零开始做一个MEAN全栈项目》(4)

    欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 在上一篇中,我们讲了如何去构建第一个Express项目,总结起来就是使用两个核心工具,express和 ...

  2. J2EE项目中后台定时运行的程序

    转自:http://www.2cto.com/kf/201311/260676.html 在开发J2EE项目中,有时候需要在后台定时执行一些代码. 比如定时对web数据建立倒排索引.定时发送邮件.定时 ...

  3. 安卓仿照QQ工单数实现

    1.使用BadgeView 控件,可以在网上下载源码或者Jar包 2.使用方法 holder.badgeView = new BadgeView(holder.item_layout.getConte ...

  4. Dev tdxDBTreeView

    可以快速的用tree展示层次结构,无需任何编码;对tree的操作会自动post到数据集:对数据集的操作会 在tree上表现 一.关键 设置 datasource displayField:节点的   ...

  5. 向IPython Notebook中导入.py文件

    IPython Notebook使用起来简洁方便,但是有时候如果需要导入一个现有的.py文件,则需要注意选择导入的方法以达到不同的效果.目前遇到3种方法. (1) 将文件保存为.ipynb格式,直接拖 ...

  6. PriorityQueue优先队列用法入门

    PriorityQueue是队列的一种,它叫做优先队列,该类实现了Queue接口. 之所以叫做优先队列,是因为PriorityQueue实现了Comparator这个比较接口,也就是PriorityQ ...

  7. Foundation框架—字符串(NSString)

    一 NSString不可变字符串 1.字符串的创建 //创建字符串常量 NSString *string1 = @"hello"; string1 = @"hello w ...

  8. iOS中UIImageView的填充模式

    UIImageView的填充模式 属性名称 imageV.contentMode枚举属性: @"UIViewContentModeScaleToFill", // 拉伸自适应填满整 ...

  9. Fisher vector for image classification

    http://files.cnblogs.com/files/sylar120/fisher_vector.rar 拿各个参数上的偏导作为特征

  10. CI框架(一)

    CI工作流程:        所有的入口都从根目录下的index.php进入,确定应用所在目录后,加载 codeigniter/CodeIgniter.php 文件,该文件会顺序加载以下文件执行整个流 ...