Redis的類(lèi)型以及各自類(lèi)型的使用場(chǎng)景(一)

NoSQL數(shù)據(jù)庫(kù)之Redis數(shù)據(jù)庫(kù)管理

NoSQL的介紹

NoSQL(NoSQL=Not Only SQL)医男,意為反SQL運(yùn)動(dòng)疾牲,是一項(xiàng)全新的數(shù)據(jù)庫(kù)革命性運(yùn)動(dòng)变丧,它是指非關(guān)系型數(shù)據(jù)庫(kù)沙庐。隨著互聯(lián)網(wǎng)web2.0網(wǎng)站的興起,傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)在應(yīng)付web2.0純動(dòng)態(tài)網(wǎng)站已經(jīng)顯得力不從心昌抠,特別是超大規(guī)模和高并發(fā)的ANS類(lèi)型的純動(dòng)態(tài)網(wǎng)站患朱,暴漏了很多難以克服的困難鲁僚,而非關(guān)系類(lèi)型的數(shù)據(jù)庫(kù)則由于其本身的特點(diǎn)得到了非常迅速的發(fā)展炊苫。
NoSQL是以Key-value形式存儲(chǔ),和傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)不一樣冰沙,不一定遵循傳統(tǒng)數(shù)據(jù)庫(kù)的一些基本要求侨艾,比如說(shuō)遵循SQL標(biāo)準(zhǔn),ACID屬性拓挥,表結(jié)構(gòu)等等唠梨,這類(lèi)數(shù)據(jù)庫(kù)主要有以下特點(diǎn):非關(guān)系型的、分布式侥啤、開(kāi)源的当叭、水平可擴(kuò)展的。
Mysql里的select盖灸、inser蚁鳖、,update赁炎、delete語(yǔ)句在NoSQL中不適用醉箕。
ACID屬性:事務(wù)處理。(整個(gè)的過(guò)程為事務(wù)徙垫,第一步完成第二部沒(méi)完成讥裤,就回滾初始狀態(tài))
表結(jié)構(gòu):NoSQl不需要建立表結(jié)構(gòu)
NoSQl的特點(diǎn)

  1. 處理超大量的數(shù)據(jù)
  2. 運(yùn)行在便宜的PC服務(wù)器集群上
    3.擊碎了性能瓶頸

NoSQL適用的場(chǎng)景

  1. 對(duì)數(shù)據(jù)庫(kù)高并發(fā)讀寫(xiě)
  2. 對(duì)海量數(shù)據(jù)的高效率存儲(chǔ)和訪問(wèn)
  3. 對(duì)數(shù)據(jù)的高可擴(kuò)展性和高可用性
    NoSQL做分布式

Redis的介紹

Redis是一個(gè)開(kāi)源的,先進(jìn)的Key-value存儲(chǔ)姻报。它通常被稱(chēng)為數(shù)據(jù)結(jié)構(gòu)服務(wù)器己英,因?yàn)殒I可以包含字符串,哈希吴旋,鏈表损肛,集合寒亥,有序集合
鏈表:做棧和隊(duì)列荧关,
隊(duì)列先進(jìn)先出溉奕,
是先進(jìn)后出,
Redis是一個(gè)Key-Value存儲(chǔ)系統(tǒng)忍啤。它支持存儲(chǔ)的value類(lèi)型很多加勤,包括string(字符串)、list(鏈表)同波、set(集合)鳄梅、zset(有序集合)。這些數(shù)據(jù)類(lèi)型都支持push/pop未檩、add/remove

及取交集和并集及更豐富的操作戴尸,redis支持各種不同方式的排序。為了保證效率冤狡,數(shù)據(jù)都是緩存在內(nèi)存中孙蒙,它也可以周期性的把更新的數(shù)據(jù)寫(xiě)入磁盤(pán)或者把修改操作寫(xiě)入追加的記錄文件。

對(duì)數(shù)組加入一個(gè)元素array_push悲雳,array_pop彈出一個(gè)元素挎峦。

提供的API語(yǔ)言:C、C++合瓢、PHP

Redis適用場(chǎng)景

目前全球最大的Redis的用戶是新浪微博坦胶,在新浪微博有200多臺(tái)物理機(jī),400多個(gè)端口正在運(yùn)行著Redis上來(lái)為微博用戶提供服務(wù)晴楔。
在新浪微博Redis的部署場(chǎng)景很多顿苇,大概分為如下兩種:

  1. 應(yīng)用程序直接訪問(wèn)Redis數(shù)據(jù)庫(kù)

  2. 應(yīng)用程序直接訪問(wèn)Redis,只有當(dāng)Redis訪問(wèn)失敗時(shí)才能訪問(wèn)Mysql

例如:把大象裝冰箱的過(guò)程:

  1. 打開(kāi)冰箱門(mén)
  2. 把大象裝進(jìn)冰箱
  3. 把冰箱門(mén)關(guān)上
    大象很大税弃,裝進(jìn)冰箱很費(fèi)勁纪岁,怎么辦?
    而Redis數(shù)據(jù)庫(kù)提供多種靈活數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)操作钙皮,為不同的大象構(gòu)建不同的冰箱蜂科。
