springboot整合spring-data-redis遇到的坑

发布时间 - 2026-01-11 00:49:39    点击率:

描述

使用springboot整合redis,使用默认的序列化配置,然后使用redis-client去查询时查询不到相应的key.

使用工具发现,key的前面多了\xAC\xED\x00\x05t\x00!这样一个串.

而且value也是不能直观可见的.

问题所在

使用springdataredis,默认情况下是使用org.springframework.data.redis.serializer.JdkSerializationRedisSerializer这个类来做序列化.

org.springframework.data.redis.core.RedisTemplate代码块.

 public void afterPropertiesSet() {
    super.afterPropertiesSet();
    boolean defaultUsed = false;
    if (defaultSerializer == null) {
      defaultSerializer = new JdkSerializationRedisSerializer(
          classLoader != null ? classLoader : this.getClass().getClassLoader());
    }
    if (enableDefaultSerializer) {
      if (keySerializer == null) {
        keySerializer = defaultSerializer;
        defaultUsed = true;
      }
      if (valueSerializer == null) {
        valueSerializer = defaultSerializer;
        defaultUsed = true;
      }
      if (hashKeySerializer == null) {
        hashKeySerializer = defaultSerializer;
        defaultUsed = true;
      }
      if (hashValueSerializer == null) {
        hashValueSerializer = defaultSerializer;
        defaultUsed = true;
      }
    }
    if (enableDefaultSerializer && defaultUsed) {
      Assert.notNull(defaultSerializer, "default serializer null and not all serializers initialized");
    }
    if (scriptExecutor == null) {
      this.scriptExecutor = new DefaultScriptExecutor<K>(this);
    }
    initialized = true;
  }

解决

手动设置key的序列化方式为StringRedisSerializer,强制使用.

由于spring不支持泛型注入,这样会导致所有的redisTemplate的key序列方式都为StringRedisSerializer. 同时,最好在序列化对象保存时候手动将其转为json串后存入redis.易于在可视化工具中直接查看对应value

@Bean
  public RedisTemplate<String, ?> redisTemplate(RedisConnectionFactory factory) {
    RedisTemplate<String, Object> redisTemplate = new RedisTemplate();
    redisTemplate.setConnectionFactory(factory);
    RedisSerializer<String> stringRedisSerializer = new StringRedisSerializer();//Long类型不可以会出现异常信息;
    redisTemplate.setKeySerializer(stringRedisSerializer);
    return redisTemplate;
  }

以上所述是小编给大家介绍的springboot整合spring-data-redis遇到的坑,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# spring  # boot整合  # data  # redis  # springboot2整合redis使用lettuce连接池的方法(解决lettuce连接池无效问题  # 详解springboot配置多个redis连接  # Springboot2.X集成redis集群(Lettuce)连接的方法  # springboot整合redis进行数据操作(推荐)  # SpringBoot集成Redisson实现分布式锁的方法示例  # SpringBoot Redis配置Fastjson进行序列化和反序列化实现  # SpringBoot项目中使用redis缓存的方法步骤  # springboot与redis的简单整合实例  # SpringBoot通过RedisTemplate执行Lua脚本的方法步骤  # springboot中操作redis实例分享  # 序列化  # 小编  # 在此  # 不可以  # 将其  # 给大家  # 这样一个  # 不支持  # 来做  # 都为  # 所述  # 给我留言  # 感谢大家  # 疑问请  # 有任何  # 情况下  # defaultUsed  # core  # JdkSerializationRedisSerializer  # springframework 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel路由怎么定义_Laravel核心路由系统完全入门指南  图册素材网站设计制作软件,图册的导出方式有几种?  浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】  深圳网站制作平台,深圳市做网站好的公司有哪些?  网易LOFTER官网链接 老福特网页版登录地址  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  Laravel如何使用Eloquent进行子查询  如何在阿里云香港服务器快速搭建网站?  如何在IIS中配置站点IP、端口及主机头?  高端建站如何打造兼具美学与转化的品牌官网?  微信小程序 canvas开发实例及注意事项  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  如何正确选择百度移动适配建站域名?  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  实现点击下箭头变上箭头来回切换的两种方法【推荐】  北京企业网站设计制作公司,北京铁路集团官方网站?  Laravel API资源类怎么用_Laravel API Resource数据转换  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复  EditPlus中的正则表达式 实战(1)  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】  魔毅自助建站系统:模板定制与SEO优化一键生成指南  Python并发异常传播_错误处理解析【教程】  Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  如何在宝塔面板创建新站点?  如何在Windows 2008云服务器安全搭建网站?  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  如何在建站之星绑定自定义域名?  js实现点击每个li节点,都弹出其文本值及修改  三星网站视频制作教程下载,三星w23网页如何全屏?  如何在阿里云部署织梦网站?  EditPlus中的正则表达式实战(6)  Android仿QQ列表左滑删除操作  Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧  Java垃圾回收器的方法和原理总结  如何挑选高效建站主机与优质域名?  百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧  Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】  公司网站制作需要多少钱,找人做公司网站需要多少钱?  Laravel如何使用Gate和Policy进行授权?(权限控制)  Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】  Laravel如何实现用户密码重置功能?(完整流程代码)  Laravel如何配置Horizon来管理队列?(安装和使用)  Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比  Laravel如何使用模型观察者?(Observer代码示例)