Spring的RedisTemplate存儲(chǔ)的key和value有特殊字符的處理
Spring RedisTemplate存儲(chǔ)的key和value有特殊字符
Spring的spring-data-redis包下有RedisTemplate類,當(dāng)調(diào)用:
redisTemplate.opsForValue().set("TEST","ABCD");方法后,Redis里實(shí)際保存的key并不完全等于我們預(yù)設(shè)的key值,而是在key值前面加了一些特殊字符
就像這樣的:
"\xac\xed\x00\x05t\x00\x0cTEST"
而保存的value可能是這樣的:
"\xac\xed\x00\x05t\x00\x10cABCD"
開頭會(huì)有類似\xac\xed\x00\x05t\x00\x0c這樣的特殊字符。
這種特殊字符出現(xiàn)的原因
是因?yàn)镽edisTemplate默認(rèn)使用JdkSerializationRedisSerializer作為序列化工具。
雖然保存的key和我們想象中的不太一樣,但是并不影響我們調(diào)用
redisTemplate.opsForValue().get("TEST");去獲取之前設(shè)置的value,而且得到的value也是正確的,不帶特殊字符。
這應(yīng)該是因?yàn)镽edisTemplate把查詢用的key值進(jìn)行同樣的序列化后再進(jìn)行查詢,所以能成功的找到該條記錄,并把value反序列化后返回,得到的就是沒有特殊字符的value。
如果不想在保存的key和value里包含這種特殊字符,可以手動(dòng)修改序列化方式
使用以下代碼:
@Autowired(required = false)
public void setRedisTemplate(RedisTemplate redisTemplate) {
RedisSerializer stringSerializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(stringSerializer);
redisTemplate.setValueSerializer(stringSerializer);
redisTemplate.setHashKeySerializer(stringSerializer);
redisTemplate.setHashValueSerializer(stringSerializer);
this.redisTemplate = redisTemplate;
}注意:
方法前面的@Autowired注解是需要加的。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解Mybatis中的 ${} 和 #{}區(qū)別與用法
這篇文章主要介紹了Mybatis中的 ${} 和 #{}區(qū)別與用法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
Java Web中常用的分頁組件(Java端實(shí)現(xiàn))
本文通過使用場景分析給大家介紹了Java Web中常用的分頁組件(Java端實(shí)現(xiàn)),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-05-05
SpringBoot使用郵箱發(fā)送驗(yàn)證碼實(shí)現(xiàn)注冊(cè)功能
這篇文章主要為大家詳細(xì)介紹了SpringBoot使用郵箱發(fā)送驗(yàn)證碼實(shí)現(xiàn)注冊(cè)功能實(shí)例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02
SpringBoot詳解MySQL如何實(shí)現(xiàn)讀寫分離
當(dāng)響應(yīng)的瓶頸在數(shù)據(jù)庫的時(shí)候,就要考慮數(shù)據(jù)庫的讀寫分離,當(dāng)然還可以分庫分表,那是單表數(shù)據(jù)量特別大,當(dāng)單表數(shù)據(jù)量不是特別大,但是請(qǐng)求量比較大的時(shí)候,就要考慮讀寫分離了.具體的話,還是要看自己的業(yè)務(wù)...如果還是很慢,那就要分庫分表了...我們這篇就簡單講一下讀寫分離2022-09-09
使用?Spring?Boot?Admin?監(jiān)控應(yīng)用狀態(tài)的詳細(xì)過程
這篇文章主要介紹了使用?Spring?Boot?Admin?監(jiān)控應(yīng)用狀態(tài),該模塊采集應(yīng)用的內(nèi)部信息,并暴露給外部的模塊,支持?HTTP?和?JMX,并可以與一些第三方監(jiān)控系統(tǒng)(如?Prometheus)整合,需要的朋友可以參考下2022-09-09

