Redis-基礎(chǔ)知識(shí)

1吴菠、數(shù)據(jù)類(lèi)型

(1)基本數(shù)據(jù)類(lèi)型

String 
Hash 
List 
set 
sorted_set

(2) String

  • 常見(jiàn)操作
  • 單數(shù)據(jù)操作與多數(shù)據(jù)操作:
    多數(shù)據(jù)操作時(shí)mset理論上優(yōu)于get,但因Redis是單線程柠横,在多數(shù)據(jù)操作數(shù)據(jù)量極大的情況下启妹,建議對(duì)數(shù)據(jù)進(jìn)行拆分操作,避免線程阻塞肠槽;
  • String作為數(shù)據(jù)值操作
    string在Redis中是作為字符串,當(dāng)遇到增減類(lèi)操作時(shí)會(huì)轉(zhuǎn)換為數(shù)值型進(jìn)行計(jì)算奢啥;
    Redis所有的操作都是原子性秸仙,采用單線程進(jìn)行處理,可以避免并發(fā)帶來(lái)的數(shù)據(jù)影響桩盲;
    String作為數(shù)值型操作時(shí)寂纪,可用于控制數(shù)據(jù)庫(kù)表的主鍵。
  • 指定數(shù)據(jù)的生命周期:
    setex key seconds value
    psetex key millisecondes value
  • key 設(shè)置約定:表名:主鍵名:主鍵值:字段名
  • 注意事項(xiàng)
    String最大存儲(chǔ)量是512M;
    String存儲(chǔ)數(shù)據(jù)型計(jì)算的最大范圍是Long的最大值捞蛋;

(3) Hash:一個(gè)存儲(chǔ)空間內(nèi)保存多個(gè)鍵值對(duì)信息

  • 基本操作
    hset key field value
    hget key field
    hgetall key
    hdel key field1 [field2 ]

(4)List

  • 數(shù)據(jù)存儲(chǔ)需求:

  • 存儲(chǔ)多個(gè)數(shù)據(jù)孝冒,并對(duì)數(shù)據(jù)進(jìn)入存儲(chǔ)空間的順序進(jìn)行區(qū)分;

  • 底層使用雙向鏈表實(shí)現(xiàn)拟杉;

  • 基本操作:

    添加/修改數(shù)據(jù):
    lpush k v1 v2 
    rpush k v1 v2 
    獲取數(shù)據(jù):
    lrang key start stop
    lindex key index
    llen key 
    獲取并移除數(shù)據(jù):
    lpop
    rpop
    規(guī)定時(shí)間內(nèi)獲取并移除數(shù)據(jù):
    blpop k1 k2 timeout 
    brpop k1 k2 timeout
    移除指定數(shù)據(jù):
    lrem key count value
    
    • 業(yè)務(wù)場(chǎng)景:
    實(shí)現(xiàn)操作日志消息隊(duì)列庄涡;多臺(tái)機(jī)器的日志寫(xiě)到Redis中,多個(gè)寫(xiě)入搬设,一個(gè)消費(fèi)穴店;
    

    (5)Set:

    • 存儲(chǔ)需求:
      • 存儲(chǔ)大量的數(shù)據(jù),且要求快速查詢拿穴;
      • 底層與Hash結(jié)構(gòu)一致泣洞,也就是Hash右邊的Value為空;
      • Set不允許操作默色,如果重復(fù)第一次寫(xiě)入是成功球凰,后面寫(xiě)入失敗,不會(huì)覆蓋腿宰;
    • 基本操作:
    添加數(shù)據(jù):
    sadd K m1 m2 m3
    獲取全部數(shù)據(jù):
    smembers key
    刪除數(shù)據(jù):
    srem key m1 m2 
    獲取Set集合數(shù)據(jù)總量:
    scard key 
    判斷集合中是否包含指定數(shù)據(jù):
    sismember k m
    隨機(jī)獲取集合中指定數(shù)量的數(shù)據(jù):
    srandmember key  count 
    隨機(jī)獲取集合中指定數(shù)量的數(shù)據(jù)移出:
    spop key 
    求兩個(gè)集合的交并差集(也可保存)
    sinter k1 k2 
    sunion K1 k2 
    sdiff k1 k2 
    
    • 應(yīng)用場(chǎng)景:
      • 權(quán)限校驗(yàn): 交并差
      • PV UV統(tǒng)計(jì):同類(lèi)型數(shù)據(jù)的快速去重
      • 黑白名單:

    (6)sorted_set

  • 存儲(chǔ)需求:數(shù)據(jù)排序

  • 基本操作:

    添加數(shù)據(jù):
    zadd  score m1  score m2
    獲取全部數(shù)據(jù):
    zrang k start stop  [withscore]
    zrevrangr key start stop  [withscore]
    刪除數(shù)據(jù):
    zrem k m m 
    
  • 業(yè)務(wù)場(chǎng)景:

    • 活躍度統(tǒng)計(jì)呕诉;
    • 定時(shí)任務(wù)管理:
    • 限時(shí)操作:
    • 帶有權(quán)重的任務(wù)隊(duì)列管理:使用score記錄權(quán)重;
  • 注意事項(xiàng):

    • score保存的數(shù)據(jù)存儲(chǔ)空間是64位吃度;
    • score可以保存多精度的double值义钉,可能會(huì)丟失數(shù)據(jù)精度;
    • sorted_set 底層存儲(chǔ)還是基于set結(jié)構(gòu)的规肴,數(shù)據(jù)不能重復(fù),但他是覆蓋的夜畴,不是插入失敗拖刃;

