SpringBoot整合Redis緩存

前言:此整合為非注解形式羡微,使用工具類進行自主數(shù)據(jù)控制

專有名詞解析:Jedis是Redis官方推薦的面向Java的操作Redis的客戶端排苍,而RedisTemplate是SpringDataRedis中對JedisApi的高度封裝

環(huán)境:
IDEA版本2017.3.1 x64
JDK1.8
SpringBoot2.1.1

總流程:

  • pom導(dǎo)入Redis的依賴組件
  • 全局配置文件配置Redis
  • 編寫RedisTemplate工具類
  • 編寫測試用例

pom導(dǎo)入Redis的依賴組件

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

全局配置文件配置Redis

spring:
  redis:
      host: yourIpAddress
      password: yourPassword
      port: 6379
      jedis:
        pool:
          #最大連接數(shù)據(jù)庫連接數(shù),設(shè) 0 為沒有限制
          max-active: 8
          #最大等待連接中的數(shù)量,設(shè) 0 為沒有限制
          max-idle: 8
          #最大建立連接等待時間。如果超過此時間將接到異常苔严。設(shè)為-1表示無限制贡羔。
          max-wait: -1ms
          #最小等待連接中的數(shù)量,設(shè) 0 為沒有限制
          min-idle: 0

編寫RedisTemplate工具類

/**
 * @create 2018-12-10 23:10
 * redis工具類
 */
@Component
public final class RedisUtil {
    @Autowired
    private RedisTemplate<Object, Object> redisTemplate;

    /**
     * 指定緩存失效時間
     *
     * @param key  鍵
     * @param time 時間(秒)
     * @return
     */
    public boolean expire(String key, long time) {
        try {
            if (time > 0) {
                redisTemplate.expire(key, time, TimeUnit.SECONDS);
            }
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    /**
     * 根據(jù)key 獲取過期時間
     *
     * @param key 鍵 不能為null
     * @return 時間(秒) 返回0代表為永久有效
     */
    public long getExpire(String key) {
        return redisTemplate.getExpire(key, TimeUnit.SECONDS);
    }

    /**
     * 判斷key是否存在
     *
     * @param key 鍵
     * @return true 存在 false不存在
     */
    public boolean hasKey(String key) {
        try {
            return redisTemplate.hasKey(key);
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    /**
     * 刪除緩存
     *
     * @param key 可以傳一個值 或多個
     */
    @SuppressWarnings("unchecked")
    public void del(String... key) {
        if (key != null && key.length > 0) {
            if (key.length == 1) {
                redisTemplate.delete(key[0]);
            } else {
                redisTemplate.delete(CollectionUtils.arrayToList(key));
            }
        }
    }
    // ============================String=============================

    /**
     * 普通緩存獲取
     *
     * @param key 鍵
     * @return 值
     */
    public Object get(String key) {
        return key == null ? null : redisTemplate.opsForValue().get(key);
    }

    /**
     * 普通緩存放入
     *
     * @param key   鍵
     * @param value 值
     * @return true成功 false失敗
     */
    public boolean set(String key, Object value) {
        try {
            redisTemplate.opsForValue().set(key, value);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    /**
     * 普通緩存放入并設(shè)置時間
     *
     * @param key   鍵
     * @param value 值
     * @param time  時間(秒) time要大于0 如果time小于等于0 將設(shè)置無限期
     * @return true成功 false 失敗
     */
    public boolean set(String key, Object value, long time) {
        try {
            if (time > 0) {
                redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
            } else {
                set(key, value);
            }
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    /**
     * 遞增
     *
     * @param key   鍵
     * @param delta 要增加幾(大于0)
     * @return
     */
    public long incr(String key, long delta) {
        if (delta < 0) {
            throw new RuntimeException("遞增因子必須大于0");
        }
        return redisTemplate.opsForValue().increment(key, delta);
    }

    /**
     * 遞減
     *
     * @param key   鍵
     * @param delta 要減少幾(小于0)
     * @return
     */
    public long decr(String key, long delta) {
        if (delta < 0) {
            throw new RuntimeException("遞減因子必須大于0");
        }
        return redisTemplate.opsForValue().increment(key, -delta);
    }
}

編寫測試用例

@Autowired
RedisUtil redisUtil;

@Test
    public void testRedis(){
        Employee employee = employeeMapper.getEmpById(1);
        //往redis中存入對象
        redisUtil.set("emp",employee);
        //從redis中取出對象
        Employee emp = (Employee) redisUtil.get("emp");
        System.out.println(emp);
    }

查看緩存:


更多關(guān)于Redis的配置可參考官網(wǎng):https://redis.io/

更多Spring Boot整合可瀏覽此博客:malizhi.cn

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末云稚,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子进统,更是在濱河造成了極大的恐慌助币,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件螟碎,死亡現(xiàn)場離奇詭異眉菱,居然都是意外死亡,警方通過查閱死者的電腦和手機掉分,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進店門俭缓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人酥郭,你說我怎么就攤上這事华坦。” “怎么了不从?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵惜姐,是天一觀的道長。 經(jīng)常有香客問我椿息,道長歹袁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任撵颊,我火速辦了婚禮宇攻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘倡勇。我一直安慰自己逞刷,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布妻熊。 她就那樣靜靜地躺著夸浅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪扔役。 梳的紋絲不亂的頭發(fā)上帆喇,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天,我揣著相機與錄音亿胸,去河邊找鬼坯钦。 笑死预皇,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的婉刀。 我是一名探鬼主播吟温,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼突颊!你這毒婦竟也來了鲁豪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤律秃,失蹤者是張志新(化名)和其女友劉穎爬橡,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體棒动,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡糙申,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了船惨。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片郭宝。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖掷漱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情榄檬,我是刑警寧澤卜范,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布,位于F島的核電站鹿榜,受9級特大地震影響海雪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜舱殿,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一奥裸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧沪袭,春花似錦湾宙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至死宣,卻和暖如春伟恶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背毅该。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工博秫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留潦牛,地道東北人。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓挡育,卻偏偏與公主長得像巴碗,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子静盅,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,728評論 2 351