SpringBoot配置RedisTemplate序列化

前言

最新的SpringBoot的相關Starter很多已經(jīng)省略掉了自定義的@Configuration類粮坞,取而代之的是直接在application.yml文件中直接配置,比如Druid現(xiàn)在只需要maven引入其starter并在application.yml文件配置一下就可以了。今天要說的redis也是這樣的。
究其原因為什么呢?
因為maven引入的starter里面已經(jīng)有寫好的Configuration了,相當于這個工作Starter已經(jīng)幫我們做好了粗蔚,打開你的ide,直接查看源碼

package org.springframework.boot.autoconfigure.data.redis;

@Configuration
@ConditionalOnClass(RedisOperations.class)
@EnableConfigurationProperties(RedisProperties.class)
@Import({ LettuceConnectionConfiguration.class, JedisConnectionConfiguration.class })
public class RedisAutoConfiguration {

}
package org.springframework.boot.autoconfigure.data.redis;

import java.time.Duration;
import java.util.List;

import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * Configuration properties for Redis.
 *
 * @author Dave Syer
 * @author Christoph Strobl
 * @author Eddú Meléndez
 * @author Marco Aust
 * @author Mark Paluch
 * @author Stephane Nicoll
 */
@ConfigurationProperties(prefix = "spring.redis")
public class RedisProperties {
}

1捉貌、配置Redis

step1
配置application.yml文件支鸡,這些屬性都可以在上面兩個源碼類里面得到解析,這里使用了lettuce而不是jedis趁窃,前者線程池是線程安全的牧挣,這個后期再做解釋。

  #redis配置醒陆,此處使用lettuce
  redis:
    timeout: 5000ms
    password: 密碼
    database: 0
    sentinel:
      nodes: 172.13.37.84:26379,177.15.33.82:26379,172.46.36.82:26379,172.11.31.36:26379,172.14.76.57:26379
      master: master
    lettuce:
      pool:
        max-active: 8
        max-idle: 8
        min-idle: 0

step2
沒有step2了瀑构,上面就配置完了。
開玩笑的,上面配置完只能使用StringRedisTemplate寺晌,使用其他類型的RedisTemplate還需要配置序列化

@Configuration
public class RedisConfig {

    @Bean
    public <T> RedisTemplate<String, T> redisTemplateKeyString(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate<String, T> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
        objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
        jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
        redisTemplate.afterPropertiesSet();
        return redisTemplate;
    }
    /**配置其他類型的redisTemplate***/
    @Bean
    public RedisTemplate<Object, Object> redisTemplateKeyObject(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
        objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
        jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
        redisTemplate.afterPropertiesSet();
        return redisTemplate;
    }
}
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末世吨,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子呻征,更是在濱河造成了極大的恐慌耘婚,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件陆赋,死亡現(xiàn)場離奇詭異沐祷,居然都是意外死亡,警方通過查閱死者的電腦和手機攒岛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門赖临,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人灾锯,你說我怎么就攤上這事兢榨。” “怎么了顺饮?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵吵聪,是天一觀的道長。 經(jīng)常有香客問我领突,道長暖璧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任君旦,我火速辦了婚禮,結果婚禮上嘲碱,老公的妹妹穿的比我還像新娘金砍。我一直安慰自己,他們只是感情好麦锯,可當我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布恕稠。 她就那樣靜靜地躺著,像睡著了一般扶欣。 火紅的嫁衣襯著肌膚如雪鹅巍。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天料祠,我揣著相機與錄音骆捧,去河邊找鬼。 笑死髓绽,一個胖子當著我的面吹牛敛苇,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播顺呕,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼枫攀,長吁一口氣:“原來是場噩夢啊……” “哼括饶!你這毒婦竟也來了?” 一聲冷哼從身側響起来涨,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤图焰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蹦掐,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體技羔,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年笤闯,在試婚紗的時候發(fā)現(xiàn)自己被綠了堕阔。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡颗味,死狀恐怖超陆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情浦马,我是刑警寧澤时呀,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站晶默,受9級特大地震影響谨娜,放射性物質發(fā)生泄漏。R本人自食惡果不足惜磺陡,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一趴梢、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧币他,春花似錦坞靶、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至拍冠,卻和暖如春尿这,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背庆杜。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工射众, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人欣福。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓责球,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子雏逾,可洞房花燭夜當晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理嘉裤,服務發(fā)現(xiàn),斷路器栖博,智...
    卡卡羅2017閱讀 134,651評論 18 139
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,803評論 6 342
  • 蝸判汲瑁—越努力 越幸運 該不該擱下重重的殼 尋找到底哪里有藍天 我要一步一步往上爬 等待陽光靜靜看著它的臉 小小的天...
    聽音悟道閱讀 244評論 0 0
  • 我認為英雄聯(lián)盟好玩主要體現(xiàn)在一下幾點: 1、游戲本身的玩法形成體系仇让,多樣化玩法盡有典奉,而且游戲不斷的更新也在加入新的...
    SenHsiao閱讀 701評論 0 2