2、業(yè)務(wù)場(chǎng)景:

(1)為計(jì)數(shù)器設(shè)置計(jì)數(shù)器:
  • 場(chǎng)景
API服務(wù)限流贪绘;1分鐘調(diào)用1000次兑牡;
按次計(jì)算:免費(fèi)下載10次之類(lèi);
  • 解決方案:
1税灌、利用incr操作超過(guò)最大值跑出異常的形式代替每次判斷是否大于最大值
2均函、判斷是否為nil ,如果是nil 設(shè)置為最大值-次數(shù);如果不是計(jì)數(shù)+1菱涤;業(yè)務(wù)調(diào)用失敗 苞也,計(jì)數(shù)-1;
3粘秆、遇到異常如迟,或者操作超過(guò)上限,視為達(dá)到上限;
(2)順序控制類(lèi)場(chǎng)景
  • 場(chǎng)景:
微信消息列表排序殷勘;
  • 解決方案:
1此再、借助List的數(shù)據(jù)具有順序的特征,對(duì)消息進(jìn)行管理玲销,將List作為棧使用输拇;
2、將置頂用戶與普通用戶分兩個(gè)List進(jìn)行保存贤斜;
3策吠、按照時(shí)間順序依次將用戶消息添加到不同的List中;

3蠢古、通用操作:

(1)key基本操作:

刪除key: del key 
獲取Key是否存在: exists key 
獲取key類(lèi)型:type key 
為Key設(shè)置有效期: 
expire key  seconds 
pexpire key millisseconds
獲取Key的有效時(shí)間:
ttl  key 
pttl key 
切換key從時(shí)效性轉(zhuǎn)換為永久性:
persist key
查詢key: 
keys pattern  支持 * 奴曙? []
修改Key名稱:
rename  k nk   如果存在會(huì)覆蓋
renamenx k nk   如果存在則修改失敗【推薦使用】
key排序:sort k
其他key操作:
help @generic

(2)DB基本操作

切換數(shù)據(jù)庫(kù):select  index[0-15]
數(shù)據(jù)移動(dòng):move key db 
數(shù)據(jù)清除:
flushdb  [謹(jǐn)慎]
flushall  [謹(jǐn)慎]
查詢數(shù)據(jù)庫(kù)中的數(shù)據(jù)量:dbsize
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市草讶,隨后出現(xiàn)的幾起案子洽糟,更是在濱河造成了極大的恐慌,老刑警劉巖堕战,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坤溃,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡嘱丢,警方通過(guò)查閱死者的電腦和手機(jī)薪介,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)越驻,“玉大人汁政,你說(shuō)我怎么就攤上這事∽号裕” “怎么了记劈?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)并巍。 經(jīng)常有香客問(wèn)我目木,道長(zhǎng),這世上最難降的妖魔是什么懊渡? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任刽射,我火速辦了婚禮,結(jié)果婚禮上剃执,老公的妹妹穿的比我還像新娘誓禁。我一直安慰自己,他們只是感情好忠蝗,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布现横。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪戒祠。 梳的紋絲不亂的頭發(fā)上骇两,一...
    開(kāi)封第一講書(shū)人閱讀 51,573評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音姜盈,去河邊找鬼低千。 笑死,一個(gè)胖子當(dāng)著我的面吹牛馏颂,可吹牛的內(nèi)容都是我干的示血。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼救拉,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼难审!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起亿絮,我...
    開(kāi)封第一講書(shū)人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤告喊,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后派昧,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體黔姜,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年蒂萎,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了秆吵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡五慈,死狀恐怖纳寂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情泻拦,我是刑警寧澤烈疚,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站聪轿,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏猾浦。R本人自食惡果不足惜陆错,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望金赦。 院中可真熱鬧音瓷,春花似錦、人聲如沸夹抗。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至杏愤,卻和暖如春靡砌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背珊楼。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工通殃, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人厕宗。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓画舌,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親已慢。 傳聞我的和親對(duì)象是個(gè)殘疾皇子曲聂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

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