SpringBoot中使用Jedis進(jìn)行緩存

1.引入Jedis依賴

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>

2.配置Jedis

    # Redis數(shù)據(jù)庫索引(默認(rèn)為0)
    spring.redis.database=0
    # Redis服務(wù)器地址
    spring.redis.host=127.0.0.1
    # Redis服務(wù)器連接端口
    spring.redis.port=6379
    # Redis服務(wù)器連接密碼(默認(rèn)為空)
    spring.redis.password=******
    # 連接池最大連接數(shù)(使用負(fù)值表示沒有限制)
    spring.redis.pool.max-active=13
    # 連接池最大阻塞等待時(shí)間(使用負(fù)值表示沒有限制)
    spring.redis.pool.max-wait=-1
    # 連接池中的最大空閑連接
    spring.redis.pool.max-idle=0
    # 連接池中的最小空閑連接
    spring.redis.pool.min-idle=0
    # 連接超時(shí)時(shí)間(毫秒)
    spring.redis.timeout=1800000

3.在@Configuration中配置Jedis

    /**
     * 緩存管理器
     * 
     * @param redisTemplate
     * @return
     */
    @Bean
    public CacheManager cacheManager(RedisTemplate<?, ?> redisTemplate) {
        RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);
        // 設(shè)置緩存過期時(shí)間
        cacheManager.setDefaultExpiration(10000);
        return cacheManager;
    }

    /**
     * RedisTemplate模板配置摩渺,設(shè)置數(shù)據(jù)存入 redis 的序列化方式
     * 
     * @param redisConnectionFactory
     *            redis連接工廠
     * @return RedisTemplate 對(duì)象
     */
    @SuppressWarnings({ "unchecked", "rawtypes" })
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        // 使用Jackson2JsonRedisSerialize 替換默認(rèn)序列化
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
        // 設(shè)置value的序列化規(guī)則和 key的序列化規(guī)則
        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashKeySerializer(jackson2JsonRedisSerializer);
        redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
        redisTemplate.setDefaultSerializer(jackson2JsonRedisSerializer);
        redisTemplate.setEnableDefaultSerializer(true);
        redisTemplate.afterPropertiesSet();
        return redisTemplate;
    }

    /**
     * 實(shí)例化 HashOperations 對(duì)象,可以使用 Hash 類型操作
     *
     * @param redisTemplate
     * @return
     */
    @Bean
    public HashOperations<String, String, Object> hashOperations(RedisTemplate<String, Object> redisTemplate) {
        return redisTemplate.opsForHash();
    }

    /**
     * 實(shí)例化 ValueOperations 對(duì)象,可以使用 String 操作
     *
     * @param redisTemplate
     * @return
     */
    @Bean
    public ValueOperations<String, Object> valueOperations(RedisTemplate<String, Object> redisTemplate) {
        return redisTemplate.opsForValue();
    }

    /**
     * 實(shí)例化 ListOperations 對(duì)象,可以使用 List 操作
     *
     * @param redisTemplate
     * @return
     */
    @Bean
    public ListOperations<String, Object> listOperations(RedisTemplate<String, Object> redisTemplate) {
        return redisTemplate.opsForList();
    }

    /**
     * 實(shí)例化 SetOperations 對(duì)象,可以使用 Set 操作
     *
     * @param redisTemplate
     * @return
     */
    @Bean
    public SetOperations<String, Object> setOperations(RedisTemplate<String, Object> redisTemplate) {
        return redisTemplate.opsForSet();
    }

    /**
     * 實(shí)例化 ZSetOperations 對(duì)象,可以使用 ZSet 操作
     *
     * @param redisTemplate
     * @return
     */
    @Bean
    public ZSetOperations<String, Object> zSetOperations(RedisTemplate<String, Object> redisTemplate) {
        return redisTemplate.opsForZSet();
    }

4.在Service層使用注解

    @CacheConfig(cacheNames = "areaLinkageService") :cacheNames為key的名稱前綴丘跌,areaLinkageService會(huì)轉(zhuǎn)換成Bean的全路徑
    @Cacheable(value="findProvince"):聲明使用緩存思恐,value會(huì)和參數(shù)一起做為key,當(dāng)緩存中存在的情況不會(huì)調(diào)用方法涛碑,而是直接從緩存中返回結(jié)果
    @CachePut(value="findProvince"):該注解表示每次請(qǐng)求都會(huì)寫入緩存,但是不會(huì)從緩存中取數(shù)據(jù)
    @CacheEvict(value="findProvince", allEntries=true)  :注解表示清除指定緩存
    詳細(xì)屬性參考:https://www.cnblogs.com/fashflying/p/6908028.html

5.在啟動(dòng)類上啟用緩存

    @EnableCaching
    public class TemplateApplication {...}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末孵淘,一起剝皮案震驚了整個(gè)濱河市蒲障,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖揉阎,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件庄撮,死亡現(xiàn)場離奇詭異,居然都是意外死亡毙籽,警方通過查閱死者的電腦和手機(jī)洞斯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坑赡,“玉大人烙如,你說我怎么就攤上這事√瑁” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵搀突,是天一觀的道長刀闷。 經(jīng)常有香客問我,道長仰迁,這世上最難降的妖魔是什么甸昏? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮徐许,結(jié)果婚禮上施蜜,老公的妹妹穿的比我還像新娘。我一直安慰自己雌隅,他們只是感情好翻默,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著恰起,像睡著了一般修械。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上检盼,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天肯污,我揣著相機(jī)與錄音,去河邊找鬼吨枉。 笑死蹦渣,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的貌亭。 我是一名探鬼主播柬唯,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼圃庭!你這毒婦竟也來了权逗?” 一聲冷哼從身側(cè)響起美尸,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎斟薇,沒想到半個(gè)月后师坎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡堪滨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年胯陋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片袱箱。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡遏乔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出发笔,到底是詐尸還是另有隱情盟萨,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布了讨,位于F島的核電站捻激,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏前计。R本人自食惡果不足惜胞谭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望男杈。 院中可真熱鬧丈屹,春花似錦、人聲如沸伶棒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽肤无。三九已至先蒋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間舅锄,已是汗流浹背鞭达。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來泰國打工司忱, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留皇忿,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓坦仍,卻偏偏與公主長得像鳍烁,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子繁扎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

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

  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,748評(píng)論 6 342
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理幔荒,服務(wù)發(fā)現(xiàn)糊闽,斷路器,智...
    卡卡羅2017閱讀 134,599評(píng)論 18 139
  • 1.1 spring IoC容器和beans的簡介 Spring 框架的最核心基礎(chǔ)的功能是IoC(控制反轉(zhuǎn))容器爹梁,...
    simoscode閱讀 6,701評(píng)論 2 22
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架右犹,建立于...
    Hsinwong閱讀 22,311評(píng)論 1 92
  • 以前寫過一篇文章《如何正確應(yīng)聘慘品經(jīng)理》是說的怎么霸道的面試慘品崗位?怎么樣在面試過程中主導(dǎo)節(jié)奏姚垃?隨之說會(huì)寫一篇王...
    敗家閱讀 298評(píng)論 0 2