SpringBoot #2:spring boot集成Redis緩存

這是篇文章是建立在上一篇文章基礎(chǔ)之上的,前面講了使用SpringBoot并集成了jpa佃扼、swagger2激涤、logging,這篇文章將講述在此基礎(chǔ)上集成redis緩存

Redis緩存

? Redis是很好的緩存框架累提,支持集群尘喝。在很多系統(tǒng)中為了提升高并發(fā)業(yè)務(wù)的體驗(yàn),都會(huì)使用緩存框架斋陪,例如各式各樣的秒殺系統(tǒng)朽褪。

第1步,在服務(wù)器上安裝redis

? 因?yàn)槲耶?dāng)前使用的電腦是windows的无虚,所以我就只講講在windows上redis的安裝了缔赠,

  1. redis-windows-x64.3.2.100下載zip包到電腦上并解壓7

  2. 使用cmd配置服務(wù),cd到redis-windows-x64.3.2.100目錄下骑科,執(zhí)行以下代碼橡淑,在系統(tǒng)服務(wù)列表中就可以看到redis服務(wù)了

    redis-server --service-install redis.windows-service.conf --loglevel verbose
    
  3. 可以在系統(tǒng)服務(wù)列表中啟動(dòng)或停止redis服務(wù),也可以cd到redis-windows-x64.3.2.100目錄下執(zhí)行以下命令

    redis-server --service-start//啟動(dòng)
    redis-server --service-stop//停止
    redis-server --service-uninstall//卸載
    

第2步咆爽,在application.yml中配制redis服務(wù)器信息

? 在application.yml中配制redis服務(wù)器的地址梁棠、端口號(hào)乖參數(shù)

spring:
  datasource:
    driverClassName: com.mysql.jdbc.Driver
    url: jdbc:mysql://220.192.168.231:3306/test
    username: root
    password: 123456
    initialSize: 5
    minIdle: 5
    maxActive: 20
  jpa:
    hibernate:
      ddl-auto: update
      naming:
        strategy: org.hibernate.cfg.ImprovedNamingStrategy
    show-sql: true
    database: mysql
  redis:
    database: 0
    host: localhost
    port: 6379
    pool:
      max-idle: 8
      max-active: 8
      max-wait: -1
      min-idle: 0

第3步,在java文件配制緩存

? 在config包下新建RedisCacheConfig.java斗埂,繼承CachingConfigurerSupport符糊,具體內(nèi)容如下:

/**
 * Name:RedisCacheConfig
 * Description:
 * Author:leix
 * Time: 2017/4/10 13:48
 */
@Configuration
@EnableCaching
public class RedisCacheConfig extends CachingConfigurerSupport {

    @Autowired
    private JedisConnectionFactory jedisConnectionFactory;

    @Bean
    public RedisTemplate redisTemplate() {
        StringRedisTemplate template = new StringRedisTemplate(jedisConnectionFactory);
        //定義key序列化方式
        RedisSerializer<String> redisSerializer = new StringRedisSerializer();
        //定義value的序列化方式
        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);
        template.setKeySerializer(redisSerializer);
        template.setHashKeySerializer(redisSerializer);
        template.setValueSerializer(jackson2JsonRedisSerializer);
        template.setHashValueSerializer(jackson2JsonRedisSerializer);
        template.afterPropertiesSet();
        return template;
    }

    public CacheManager cacheManager(@SuppressWarnings("rawtypes") RedisTemplate redisTemplate) {
        RedisSerializer keySerializer = new StringRedisSerializer();
        redisTemplate.setKeySerializer(keySerializer);
        redisTemplate.setHashKeySerializer(keySerializer);
        RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);
        return cacheManager;
    }

    @Bean
    @Override
    public KeyGenerator keyGenerator() {
        return (target, method, objects) -> {
            StringBuilder sb = new StringBuilder();
            sb.append(target.getClass().getName());
            sb.append(":" + method.getName() + ":");
            for (Object obj : objects) {
                sb.append(obj.toString());
            }
            return sb.toString();
        };
    }

}

? jedisConnectionFactory會(huì)提示“could not autowire.no beans of JedisConnectionFactory”,我測(cè)試了這個(gè)不影響運(yùn)行呛凶。

第4步男娄,在需要緩存的方法上添加緩存注解

@Service
@Transactional
public class CityServiceImpl implements CityService {

    @Autowired
    CityRepository cityRepository;

    @Override
    @Cacheable(value = "city")
    public City findById(int id) {
        return cityRepository.findById(id);
    }
}

這里可能有個(gè)小問題,我怎么知道緩存是否配制成功了呢漾稀?答案是可以通過日志來判定模闲,在swagger-ui.html界面上,對(duì)一個(gè)服務(wù)測(cè)試崭捍,如果沒有緩存的話尸折,會(huì)一直看到sql執(zhí)行的日志,如果有緩存的話只會(huì)在第一次執(zhí)行時(shí)有sql執(zhí)行操作

詳細(xì)代碼來看這里看這里吧殷蛇!源碼@github

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末芝加,一起剝皮案震驚了整個(gè)濱河市冯乘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖敢辩,帶你破解...
    沈念sama閱讀 221,331評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件济丘,死亡現(xiàn)場(chǎng)離奇詭異献汗,居然都是意外死亡旱函,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,372評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宴猾,“玉大人圆存,你說我怎么就攤上這事〕鸲撸” “怎么了沦辙?”我有些...
    開封第一講書人閱讀 167,755評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)讹剔。 經(jīng)常有香客問我油讯,道長(zhǎng),這世上最難降的妖魔是什么延欠? 我笑而不...
    開封第一講書人閱讀 59,528評(píng)論 1 296
  • 正文 為了忘掉前任陌兑,我火速辦了婚禮,結(jié)果婚禮上由捎,老公的妹妹穿的比我還像新娘兔综。我一直安慰自己,他們只是感情好狞玛,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,526評(píng)論 6 397
  • 文/花漫 我一把揭開白布软驰。 她就那樣靜靜地躺著,像睡著了一般心肪。 火紅的嫁衣襯著肌膚如雪锭亏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,166評(píng)論 1 308
  • 那天硬鞍,我揣著相機(jī)與錄音慧瘤,去河邊找鬼。 笑死固该,一個(gè)胖子當(dāng)著我的面吹牛锅减,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播伐坏,決...
    沈念sama閱讀 40,768評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼怔匣,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了著淆?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,664評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤拴疤,失蹤者是張志新(化名)和其女友劉穎永部,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體呐矾,經(jīng)...
    沈念sama閱讀 46,205評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡苔埋,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,290評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蜒犯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片组橄。...
    茶點(diǎn)故事閱讀 40,435評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡荞膘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出玉工,到底是詐尸還是另有隱情羽资,我是刑警寧澤,帶...
    沈念sama閱讀 36,126評(píng)論 5 349
  • 正文 年R本政府宣布遵班,位于F島的核電站屠升,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏狭郑。R本人自食惡果不足惜腹暖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,804評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望翰萨。 院中可真熱鬧脏答,春花似錦、人聲如沸亩鬼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,276評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽辛孵。三九已至丛肮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間魄缚,已是汗流浹背宝与。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留冶匹,地道東北人习劫。 一個(gè)月前我還...
    沈念sama閱讀 48,818評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像嚼隘,于是被迫代替她去往敵國(guó)和親诽里。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,442評(píng)論 2 359

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