《閑扯Redis一》五種數(shù)據(jù)類型之String型

原文出處http://www.yund.tech/zdetail.html?type=1&id=b8d62d1179aa19ef7df3d771b9af1428
作者: jstarseven


一爽醋、前言

Redis 提供了5種數(shù)據(jù)類型:String(字符串)源祈、Hash(哈希)、List(列表)、Set(集合)孝扛、Zset(有序集合),理解每種數(shù)據(jù)類型的特點(diǎn)對(duì)于redis的開發(fā)和運(yùn)維非常重要拨脉。

?String是Redis的最基本的數(shù)據(jù)類型辨赐,可以理解為與 Memcached 一模一樣的類型,即Key-Value型的數(shù)據(jù)诲祸,String類型是二進(jìn)制安全的浊吏,另外 Redis 的 String 可以包含任何數(shù)據(jù)而昨,簡(jiǎn)單的字符串、復(fù)雜的字符串(xml找田、json)歌憨、數(shù)字(整數(shù)、浮點(diǎn)數(shù))墩衙、二進(jìn)制(圖片务嫡、音頻、視頻)漆改,一個(gè) Redis 中字符串 value 最多可以是 512M心铃。

二、String 類型操作命令

命令 描述 用法
SET 1.將字符串值Value關(guān)聯(lián)到Key
2.Key已關(guān)聯(lián)則覆蓋挫剑,無視類型
3.原本Key帶有生存時(shí)間TTL去扣,那么TTL被清除
SET key value [EX seconds] [PX milliseconds] [NX|XX]
GET 1.返回key關(guān)聯(lián)的字符串值
2.Key不存在返回nil
3.Key存儲(chǔ)的不是字符串,返回錯(cuò)誤樊破,因?yàn)镚ET只用于處理字符串
GET key
MSET 1.同時(shí)設(shè)置一個(gè)或多個(gè)Key-Value鍵值對(duì)
2.某個(gè)給定Key已經(jīng)存在愉棱,那么MSET新值會(huì)覆蓋舊值
3.如果上面的覆蓋不是希望的,那么使用MSETNX命令哲戚,所有Key都不存在才會(huì)進(jìn)行覆蓋
4.MSET是一個(gè)原子性操作奔滑,所有Key都會(huì)在同一時(shí)間被設(shè)置,不會(huì)存在有些更新有些沒更新的情況
MSET key value [key value ...]
MGET 1.返回一個(gè)或多個(gè)給定Key對(duì)應(yīng)的Value
2.某個(gè)Key不存在那么這個(gè)Key返回nil
MGET key [key ...]
SETEX 1.將Value關(guān)聯(lián)到Key
2.設(shè)置Key生存時(shí)間為seconds惫恼,單位為秒
3.如果Key對(duì)應(yīng)的Value已經(jīng)存在档押,則覆蓋舊值
4.SET也可以設(shè)置失效時(shí)間,但是不同在于SETNX是一個(gè)原子操作祈纯,即關(guān)聯(lián)值與設(shè)置生存時(shí)間同一時(shí)間完成
SETEX key seconds value
SETNX 1.將Key的值設(shè)置為Value,當(dāng)且僅當(dāng)Key不存在
2.若給定的Key已經(jīng)存在叼耙,SEXNX不做任何動(dòng)作
SETNX key value

三腕窥、應(yīng)用場(chǎng)景

  • 緩存功能:字符串最經(jīng)典的使用場(chǎng)景,redis最為緩存層筛婉,Mysql作為儲(chǔ)存層簇爆,絕大部分請(qǐng)求數(shù)據(jù)都是redis中獲取,由于redis具有支撐高并發(fā)特性爽撒,所以緩存通常能起到加速讀寫和降低 后端壓力的作用入蛆。
  • 計(jì)數(shù)器:許多運(yùn)用都會(huì)使用redis作為計(jì)數(shù)的基礎(chǔ)工具,他可以實(shí)現(xiàn)快速計(jì)數(shù)硕勿、查詢緩存的功能哨毁,同時(shí)數(shù)據(jù)可以一步落地到其他的數(shù)據(jù)源。如:視頻播放數(shù)系統(tǒng)就是使用redis作為視頻播放數(shù)計(jì)數(shù)的基礎(chǔ)組件源武。
  • 共享session:出于負(fù)載均衡的考慮扼褪,分布式服務(wù)會(huì)將用戶信息的訪問均衡到不同服務(wù)器上想幻,用戶刷新一次訪問可能會(huì)需要重新登錄,為避免這個(gè)問題可以用redis將用戶session集中管理话浇,在這種模式下只要保證redis的高可用和擴(kuò)展性的脏毯,每次獲取用戶更新或查詢登錄信息都直接從redis中集中獲取。
  • 限速:處于安全考慮幔崖,每次進(jìn)行登錄時(shí)讓用戶輸入手機(jī)驗(yàn)證碼食店,為了短信接口不被頻繁訪問,會(huì)限制用戶每分鐘獲取驗(yàn)證碼的頻率赏寇。

