为什么我Redis中key惊现“乱码”?
为什么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惊现“乱码”?相关推荐
- redis查看某一个key的大小_redis查看某个key redis中key的操作命令 - Redis - 服务器之家...
redis查看某个key redis中key的操作命令 发布时间:2017-04-02 来源:服务器之家 在该系列的前几篇博客中,主要讲述的是与Redis数据类型相关的命令,如String.List. ...
- Redis中key的过期时间
Redis中key的过期时间 背景 实际项目开发中,我们经常会用到redis进行缓存存储,那么redist中key设置与不设置缓存时间,会给我们日常开发中带来哪些影响呢? 场景1:设置了key但是没有 ...
- SpringBoot集成Redis报错链接超时以及无法识别的地址,存入redis中key乱码问题解决
Caused by: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no furthe ...
- php redis命令大全,redis中key相关命令详解
一.概述: 本文将主要讲述与Key相关的Redis命令.学习这些命令对于学习Redis是非常重要的基础,也是能够充分挖掘Redis潜力的利器.(推荐:redis视频教程) 二.相关命令列表: 命令原型 ...
- Redis整合Spring Data Redis 开发key和value乱码
Spring整合Redis默认使用的是JDK的序列化 将key,value的序列化改成Spring的就行了. 这种在 可视化界面 看见□□ 其实只是可视化界面显示问题, 真正的数据, 其实并无乱码. ...
- 统计redis中key的数量
命令格式如下: 1 $ redis-cli -h IP地址 -p 端口 -a 密码 info keyspace 比如本机(默认端口6379) 1 2 3 4 5 6 $ redis-cli info ...
- 解决Redis中Key值带有特殊字符问题
通过修改RedisTemplate的序列化器来解决 import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterx ...
- redis中key的各种通用操作(六)
命令示例 1. KEYS/RENAME/DEL/EXISTS/MOVE/RENAMENX:(获取匹配的key/重新命名/删除key/判断是否存在/移动指定key/新值不存在才重新命名) 127.0.0 ...
- redis中key和value的存储大小限制
String类型:一个String类型的value最大可以存储512M List类型:list的元素个数最多为2^32-1个,也就是4294967295个. Set类型:元素个数最多为2^32-1个, ...
最新文章
- Core Dump流程分析
- 读书笔记(十)——python简单爬取企查查网企业信息,并以excel格式存储
- NET问答: C# 中是否有 format json 的类库?
- git拉取tag代码_10年经验17张图带你进入gitflow企业项目代码版本管理的最佳实践...
- bpython_Python机器学习(入门)
- mac在查看jre通路
- 简单易用的安装文件制作工具NSIS的使用demo示例
- Ghost安装系统步骤
- scratch动态三角形拖动/自制素材/少儿编程scratch教研教案课件课程素材脚本
- 计算机类综述论文范文,综述的写法(计算机类论文综述的写法)
- 【LaTeX】LaTeX常见括号总结
- 仓库系统用什么服务器,什么是仓库管理saas系统 仓库管理saas系统的功能有哪些...
- python基础学习_02数据类型+占位符+运算符+IF分支基础
- 【推免】笔试+机试+面试 准备
- Android 触摸屏Event上报操作
- 信息学奥赛一本通(c++):1000:入门测试题目
- 使用OpenVINO™在“端—边—云”快速实现高性能人工智能推理
- 备战第十二届蓝桥杯电子类《EDA设计与开发》国赛
- 湖南发现外星智慧创造人类证据(图)
- 「Leetcode592」分数加减法
热门文章
- 2023华为OD机试备考攻略 以及题库目录分值说明 考点说明
- 多个安卓设备投屏到电脑_华为手机可以投屏到电脑,那其他安卓手机呢?其实非常简单...
- Python 转换金额数字大写为数字小写
- 如何解决图片在移动端清晰显示的问题
- 如何使用netstat命令辨别DDOS入侵
- Transformer25
- html5调用腾讯视频,小程序h5获取腾讯视频的真实mp4地址video!【前端+后端方法】...
- 微信小程序与后端Java接口交互-图书搜索实现
- 用C语言编写简单的通讯录(大一课程作业)
- 一个研发管理使命、愿景、价值观的案例