Redis適用的場(chǎng)景:
  1. 取最新N個(gè)數(shù)據(jù)的操作
  2. 排行榜應(yīng)用,取TOP****N****操作
  3. 需要精確設(shè)定過(guò)期時(shí)間的應(yīng)用(key設(shè)置過(guò)期時(shí)間)
  4. 計(jì)數(shù)器應(yīng)用
  5. Uniq操作短条,獲取某段時(shí)間所有數(shù)據(jù)排重值
  6. 實(shí)時(shí)系統(tǒng)导匣,反垃圾系統(tǒng)
  7. Pub/Sub構(gòu)建實(shí)時(shí)消息系統(tǒng)(發(fā)布與訂閱)
  8. 構(gòu)建隊(duì)列系統(tǒng)(list構(gòu)建棧和隊(duì)列)
  9. 緩存
    String
    1.計(jì)數(shù)器應(yīng)用
    List
    1. 取最新N個(gè)數(shù)據(jù)的操作
    2. 消息隊(duì)列
      3.刪除與過(guò)濾
    3. 實(shí)時(shí)分析正在發(fā)生的情況,用于數(shù)據(jù)統(tǒng)計(jì)與防止垃圾郵件(結(jié)合Set)
      Set
      1.Uniqe操作茸时,獲取某段時(shí)間所有數(shù)據(jù)排重值
      2.實(shí)時(shí)系統(tǒng)贡定,反垃圾系統(tǒng)
      3.共同好友、二度好友
      4.利用唯一性可都,可以統(tǒng)計(jì)訪問(wèn)網(wǎng)站的所有獨(dú)立 IP
      5.好友推薦的時(shí)候缓待,根據(jù) tag 求交集蚓耽,大于某個(gè) threshold 就可以推薦
      Hashes
      1.存儲(chǔ)、讀取旋炒、修改用戶屬性
      Sorted Set
      1.排行榜應(yīng)用步悠,取TOP N操作
      2.需要精準(zhǔn)設(shè)定過(guò)期時(shí)間的應(yīng)用(時(shí)間戳作為Score)
      3.帶有權(quán)重的元素,比如一個(gè)游戲的用戶得分排行榜
      4.過(guò)期項(xiàng)目處理瘫镇,按照時(shí)間排序
      NoSQL不存在表結(jié)構(gòu)的概念

Redis的數(shù)據(jù)類(lèi)型

string鼎兽,hash ,list铣除,set谚咬,zset

Strings類(lèi)型及操作

String是最簡(jiǎn)單的類(lèi)型,一個(gè)Key對(duì)應(yīng)一個(gè)Value尚粘,String類(lèi)型是二進(jìn)制安全的择卦。Redis的string可以包含任何數(shù)據(jù),比如jpg圖片或者序列化的對(duì)象
同一個(gè)鍵只能包含一個(gè)數(shù)據(jù)
serialize序列化函數(shù) string serialize ( mixed $value )

set
設(shè)置key對(duì)應(yīng)的值為string類(lèi)型的value
例如:我們添加一個(gè)name=lijie的鍵值對(duì)redis 127.0.0.1:6379>set name lijie
例如:我們添加一個(gè)name=lijie的鍵值對(duì)redis 127.0.0.1:6379>set name lijie

圖片1.png

setnx
設(shè)置key對(duì)應(yīng)的值為string類(lèi)型的value郎嫁,如果key值已經(jīng)存在秉继,返回0,nx是not****exit的意思
例如:我們添加一個(gè)name=liejie_new的鍵值對(duì)

圖片2.png

Name鍵已經(jīng)存在返回0行剂,并且不更新秕噪。

setex
設(shè)置key對(duì)應(yīng)的值為string類(lèi)型的value钳降,并指定此鍵值對(duì)應(yīng)的有效期厚宰。
例如:我們添加一個(gè)haricolor=red的鍵值對(duì),并指定有效期為10秒

圖片3.png

setrange
設(shè)置指定key的value值的子字符串
例如:我們希望將lijie的126郵箱替換為163郵箱
從第六個(gè)字符開(kāi)始替換后面的所有字符遂填,如果要替換的字符串沒(méi)有原來(lái)的字符串長(zhǎng)铲觉,那么后面接著跟上原來(lái)的字符串(后面的字符串不會(huì)覆蓋)

圖片4.png

mset
一次設(shè)置多個(gè)key的值,成功返回ok表示所有的值都設(shè)置吓坚,失敗返回0表示沒(méi)有任何值被設(shè)置撵幽。

圖片5.png

msetnx
一次設(shè)置多個(gè)key的值,成功返回ok表示所有的值都被設(shè)置了礁击,失敗返回0表示沒(méi)有任何值被設(shè)置盐杂,但是不會(huì)覆蓋已經(jīng)存在的key。

圖片6.png

只要有一個(gè)設(shè)置不成功哆窿,這都不設(shè)置
圖片7.png

get
獲取key對(duì)應(yīng)的string值链烈,如果key不存在返回nil。

getset
設(shè)置key的值挚躯,并返回key的舊值强衡。

圖片8.png

Getrange
獲取key的value值的子字符串

圖片9.png

mget
一次獲取多個(gè)key的值,如果對(duì)應(yīng)key不存在則對(duì)應(yīng)返回nil码荔。

圖片10.png

incr
對(duì)key的值做加加的操作漩勤,并返回新的值感挥。

圖片11.png

incrby
同incr類(lèi)似,加指定值越败,key不存在時(shí)候會(huì)設(shè)置key触幼,并認(rèn)為原來(lái)的value是0.

圖片12.png

正在加負(fù)值為減

decr
對(duì)key的值做減減的操作

圖片13.png

decrby
同decr類(lèi)似,減指定值究飞。

圖片14.png

傳正數(shù)是自減域蜗,負(fù)數(shù)是自增

append
給指定字符串追加value,返回新字符串值的長(zhǎng)度噪猾。
添加了一個(gè).net的字符串

圖片15.png

strlen
取指定的key的value值的長(zhǎng)度霉祸。

圖片16.png

最后編輯于
?著作權(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)店門(mé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)容