四叛买、特殊的String操作:INCR/DECR

??INCR/DECR操作可以利用Redis自動(dòng)幫助我們對(duì)一個(gè)Key對(duì)應(yīng)的Value進(jìn)行加減,在實(shí)際工作中還是很常用的蹋订。

  INCR/DECR操作在 Redis 中的相關(guān)命令:
命令 描述 用法
INCR 1)Key中存儲(chǔ)的數(shù)字值+1率挣,返回增加之后的值
2)Key不存在,那么Key的值被初始化為0再執(zhí)行INCR
3)如果值包含錯(cuò)誤類型或者字符串不能被表示為數(shù)字露戒,那么返回錯(cuò)誤
4)值限制在64位有符號(hào)數(shù)字表示之內(nèi)即-9223372036854775808~9223372036854775807
INCR key
DECR 1)Key中存儲(chǔ)的數(shù)字值-1
2)其余同INCR
DECR key
INCRBY 1)將key所存儲(chǔ)的值加上增量返回增加之后的值
2)其余同INCR
INCRBY key increment
DECRBY 1)將key所存儲(chǔ)的值減去減量decrement
2)其余同INCR
DECRBY key decrement

五稚虎、INCR/DECR 應(yīng)用場(chǎng)景

  • 原先單機(jī)環(huán)境中統(tǒng)計(jì)在線人數(shù),變成分布式部署之后可以使用INCR/DECR
  • 由于Redis本身極高的讀寫性能酿矢,一些秒殺的場(chǎng)景庫(kù)存增減可以基于Redis來做而不是直接操作DB
image
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末絮缅,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子荠锭,更是在濱河造成了極大的恐慌旱眯,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,542評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件证九,死亡現(xiàn)場(chǎng)離奇詭異删豺,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)愧怜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門呀页,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人拥坛,你說我怎么就攤上這事蓬蝶。” “怎么了猜惋?”我有些...
    開封第一講書人閱讀 158,021評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵丸氛,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我著摔,道長(zhǎng)缓窜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,682評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮雹洗,結(jié)果婚禮上香罐,老公的妹妹穿的比我還像新娘。我一直安慰自己时肿,他們只是感情好庇茫,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著螃成,像睡著了一般旦签。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上寸宏,一...
    開封第一講書人閱讀 49,985評(píng)論 1 291
  • 那天宁炫,我揣著相機(jī)與錄音,去河邊找鬼氮凝。 笑死羔巢,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的罩阵。 我是一名探鬼主播竿秆,決...
    沈念sama閱讀 39,107評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼稿壁!你這毒婦竟也來了幽钢?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,845評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤傅是,失蹤者是張志新(化名)和其女友劉穎匪燕,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體喧笔,經(jīng)...
    沈念sama閱讀 44,299評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡帽驯,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了溃斋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片界拦。...
    茶點(diǎn)故事閱讀 38,747評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖梗劫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情截碴,我是刑警寧澤梳侨,帶...
    沈念sama閱讀 34,441評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站日丹,受9級(jí)特大地震影響走哺,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜哲虾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評(píng)論 3 317
  • 文/蒙蒙 一丙躏、第九天 我趴在偏房一處隱蔽的房頂上張望择示。 院中可真熱鬧,春花似錦晒旅、人聲如沸栅盲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)谈秫。三九已至,卻和暖如春鱼鼓,著一層夾襖步出監(jiān)牢的瞬間拟烫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評(píng)論 1 267
  • 我被黑心中介騙來泰國(guó)打工迄本, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留硕淑,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,545評(píng)論 2 362
  • 正文 我出身青樓嘉赎,卻偏偏與公主長(zhǎng)得像置媳,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子曹阔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評(píng)論 2 350

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