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

1辫樱、什么是Redis?

Redis是一個(gè)基于內(nèi)存的高性能key-value數(shù)據(jù)庫(kù)合是,它通常被稱為數(shù)據(jù)結(jié)構(gòu)服務(wù)器咒唆。它是一種基于鍵值對(duì)(key-value)的NoSQL數(shù)據(jù)庫(kù)冒嫡,與很多鍵值對(duì)數(shù)據(jù)庫(kù)不同的是,Redis中的值可以是由string(字符串)熏矿、hash(哈希)已骇、list(列表)、set(集合)票编、zset(有序集合)褪储、Bitmaps(位圖)、HyperLogLog慧域、GEO(地理信息定位)等多種數(shù)據(jù)結(jié)構(gòu)和算法組成鲤竹,因此
Redis可以滿足很多的應(yīng)用場(chǎng)景,而且因?yàn)镽edis會(huì)將所有數(shù)據(jù)都存放在內(nèi)存中昔榴,所以它的讀寫性能非常驚人辛藻。
不僅如此,Redis還可以將內(nèi)存的數(shù)據(jù)利用快照和日志的形式保存到硬盤上互订,這樣在發(fā)生類似斷電或者機(jī)器故障的時(shí)候吱肌,內(nèi)存中的數(shù)據(jù)不會(huì)“丟失”。除了上述功能以外仰禽,Redis還提供了鍵過期氮墨、發(fā)布訂閱、事務(wù)吐葵、流水線规揪、Lua腳本等附加功能。

2温峭、為什么使用redis猛铅?

在項(xiàng)目中使用Redis,主要是從兩個(gè)角度去考慮:性能和并發(fā)诚镰,雖然Redis還可以做分布式鎖等其他功能(該功能可以有其他中間件(如zookpeer等)代替)奕坟。
A)速度快
Redis的所有數(shù)據(jù)都是存放在內(nèi)存中的。
Redis是用C語(yǔ)言實(shí)現(xiàn)的(一般來說C語(yǔ)言實(shí)現(xiàn)的程序“距離”操作系統(tǒng)更近清笨,執(zhí)行速度相對(duì)會(huì)更快)
Redis使用了單線程架構(gòu)月杉,預(yù)防了多線程可能產(chǎn)生的競(jìng)爭(zhēng)問題。

B)基于鍵值對(duì)的數(shù)據(jù)結(jié)構(gòu)服務(wù)器
Redis提供了5種數(shù)據(jù)結(jié)構(gòu):字符串抠艾、哈希苛萎、列表、集合检号、有序集合腌歉,同時(shí)在字符串的基礎(chǔ)之上演變出了位圖(Bitmaps)和HyperLogLog兩種神奇的“數(shù)據(jù)結(jié)構(gòu)”,并且隨著LBS(Location Based Service齐苛,基于位置服務(wù))的不斷發(fā)展翘盖,Redis3.2版本中
加入有關(guān)GEO(地理信息定位)的功能,在這些數(shù)據(jù)結(jié)構(gòu)的幫助下凹蜂,開發(fā)者可以開發(fā)出各種“有意思”的應(yīng)用馍驯。

C)豐富的功能
提供鍵過期功能,可以用來實(shí)現(xiàn)緩存玛痊。
提供發(fā)布訂閱功能汰瘫,可以用來實(shí)現(xiàn)消息系統(tǒng)。
支持Lua腳本功能擂煞,可以利用Lua創(chuàng)造出新的Redis命令混弥。
提供簡(jiǎn)單的事務(wù)功能,能在一定程度上保證事務(wù)特性对省。
提供流水線功能蝗拿,客戶端能將一批命令一次性傳到Redis,減少網(wǎng)絡(luò)開銷官辽。

D)簡(jiǎn)單穩(wěn)定
Redis的源碼少蛹磺,使用單線程模型,不需要依賴于操作系統(tǒng)中的類庫(kù)同仆,而且自己實(shí)現(xiàn)了事件處理的相關(guān)功能萤捆。

E)客戶端語(yǔ)言多
Redis提供了簡(jiǎn)單的TCP通信協(xié)議,很多編程語(yǔ)言可以很方便地接入到Redis俗批,例如Java俗或、PHP、Python岁忘、C辛慰、C++、Nodejs等干像。

