springboot配置redis

  • 1.pom文件
        <!-- Spring Boot Redis -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-redis</artifactId>
            <version>1.3.2.RELEASE</version>
        </dependency>
  • 2.application.properties文件
#redis
spring.redis.database=1
spring.redis.host=192.168.0.x
spring.redis.port=6379
spring.redis.password=123456
spring.redis.pool.max-active=8
spring.redis.pool.max-wait=-1
spring.redis.pool.max-idle=8
spring.redis.pool.min-idle=0
spring.redis.timeout=0
  • 3.redis配置類
package com.infinite.common.config;

import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

/**
 * 
* @ClassName: RedisConfig
* @Description: redisTemplate配置類
* @author chenliqiao
* @date 2018年4月9日 上午10:31:28
*
 */
@Configuration
@EnableCaching
public class RedisConfig {
    
    @Bean
    public CacheManager cacheManager(RedisTemplate<?, ?> redisTemplate){
        CacheManager cacheManager=new RedisCacheManager(redisTemplate);
        return cacheManager;
    }
    
    @Bean
    public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory redisConnectionFactory){
        RedisTemplate<String,Object> redisTemplate=new RedisTemplate<>();
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        
        //更改序列化方式
        RedisSerializer<String> stringSerializer = new StringRedisSerializer();
        redisTemplate.setKeySerializer(stringSerializer);
        redisTemplate.setValueSerializer(stringSerializer);
        redisTemplate.setHashKeySerializer(stringSerializer);
        redisTemplate.setHashValueSerializer(stringSerializer);
        
        return redisTemplate;
    }
    
    @Bean
    public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory){
        StringRedisTemplate stringRedisTemplate=new StringRedisTemplate();
        stringRedisTemplate.setConnectionFactory(redisConnectionFactory);
        return stringRedisTemplate;
    }

}

  • 4.RedisTemplate使用
/**
 * 
* @ClassName: SecurityService
* @Description: 系統(tǒng)登錄鑒權(quán)業(yè)務(wù)類
* @author chenliqiao
* @date 2018年4月4日 上午11:04:03
*
 */
@Service
public class SecurityService {

    @Autowired
    private RedisTemplate<String, Object> redisTemplate;

    /**
     * 登錄成功后涩澡,緩存用戶信息
     */
    private void saveLoginInfoToCache(String token)throws Exception{
        //判斷是否已緩存了該用戶信息
        if(this.redisTemplate.opsForValue().get(token)!=null)
            return;
        
        //通過(guò)token查詢sso的用戶信息
        SsoUserInfo ssoUserInfo=this.remoteService.getSsoUserInfo(token);
        //檢查本地是否存在該用戶信息
        UserInfo baseInfo=ssoUserInfo!=null ? this.userInfoService.findById(ssoUserInfo.getId()):null;
        if(baseInfo==null)
            throw new Exception("本地不存在該用戶信息!");
        
        CurrentUserInfo curUserInfo=new CurrentUserInfo();
        //保存用戶基本信息迷扇、角色信息和權(quán)限英文名集合
        curUserInfo.setBaseInfo(baseInfo);
        curUserInfo.setRoleInfo(this.roleInfoService.findById(baseInfo.getRoleId()));
        curUserInfo.setPermissionEnNames(this.permissionInfoService.findPermissionEnNamesByRoleId(baseInfo.getRoleId()));
        //緩存到redis中,并設(shè)置過(guò)期時(shí)間
        this.redisTemplate.opsForValue().set(token,JsonUtil.beanToJson(curUserInfo),Constants.CUR_USER_CACHING_EXPIRE_TIME,TimeUnit.MINUTES);
    }
    
    /**
     * 檢查是否擁有訪問(wèn)當(dāng)前方法的權(quán)限
     */
    private boolean ifOwnPermission(String currentPermissionName,String token)throws Exception{
        //從緩存中獲取用戶信息
        if(this.redisTemplate.opsForValue().get(token)==null)
            return false;
        CurrentUserInfo curUserInfo=JsonUtil.jsonToBean((String) this.redisTemplate.opsForValue().get(token), CurrentUserInfo.class);
        
        //根據(jù)用戶信息中的權(quán)限英文集合屬性進(jìn)行判斷
        List<String> permissionNames=curUserInfo.getPermissionEnNames();
        if(CollectionUtils.isEmpty(permissionNames))
            return false;
        if(!permissionNames.contains(currentPermissionName))
            return false;
        return true;
    }
    

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市偎肃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌勉抓,老刑警劉巖骇吭,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異岩睁,居然都是意外死亡钞脂,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門捕儒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)冰啃,“玉大人,你說(shuō)我怎么就攤上這事刘莹∫隗裕” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵栋猖,是天一觀的道長(zhǎng)净薛。 經(jīng)常有香客問(wèn)我,道長(zhǎng)蒲拉,這世上最難降的妖魔是什么肃拜? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮雌团,結(jié)果婚禮上燃领,老公的妹妹穿的比我還像新娘。我一直安慰自己锦援,他們只是感情好猛蔽,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般曼库。 火紅的嫁衣襯著肌膚如雪区岗。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,274評(píng)論 1 300
  • 那天毁枯,我揣著相機(jī)與錄音慈缔,去河邊找鬼。 笑死种玛,一個(gè)胖子當(dāng)著我的面吹牛藐鹤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播赂韵,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼娱节,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了祭示?” 一聲冷哼從身側(cè)響起括堤,我...
    開(kāi)封第一講書(shū)人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎绍移,沒(méi)想到半個(gè)月后悄窃,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蹂窖,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年轧抗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瞬测。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡横媚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出月趟,到底是詐尸還是另有隱情灯蝴,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布孝宗,位于F島的核電站穷躁,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏因妇。R本人自食惡果不足惜问潭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望婚被。 院中可真熱鬧狡忙,春花似錦、人聲如沸址芯。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至北专,卻和暖如春禀挫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背逗余。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工特咆, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留季惩,地道東北人录粱。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像画拾,于是被迫代替她去往敵國(guó)和親啥繁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

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

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理青抛,服務(wù)發(fā)現(xiàn)旗闽,斷路器,智...
    卡卡羅2017閱讀 134,654評(píng)論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,807評(píng)論 6 342
  • 配置redis多數(shù)據(jù)源蜜另,說(shuō)白了就是建立多個(gè)redisTemplate,具體看代碼
    Imstillaboy閱讀 3,581評(píng)論 0 1
  • 快問(wèn)答環(huán)節(jié)才入群聽(tīng)瀟灑姐的分享举瑰,14年現(xiàn)場(chǎng)聽(tīng)過(guò)一次瀟灑姐的講座捣辆,這次線上聆聽(tīng)覺(jué)得還是那樣的帶感,聽(tīng)她真實(shí)的剖析自己...
    海倫向閱讀 313評(píng)論 0 0
  • 周日晚上此迅,兒子玩似耄回來(lái),又到了學(xué)習(xí)拼音的時(shí)間耸序。 他喝了一一點(diǎn)水忍些,吃了一個(gè)梨,然后開(kāi)始學(xué)習(xí)坎怪“瞻樱可能是他玩累了,也可能是...
    monicaqiqi閱讀 302評(píng)論 0 0