成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

關(guān)于springboot集成redis及關(guān)于redis的Key 亂碼問題

RancherLabs / 2481人閱讀

摘要:一在文件中引入二配置地址等配置數(shù)據(jù)庫索引默認(rèn)為服務(wù)器地址服務(wù)器連接端口服務(wù)器連接密碼默認(rèn)為空連接池最大連接數(shù)使用負(fù)值表示沒有限制連接池最大阻塞等待時(shí)間使用負(fù)值表示沒有限制連接池中的最大空閑連接連接池中的最小空閑連接連接超時(shí)時(shí)

一、在pom文件中引入redis

    org.springframework.boot
    spring-boot-starter-redis
    RELEASE
二、配置Redis地址等配置
# Redis數(shù)據(jù)庫索引(默認(rèn)為0)
spring.redis.database= 0  
# Redis服務(wù)器地址
spring.redis.host= ip
# Redis服務(wù)器連接端口
spring.redis.port=6379  
# Redis服務(wù)器連接密碼(默認(rèn)為空)
spring.redis.password= password
# 連接池最大連接數(shù)(使用負(fù)值表示沒有限制)
spring.redis.pool.max-active=8  
# 連接池最大阻塞等待時(shí)間(使用負(fù)值表示沒有限制)
spring.redis.pool.max-wait=-1  
# 連接池中的最大空閑連接
spring.redis.pool.max-idle=8  
# 連接池中的最小空閑連接
spring.redis.pool.min-idle=0  
# 連接超時(shí)時(shí)間(毫秒)
spring.redis.timeout=0
三、編寫操作Redis的工具類

四、接下來要說的就是關(guān)于key值"亂碼"問題

這次主要的問題是,在這過程中可以操作Redis數(shù)據(jù)庫 ,但是在登陸服務(wù)器的時(shí)候用redis-cli查看key的時(shí)候找不到相對(duì)應(yīng)的key,而是出現(xiàn)了以下的這種情況

那么在存key的時(shí)候?yàn)槭裁磿?huì)出現(xiàn)這種"亂碼"的情況呢?

其實(shí)這里的"亂碼"并不是真的亂碼,那是因?yàn)槲覀冞€缺少了一點(diǎn)配置,那就是對(duì)Redis存key或者value的時(shí)候,沒有配置字符串序列化。沒有配置的話是默認(rèn)使用jdk本身的序列化的,點(diǎn)進(jìn)去RedisTemplate里面去看,可以看到

因?yàn)閟pring操作redis是在jedis客戶端基礎(chǔ)上進(jìn)行的,而jedis客戶端與redis交互的時(shí)候協(xié)議中定義是用byte類型交互,看到spring-data-redis中RedisTemplate在操作的時(shí)候k,v是泛型對(duì)象,而不是byte[]類型的,這樣導(dǎo)致的一個(gè)問題就是,如果不對(duì)RedisTemplate進(jìn)行設(shè)置,spring會(huì)默認(rèn)采用defaultSerializer = new JdkSerializationRedisSerializer();這個(gè)方法來對(duì)key、value進(jìn)行序列化操作,使用默認(rèn)的jdk序列化。這樣子存到Redis里面,在服務(wù)器上登陸redis-cli查看key的時(shí)候找不到我們存儲(chǔ)的那個(gè)key,而是加了一堆亂碼的key,所以在這里我簡單的做了一下配置,將存儲(chǔ)的key/value設(shè)置成string類型:

其實(shí)在這里應(yīng)該先提前利用springboot的自動(dòng)裝配,先將這些東西配置好,這些配置在網(wǎng)上可以找到,springboot集成redis配置

@Configuration
@EnableAutoConfiguration
public class RedisConfig {

    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory factory) {
        StringRedisTemplate redisTemplate = new StringRedisTemplate(factory);
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        jackson2JsonRedisSerializer.setObjectMapper(om);
        //設(shè)置完這個(gè)可以直接將對(duì)象以json格式存入redis中,但是取出來的時(shí)候要用JSON.parseArray(Json.toJsonString(object),Object.class)解析一下
        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
        redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
        //調(diào)用后完成設(shè)置
        redisTemplate.afterPropertiesSet();
        return redisTemplate;
    }

其實(shí)不用配置這些,Redis也可以正常使用的,不過為了防止日后出現(xiàn)問題方便排查,還是花一點(diǎn)點(diǎn)時(shí)間將這些配置加上吧~

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/72421.html

相關(guān)文章

  • SpringBoot 實(shí)戰(zhàn) (二十)| 整合 Redis

    摘要:前言兩個(gè)月沒更新原創(chuàng)了,實(shí)在慚愧。在實(shí)現(xiàn)方面,存儲(chǔ)代表空間中最大和最老的成員之一。支持?jǐn)?shù)據(jù)結(jié)構(gòu),如字符串,散列,列表,集和帶范圍查詢的有序集。所以我代碼里了兩個(gè)字符串,其實(shí)只了一個(gè)。另外,關(guān)注之后在發(fā)送可領(lǐng)取免費(fèi)學(xué)習(xí)資料。 微信公眾號(hào):一個(gè)優(yōu)秀的廢人。如有問題,請(qǐng)后臺(tái)留言,反正我也不會(huì)聽。 showImg(https://segmentfault.com/img/remote/1460...

    kevin 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

RancherLabs

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<