Redis碘饼,StringRedisTemplate使用講解

其實說到redis,一個廣泛流行的中間件。依稀記得當(dāng)年還是小白的時候第一次聽老板講redis簡直覺得神奇又神秘艾恼。依稀記得那是一個冬天住涉,剛剛參加工作以前只知道spring,spring mvc钠绍,spring boot舆声,mybatis等。然后第一份工作實習(xí)過后轉(zhuǎn)正的日子里柳爽。老板讓我看看redis和elasticsearch媳握。然后云里霧里的自己學(xué)習(xí)×赘看了官網(wǎng)蛾找,記了筆記。但是對于中間件的理解還是一知半解赵誓。一次下班的晚上自覺加班學(xué)習(xí)打毛。和老板閑聊時老板給我出了一個場景讓我解決。就是一個2g服務(wù)器做秒殺活動怎么做架曹?當(dāng)時知識儲匯少的可憐的我除了加服務(wù)器竟然無法可想隘冲。然后老板指點我說redis。至今我還記得那種初入神奇的知識海洋的激動和感嘆绑雄。并在自己的u盤記錄了幾句心得展辞。在此分享給大家。


2018.3.9記錄

其實在于現(xiàn)在的我來講万牺,這個言語和理解略有單純和淺薄罗珍。可是這種心情卻值得銘記和回憶脚粟。一般來講我的文章都會寫的心路歷程和想法較多覆旱,并不是為了湊字數(shù),而是希望不經(jīng)意的某個想法能讓某個新人看了豁然開朗或者學(xué)到些什么核无。我也是這么一點一滴過來的扣唱,反正于我而言很多時候看帖子真的純干貨的技術(shù)貼反而不太明白。我希望自己做到寫的東西基礎(chǔ)薄弱也能看懂团南。如果因此做的太滿反而廢話很多噪沙,對此感到抱歉。

閑不多談繼續(xù)說redis在java中的使用吐根。

1正歼,導(dǎo)包(因為我習(xí)慣用sb框架,所以這里用的也是data-redis)

<dependency>

? ? ? ? ? ? <groupId>org.springframework.boot</groupId>

? ? ? ? ? ? <artifactId>spring-boot-starter-data-redis</artifactId>

? ? ? ? </dependency>

2拷橘,配置文件中配置(>忠濉喜爷!還要注意一點,我這里是采用了redis的一主二從三哨兵模式萄唇。所以配置的也是哨兵檩帐。如果普通直連會更簡單)

#因為是哨兵所以是redis.sentinel.master。名字是在redis中配置的穷绵。別盲目copy

spring.redis.sentinel.master=master001

spring.redis.password=XXXXX

#因為哨兵肯定多節(jié)點轿塔。。中間英文“仲墨,”分割

spring.redis.sentinel.nodes=192.168.1.106:26379,192.168.1.107:26379,192.168.1.108:26379

#超時時間啥的~~真的是千篇一律~~沒啥說的了勾缭。下面的都可以省略的

spring.redis.timeout=5000

spring.redis.pool.max-active=8

spring.redis.pool.max-wait=-1

spring.redis.pool.min-idle=0

spring.redis.pool.max-idle=8

3,配置完了之后就可以直接autowired注入使用了目养。這里必須感謝下spring家族的高度封裝俩由。這里是一個最簡單的存取demo

package com.example.demo.redis;

import java.util.concurrent.TimeUnit;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.data.redis.core.StringRedisTemplate;

import org.springframework.stereotype.Service;

@Service

public class RedisUtil {

@Autowired

StringRedisTemplate stringRedisTemplate;

public String setRedis(String key,String value) {

stringRedisTemplate.opsForValue().set(key, value, 50l,TimeUnit.SECONDS);

return "ok";

}

public String getRedis(String key) {

String value =stringRedisTemplate.opsForValue().get(key);

return value;

}

}

這里廢話多一點加上延伸一點內(nèi)容,一步步講解下StringRedisTemplate:

? ? -和redis中的數(shù)據(jù)類型是一樣的癌蚁。也分為五種幻梯,對應(yīng)著不同的方法:

? ? ? ? ? ? ? ? stringRedisTemplate.opsForValue();  //操作字符串

??????????????? stringRedisTemplate.opsForHash();   //操作hash

? ? ? ? ? ? ? ? stringRedisTemplate.opsForList();   //操作list

? ? ? ? ? ? ? ? stringRedisTemplate.opsForSet();  ? //操作set

????????????????stringRedisTemplate.opsForZSet();   //操作有序set

? ? -這里再聲明一下redis中的數(shù)據(jù)類型:鍵的類型只能為字符串,值支持五種數(shù)據(jù)類型:字符串努释、列表碘梢、集合、散列表伐蒂、有序集合煞躬。

? ? 對redis概念還不熟的童鞋可以參考下這份文檔:Redis

其實我個人可能經(jīng)歷不足,所以一般用redis都是存儲字符串的逸邦。哪怕是真的存別的數(shù)據(jù)類型恩沛。我也都是以json串的形式存儲,取的時候再解析缕减。

這里明確講一下雷客,上面方法獲取的是redis中value是該類型的所有實例。例如下面:獲取數(shù)據(jù)庫中值是String類型的所有數(shù)據(jù)

????????ValueOperations<String, String> ops = stringRedisTemplate.opsForValue();

然后我們在這個基礎(chǔ)上可以添加桥狡,查詢等:

? ? ? ? ops.set(key,value); //向redis中插入數(shù)據(jù)搅裙。因為這個沒有設(shè)置過期時間所以是永久存儲的。

? ? ? ? ops.set(key,value,time,timeUtil); //向redis中插入數(shù)據(jù)裹芝。第三個參數(shù)是一個long型的時間呈宇。最后一個參數(shù)是時間的單位。比如我上面demo中就是設(shè)置的50秒過期局雄。

? ? ? ? ops.get(key);//獲取redis中指定key 的value值。

注意下上面的是針對字符串類型value的操作存炮。如果是別的值類型操作是有一點點不同的炬搭,例如set:

????????stringRedisTemplate.opsForSet().add("keySet", "1","2","3"); //向指定key中存放set集合

????????stringRedisTemplate.opsForSet().isMember("keySet", "1"); //根據(jù)key查看集合中是否存在指定數(shù)據(jù)

????????stringRedisTemplate.opsForSet().members("keySet"); //根據(jù)key獲取set集合

stringRedisTemplate還有一些別的方法:

stringRedisTemplate.expire(key,1000 , TimeUnit.MILLISECONDS); //設(shè)置過期時間

stringRedisTemplate.hasKey("isHas"); //檢查key是否存在蜈漓,返回boolean值

stringRedisTemplate.delete(key); //根據(jù)key刪除記錄

stringRedisTemplate.getExpire(key); //根據(jù)key獲取過期時間

stringRedisTemplate.getExpire(key,TimeUnit.SECONDS); //根據(jù)key獲取過期時間并換算成指定單位

差不多常用的就這些了吧宫盔。其實StringRedisTemplate是一個spring替我們封裝好了的一個類融虽。它繼承自redisTemplate。具體區(qū)別啥的大眾又沒有實際意義的說:1灼芭,不共通有额。 2,使用的序列化類不同彼绷。你要是看到這就能看懂只能夸一句你很棒棒哦~~但是實際上要想深入了解我建議大家還是看看spring官網(wǎng)上的介紹巍佑。

還有就是redis涉及到發(fā)布訂閱事務(wù)處理,集群設(shè)置之類的相對于存儲比較深奧的東西寄悯,我建議大家還是先把官網(wǎng)的文檔都讀一遍萤衰。有不理解的再去單獨查詢。這里丟個官方手冊地址:spring-data-redis猜旬。

然后如果有什么疑問或者覺得我說的哪里有問題歡迎留言或者私信指出脆栋。

全文手打~~這么不容易的寫個文~~如果你覺得用到了理解了~留個言點個贊轉(zhuǎn)個發(fā)什么的啊~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市洒擦,隨后出現(xiàn)的幾起案子椿争,更是在濱河造成了極大的恐慌,老刑警劉巖熟嫩,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秦踪,死亡現(xiàn)場離奇詭異,居然都是意外死亡邦危,警方通過查閱死者的電腦和手機洋侨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來倦蚪,“玉大人希坚,你說我怎么就攤上這事×昵遥” “怎么了裁僧?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長慕购。 經(jīng)常有香客問我聊疲,道長,這世上最難降的妖魔是什么沪悲? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任获洲,我火速辦了婚禮,結(jié)果婚禮上殿如,老公的妹妹穿的比我還像新娘贡珊。我一直安慰自己最爬,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布门岔。 她就那樣靜靜地躺著爱致,像睡著了一般。 火紅的嫁衣襯著肌膚如雪寒随。 梳的紋絲不亂的頭發(fā)上糠悯,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天,我揣著相機與錄音妻往,去河邊找鬼互艾。 笑死,一個胖子當(dāng)著我的面吹牛蒲讯,可吹牛的內(nèi)容都是我干的忘朝。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼判帮,長吁一口氣:“原來是場噩夢啊……” “哼局嘁!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起晦墙,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤悦昵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后晌畅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體但指,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年抗楔,在試婚紗的時候發(fā)現(xiàn)自己被綠了棋凳。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡连躏,死狀恐怖剩岳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情入热,我是刑警寧澤拍棕,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站勺良,受9級特大地震影響绰播,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜尚困,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一蠢箩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦谬泌、人聲如沸示弓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至跨跨,卻和暖如春潮峦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背勇婴。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工忱嘹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人耕渴。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓拘悦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親橱脸。 傳聞我的和親對象是個殘疾皇子础米,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,685評論 2 360

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

  • NOSQL類型簡介鍵值對:會使用到一個哈希表,表中有一個特定的鍵和一個指針指向特定的數(shù)據(jù)添诉,如redis屁桑,volde...
    MicoCube閱讀 4,000評論 2 27
  • 我的應(yīng)用場景:因為業(yè)務(wù)需求,我們會每10分鐘從kafka得到數(shù)據(jù)開始處理栏赴,這時就會存在一種情況蘑斧,如果kafka數(shù)據(jù)...
    szgl_lucifer閱讀 7,343評論 0 3
  • 本文主要講 Redis 的使用竖瘾,如何與 SpringBoot 項目整合,如何使用注解方式和 RedisTempla...
    solocoder閱讀 4,112評論 3 25
  • 1.引入依賴包(可能會出現(xiàn)版本問題 1.4后) 2.redis 配置 # Redis數(shù)據(jù)庫索引(默認為0)spri...
    阿__飛閱讀 463評論 0 0
  • 【韓喜文2018.04.05星期四】 好展館讓天下沒有賣不出去的產(chǎn)品 好展館讓天下沒有不能傳承的文化 日精進:81...
    韓喜文閱讀 156評論 0 0