F)持久化
將數(shù)據(jù)放在內(nèi)存中是不安全的帅腌,一旦發(fā)生斷電或者機(jī)器故障驰弄,重要的數(shù)據(jù)可能就會(huì)丟失,因此Redis提供了兩種持久化方式:RDB和AOF速客,即可以用兩種策略將內(nèi)存的數(shù)據(jù)保存到硬盤中戚篙,這樣就保證了數(shù)據(jù)的可持久性。

Redis內(nèi)存到磁盤的持久化.png

G)主從復(fù)制
Redis提供了復(fù)制功能溺职,實(shí)現(xiàn)了多個(gè)相同數(shù)據(jù)的Redis副本岔擂,復(fù)制功能是分布式Redis的基礎(chǔ)。

H)高可用和分布式
Redis從2.8版本正式提供了高可用實(shí)現(xiàn)Redis Sentinel浪耘,它能夠保證Redis節(jié)點(diǎn)的故障發(fā)現(xiàn)和故障自動(dòng)轉(zhuǎn)移乱灵。
Redis從3.0版本正式提供了分布式實(shí)現(xiàn)Redis Cluster,它是Redis真正的分布式實(shí)現(xiàn)七冲,提供了高可用痛倚、讀寫和容量的擴(kuò)展性。

3澜躺、Redis可以做什么状原?不可以做什么?

Redis可以做緩存苗踪、排行榜系統(tǒng)颠区、計(jì)數(shù)器應(yīng)用、社交網(wǎng)絡(luò)通铲、消息隊(duì)列系統(tǒng)等等毕莱。
Redis不建議做視頻類網(wǎng)站,單純站在數(shù)據(jù)冷熱的角度上看颅夺,視頻信息屬于熱數(shù)據(jù)朋截,用戶觀看記錄屬于冷數(shù)據(jù)。如果將這些冷數(shù)據(jù)放在Redis中吧黄,基本上是對(duì)于內(nèi)存的一種浪費(fèi)部服,但是對(duì)于一些熱數(shù)據(jù)可以放在Redis中加速讀寫,也可以減輕后端存儲(chǔ)的負(fù)載拗慨,可以說是事半功倍廓八。
總之,Redis使用場(chǎng)景赵抢,不是單純的這么簡(jiǎn)單區(qū)分即可剧蹂,而需要綜合性考慮。

4烦却、如何在Windows系統(tǒng)下下載安裝Redis呢宠叼?

官網(wǎng):http://redis.io/download
我的系統(tǒng)是Windows8,啟動(dòng)如下:
Windows+R -- 打開cmd命令
E: -- 進(jìn)入Redis所在磁盤
cd Redis --進(jìn)入Redis目錄
redis-server redis.windows.conf -- 出現(xiàn)下圖其爵,說明啟動(dòng)成功:

Redis啟動(dòng)成功

這里需注意冒冬,雖然啟動(dòng)了redis伸蚯,但是只要一關(guān)閉cmd窗口,redis就會(huì)消失简烤。所以可以把redis設(shè)置成windows下的服務(wù)朝卒,命令如下:
redis-server --service-install redis.windows-service.conf --loglevel verbose
執(zhí)行命令之后,如下圖:
多了Redis服務(wù)

5乐埠、Linux系統(tǒng)安裝Linux

官網(wǎng):http://redis.io/download
1、下載源碼囚企,解壓縮后編譯源碼丈咐,以3.0.7版本為例:

$ wget http://download.redis.io/releases/redis-3.0.7.tar.gz
$ tar xzf redis-3.0.7.tar.gz
$ ln -s redis-3.0.7 redis
$ cd redis
$ make

1)下載Redis指定版本的源碼壓縮包到當(dāng)前目錄。
2)解壓縮Redis源碼壓縮包龙宏。
3)建立一個(gè)redis目錄的軟連接棵逊,指向redis-3.0.7。
4)進(jìn)入redis目錄银酗。
5)編譯(編譯之前確保操作系統(tǒng)已經(jīng)安裝gcc)辆影。

2、編譯完成后黍特,在src目錄下蛙讥,有四個(gè)可執(zhí)行文件redis-server、redis-benchmark灭衷、redis-cli和redis.conf次慢,然后拷貝到一個(gè)目錄下。

mkdir /usr/redis
cp redis-server /usr/redis
cp redis-benchmark /usr/redis
cp redis-cli /usr/redis
cp redis.conf /usr/redis
cd /usr/redis

3翔曲、啟動(dòng)Redis服務(wù)迫像。

$ redis-server redis.conf

4、然后用客戶端測(cè)試一下是否啟動(dòng)成功瞳遍。

