为什么Redis中key会惊现“乱码”?

最近在做一个秒杀项目,过程中大量应用到了redis。
而我在用ElasticJob进行数据化初始化到Redis数据库时发现这些key都出现了一段前缀“乱码”。

数据结构为Hash,可以观察到hashkey也带有前缀“乱码”

这究竟是怎么回事呢?原来问题出在这:
我使用的是RedisTemplate,而RedisTemplate会出现编码问题,需要自行配置,如果不想配置,可以使用StringRedisTemplate,因为StringRedisTemplate的源码中是有帮我们配置的,因此使用StringRedisTemplate即可完美解决“乱码”问题。

代码: 重点在12行

//让Spring扫描到
@Component
@Getter
@Setter
@Slf4j
public class MyInitSeckillProductsJob implements SimpleJob {//从nacos取cron@Value("${jobCron.initSeckillProduct}")private String cron;@Autowiredprivate SeckillProductFeignApi seckillProductFeignApi;@Autowired//这里要用StringRedisTemplateprivate StringRedisTemplate redisTemplate;@Overridepublic void execute(ShardingContext shardingContext) {doWork(shardingContext.getShardingParameter());}//shardingParameter 就是分片参数 timepublic void doWork(String time) {//keyString SeckillProductKey = JobRedisKey.SECKILL_PRODUCT_LIST.getRealKey(time);String StockCountKey=JobRedisKey.SECKILL_STOCK_COUNT_HASH.getRealKey(time);//1.先把之前的数据删除掉redisTemplate.delete(SeckillProductKey);//2.远程调用秒杀商品服务根据分片参数time查询出resultResult<List<SeckillProductVo>> result = seckillProductFeignApi.selectSeckillProductVoByTime(Integer.parseInt(time));//对list进行判空if (result != null && !result.hasError()) {//从result中取出dataList<SeckillProductVo> data = result.getData();if (data != null && data.size() > 0) {for (SeckillProductVo seckillProductVo : data) {//3.将Vo对象存到redis中redisTemplate.opsForHash().put(SeckillProductKey,seckillProductVo.getId() + "", JSON.toJSONString(seckillProductVo));//4.将秒秒杀商品库存存到redis中redisTemplate.opsForHash().put(StockCountKey,seckillProductVo.getId()+"",seckillProductVo.getStockCount()+"");log.info("今日秒杀商品数据初始化完成");}}}}
}

解决编码问题之后的效果:

最后如果想了解如何使用RedisTemplate配置请浏览:
Redis key 乱码问题(springboot)

为什么我Redis中key惊现“乱码”?相关推荐

  1. redis查看某一个key的大小_redis查看某个key redis中key的操作命令 - Redis - 服务器之家...

    redis查看某个key redis中key的操作命令 发布时间:2017-04-02 来源:服务器之家 在该系列的前几篇博客中,主要讲述的是与Redis数据类型相关的命令,如String.List. ...

  2. Redis中key的过期时间

    Redis中key的过期时间 背景 实际项目开发中,我们经常会用到redis进行缓存存储,那么redist中key设置与不设置缓存时间,会给我们日常开发中带来哪些影响呢? 场景1:设置了key但是没有 ...

  3. SpringBoot集成Redis报错链接超时以及无法识别的地址,存入redis中key乱码问题解决

    Caused by: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no furthe ...

  4. php redis命令大全,redis中key相关命令详解

    一.概述: 本文将主要讲述与Key相关的Redis命令.学习这些命令对于学习Redis是非常重要的基础,也是能够充分挖掘Redis潜力的利器.(推荐:redis视频教程) 二.相关命令列表: 命令原型 ...

  5. Redis整合Spring Data Redis 开发key和value乱码

    Spring整合Redis默认使用的是JDK的序列化 将key,value的序列化改成Spring的就行了. 这种在 可视化界面  看见□□ 其实只是可视化界面显示问题, 真正的数据, 其实并无乱码. ...

  6. 统计redis中key的数量

    命令格式如下: 1 $ redis-cli -h IP地址 -p 端口 -a 密码 info keyspace 比如本机(默认端口6379) 1 2 3 4 5 6 $ redis-cli info ...

  7. 解决Redis中Key值带有特殊字符问题

    通过修改RedisTemplate的序列化器来解决 import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterx ...

  8. redis中key的各种通用操作(六)

    命令示例 1. KEYS/RENAME/DEL/EXISTS/MOVE/RENAMENX:(获取匹配的key/重新命名/删除key/判断是否存在/移动指定key/新值不存在才重新命名) 127.0.0 ...

  9. redis中key和value的存储大小限制

    String类型:一个String类型的value最大可以存储512M List类型:list的元素个数最多为2^32-1个,也就是4294967295个. Set类型:元素个数最多为2^32-1个, ...

最新文章

  1. Core Dump流程分析
  2. 读书笔记(十)——python简单爬取企查查网企业信息,并以excel格式存储
  3. NET问答: C# 中是否有 format json 的类库?
  4. git拉取tag代码_10年经验17张图带你进入gitflow企业项目代码版本管理的最佳实践...
  5. bpython_Python机器学习(入门)
  6. mac在查看jre通路
  7. 简单易用的安装文件制作工具NSIS的使用demo示例
  8. Ghost安装系统步骤
  9. scratch动态三角形拖动/自制素材/少儿编程scratch教研教案课件课程素材脚本
  10. 计算机类综述论文范文,综述的写法(计算机类论文综述的写法)
  11. 【LaTeX】LaTeX常见括号总结
  12. 仓库系统用什么服务器,什么是仓库管理saas系统 仓库管理saas系统的功能有哪些...
  13. python基础学习_02数据类型+占位符+运算符+IF分支基础
  14. 【推免】笔试+机试+面试 准备
  15. Android 触摸屏Event上报操作
  16. 信息学奥赛一本通(c++):1000:入门测试题目
  17. 使用OpenVINO™在“端—边—云”快速实现高性能人工智能推理
  18. 备战第十二届蓝桥杯电子类《EDA设计与开发》国赛
  19. 湖南发现外星智慧创造人类证据(图)
  20. 「Leetcode592」分数加减法

热门文章

  1. 2023华为OD机试备考攻略 以及题库目录分值说明 考点说明
  2. 多个安卓设备投屏到电脑_华为手机可以投屏到电脑,那其他安卓手机呢?其实非常简单...
  3. Python 转换金额数字大写为数字小写
  4. 如何解决图片在移动端清晰显示的问题
  5. 如何使用netstat命令辨别DDOS入侵
  6. Transformer25
  7. html5调用腾讯视频,小程序h5获取腾讯视频的真实mp4地址video!【前端+后端方法】...
  8. 微信小程序与后端Java接口交互-图书搜索实现
  9. 用C语言编写简单的通讯录(大一课程作业)
  10. 一个研发管理使命、愿景、价值观的案例