我的编程空间,编程开发者的网络收藏夹
学习永远不晚

解决使用redisTemplate set方法保存出现x00问题

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

解决使用redisTemplate set方法保存出现x00问题

解决使用redisTemplate set方法保存出现x00问题

在项目有个需求要保存一个字符串到redis,并设置一个过期时间。这个需求一看非常简单,使用redisTemplate一行代码搞定,代码如下

redisTemplate.opsForValue().set("userKey", data, 10000); 

但保存后,查看redis发现value的前缀多出了

x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x

一开始以为是redis的序列化问题,于是就修改了redisTemplate的序列化方式,终于还是没能解决问题。那问题出在哪里?翻看源码,发现redisTemplate.opsForValue().set()有重载方法,一个是

void set(K key, V value, long offset) 

另外一个是

void set(K key, V value, long timeout, TimeUnit unit)

调用set(K key, V value, long offset)这个方法,其底层调用的是redis的setrange命令,这个命令看官网介绍

Overwrites part of the string stored at key, starting at the specified offset, for the entire length of value. If the offset is larger than the current length of the string at key, the string is padded with zero-bytes to make offset fit. Non-existing keys are considered as empty strings, so this command will make sure it holds a string large enough to be able to set value at offset

其含义是从指定的偏移量开始,覆盖整个值范围内从key存储的字符串的一部分。如果偏移量大于key处字符串的当前长度,则该字符串将填充零字节以使偏移量适合。不存在的键被视为空字符串,因此此命令将确保它包含足够大的字符串以能够将值设置为offset。

调用set(K key, V value, long timeout, TimeUnit unit)这个方法,其底层调用的是redis命令setex。这个命令看官网介绍

Set key to hold the string value and set key to timeout after a given number of seconds

很显然这个方法,才是我们真正想要的方法。因此解决使用restemplate set方法保存出现x00问题的方案就是使用

void set(K key, V value, long timeout, TimeUnit unit)

这个方法

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

解决使用redisTemplate set方法保存出现x00问题

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

解决使用redisTemplate set方法保存出现x00问题

在项目有个需求要保存一个字符串到redis,并设置一个过期时间。这个需求一看非常简单,使用redisTemplate一行代码搞定,代码如下redisTemplate.opsForValue().set("userKey", data, 10000); 但保存后
解决使用redisTemplate set方法保存出现x00问题
2016-03-30

windows8 RP版使用中出现死机问题的解决方法

具体步骤:   1.打开控制面板   2.选择程序与功能   3.点击左侧开启关闭windows功能   4.将名为Hyper-V的功能打上勾   5.按照提示重启即可   原理:   规定windows以基本虚拟化形式运行,但是和虚拟机又
2022-06-04

Win8应用程序出现问题的解决方法

更新应用程序   使应用保持最新是确保正常工作的一种方法。 只要您的应用有更新版本,您便可在应用商店看见通知。   若要更新应用,您可点击或单击该通知或者按照以下步骤操作:   1.在“开始”屏幕上,点击或单击&ld
2022-06-04

法国服务器使用出现问题如何解决

解决法国服务器出现问题的方法取决于具体的问题类型。以下是一些常见的问题和解决方法:网络连接问题:检查服务器的网络连接是否正常,可以尝试重新启动服务器、调整网络设置或联系网络服务提供商解决问题。服务器崩溃或死机:尝试重新启动服务器,如果问题仍
法国服务器使用出现问题如何解决
2024-05-13

如何解决在Android中使用setButtonDrawable()方法出现的兼容问题

这篇文章给大家介绍如何解决在Android中使用setButtonDrawable()方法出现的兼容问题,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Android setButtonDrawable()的兼容问题解
2023-05-31

MybatisPlus 使用 saveOrUpdate 详解(慎用),及问题解决方法&mysql保存或更新 ON DUPLICATE KEY UPDATE

今天的想法是,要在插入数据库时,如果有某某一个主要字段的值重复,则不插入,否则则插入! 看了一下mybatis-Plus是有这个saveOrUpdate 方法! 原本使用save时是没有问题了,改成saveOrUpdate 用了一下就报错了
2023-08-23

Pycharm使用时会出现的问题之cv2无法安装解决

这篇文章主要介绍了Pycharm使用时会出现的问题之cv2无法安装解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-05-18

Win8/8.1系统metro应用中使用IE浏览器出现闪退问题的解决方法

解决方法:1、控制面板—>打开或关闭Windows功能—>Internet Explorer 10/11 取消勾选,点确定,按照提示重启;2、打开ccleaner—>registry—>sca
2022-06-04

wordpress在安装使用中出现404、403、500及502问题的分析与解决方法

前言 最近在使用WordPress的时候遇到了一些错误提示,相信大家在使用wordpress建立网站的时候,都会遇到一些问题,一般来说分为2种情况。 第一种情况是程序报错:程序报错一般会直接在网站顶部或者网站其他部分显示错误或者警告提示,如
2022-06-12

win7下使用PS处理图片时出现图片打不开问题的解决方法

win7纯净版系统用户经常使用PhotoShop软件对图片进行处理,但是在处理图片的过程中经常遇到图片打不开的情况,使用Windows画图工具都可以正常打开图片的,图片都是从网上下载下来的。遇到这样情况该怎么办呢?下面小编给大家介绍详细的解
2023-05-21

使用Python脚本实现批量网站存活检测遇到问题及解决方法

做渗透测试的时候,有个比较大的项目,里面有几百个网站,这样你必须首先确定哪些网站是正常,哪些网站是不正常的。所以自己就编了一个小脚本,为以后方便使用。 具体实现的代码如下:#!/usr/bin/python # -*- coding: UT
2022-06-04

Windows7使用硬盘时发现硬盘狂闪问题的解决方法

有些用户在使用硬盘的时候,发现硬盘狂闪,这是怎么回事呢?又该如何解决这个问题呢?许多用户都不太清楚,因此,小编特地给大家带来了一种解决的方法。win7硬盘狂闪解决方法:第一步、停不必要的服务,减轻硬盘压力Win7中堪称“硬盘杀手
2023-06-10

PHPCMS V9跨站调用推荐位出现URL连接为空问题的解决方法

如题,如果你在使用phpcms V9的时候需要在不同的站点之间调用推荐位可能会出现链接的URL为空的情况,具体解决办法如下,该办法适合20130522 之前版本 一、在自定义函数中加入下面的函数: 复制代码代码如下: /** * 获取内容地
2022-06-12

编程热搜

目录