$ redis-cli

redis> set foo bar

OK

redis> get foo

"bar"

6闻妓、Redis重大版本

Redis借鑒了Linux操作系統(tǒng)對(duì)于版本號(hào)的命名規(guī)則:版本號(hào)第二位如果
是奇數(shù),則為非穩(wěn)定版本(例如2.7掠械、2.9由缆、3.1),如果是偶數(shù)猾蒂,則為穩(wěn)定版
本(例如2.6犁功、2.8、3.0婚夫、3.2)浸卦。當(dāng)前奇數(shù)版本就是下一個(gè)穩(wěn)定版本的開發(fā)版
本,例如2.9版本是3.0版本的開發(fā)版本案糙。所以我們?cè)谏a(chǎn)環(huán)境通常選取偶數(shù)
版本的Redis限嫌,如果對(duì)于某些新的特性想提前了解和使用靴庆,可以選擇最新的
奇數(shù)版本。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末怒医,一起剝皮案震驚了整個(gè)濱河市炉抒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌稚叹,老刑警劉巖焰薄,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異扒袖,居然都是意外死亡塞茅,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門季率,熙熙樓的掌柜王于貴愁眉苦臉地迎上來野瘦,“玉大人,你說我怎么就攤上這事飒泻”薰猓” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵泞遗,是天一觀的道長(zhǎng)惰许。 經(jīng)常有香客問我,道長(zhǎng)史辙,這世上最難降的妖魔是什么啡省? 我笑而不...
    開封第一講書人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮髓霞,結(jié)果婚禮上卦睹,老公的妹妹穿的比我還像新娘。我一直安慰自己方库,他們只是感情好结序,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著纵潦,像睡著了一般徐鹤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上邀层,一...
    開封第一講書人閱讀 51,488評(píng)論 1 302
  • 那天返敬,我揣著相機(jī)與錄音,去河邊找鬼寥院。 笑死劲赠,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播凛澎,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼霹肝,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了塑煎?” 一聲冷哼從身側(cè)響起沫换,我...
    開封第一講書人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎最铁,沒想到半個(gè)月后讯赏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡冷尉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年漱挎,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片网严。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖嗤无,靈堂內(nèi)的尸體忽然破棺而出震束,到底是詐尸還是另有隱情,我是刑警寧澤当犯,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布垢村,位于F島的核電站,受9級(jí)特大地震影響嚎卫,放射性物質(zhì)發(fā)生泄漏嘉栓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一拓诸、第九天 我趴在偏房一處隱蔽的房頂上張望侵佃。 院中可真熱鬧,春花似錦奠支、人聲如沸馋辈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)迈螟。三九已至,卻和暖如春尔崔,著一層夾襖步出監(jiān)牢的瞬間答毫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工季春, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留洗搂,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像蚕脏,于是被迫代替她去往敵國(guó)和親侦副。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354

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

  • 到處而飄零驼鞭,因?yàn)橛幸靶?隨風(fēng)飄不定秦驯,只因身價(jià)輕 自由有何用,沒有好命運(yùn) 葉落還歸根挣棕,絮飄象幽靈 出家而流浪译隘,不歸太...
    秋AldrichB果閱讀 352評(píng)論 0 3
  • 在星期五那天,我們班準(zhǔn)備在次出游洛心。 在早上吃完飯固耘,收拾完?yáng)|西,就準(zhǔn)備上車出發(fā)词身。在半路趙老師給我們出來了許多題厅目。把我...
    郭盈希閱讀 386評(píng)論 0 0
  • “啊,媽媽快看法严,外面怎么回事损敷?” 兒子驚訝地喊聲把我的視線吸引到了窗外。 哇深啤,好混沌的世界呀拗馒!從...
    風(fēng)兒解意閱讀 352評(píng)論 0 0
  • 空閑時(shí)獨(dú)自漫步公園,看花叢中蝶兒鬧溯街,正當(dāng)心曠神怡時(shí)诱桂,悄悄起風(fēng)了,風(fēng)來得那么急促呈昔,嚇得蝶兒飛往家的方向挥等,還沒來得...
    四月是的謊言閱讀 139評(píng)論 0 0
  • 親愛的朋友, 祝好堤尾!我現(xiàn)在裹著件外套触菜,坐在電腦前給你打字。還記得我昨天還在跟你抱怨說深圳的天氣太過任性了嗎哀峻,結(jié)果...
    居無所處閱讀 171評(píng)論 0 1