Redis探險(xiǎn) -《Redis開發(fā)與運(yùn)維》筆記,精華分享。

最近看完了《Redis開發(fā)與運(yùn)維》分享給大家。

全面講解Redis基本功能及其應(yīng)用,并結(jié)合線上開發(fā)與運(yùn)維監(jiān)控中的實(shí)際使用案例,深入分析并總結(jié)了實(shí)際開發(fā)運(yùn)維中遇到的“陷阱”,以及背后的原因, 包含大規(guī)模集群開發(fā)與管理的場景、應(yīng)用案例與開發(fā)技巧,為高效開發(fā)運(yùn)維提供了大量實(shí)際經(jīng)驗(yàn)和建議。本書不要求讀者有任何Redis使用經(jīng)驗(yàn),對入門與進(jìn)階DevOps的開發(fā)者提供有價(jià)值的幫助。主要內(nèi)容包括:Redis的安裝配置、API、各種高效功能、客戶端、持久化、復(fù)制、高可用、內(nèi)存、哨兵、集群、緩存設(shè)計(jì)等,Redis高可用集群解決方案,Redis設(shè)計(jì)和使用中的問題,最后提供了一個(gè)開源工具:Redis監(jiān)控運(yùn)維云平臺CacheCloud。


用心之作。唯一個(gè)人認(rèn)為可以再優(yōu)化的是,監(jiān)控軟件的安裝,很多配置都默認(rèn)寫在一些文件,導(dǎo)致自定義安裝目錄時(shí)帶來部分不變,,,但是依然不能妨礙書本身的精品。大力推薦 ,不管是 redis 新手 老手,都能學(xué)到很多。


Redis相關(guān)書籍里面內(nèi)容屬于特別上乘的。書中有好多以前沒有發(fā)現(xiàn)和注意的細(xì)節(jié)點(diǎn),而且內(nèi)容的連貫性,深度等各個(gè)點(diǎn)都寫的非常的好,書中也會提及很多開發(fā)人員對redis認(rèn)知的盲區(qū),該書能更好的讓你做好redis相關(guān)的工作,在授之以魚之時(shí)也授之以漁。最近也作為我強(qiáng)力推薦的一本redis好書在推薦給身邊的朋友看。


初識Redis

單線程面向快速執(zhí)行場景的內(nèi)純數(shù)據(jù)庫

特性

  1. 數(shù)據(jù)結(jié)構(gòu):string字符串(位圖bitmaps,hyperloglog),hash哈希表,list列表,set集合,zset有序集合

  2. 單線程模型

  3. 持久化方式:RDB,AOF

  4. 主從復(fù)制


5種數(shù)據(jù)類型


String

字符串類型是Redis最基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)。首先鍵都是字符串類型的, 而且其他幾種數(shù)據(jù)結(jié)構(gòu)都是在字符串的基礎(chǔ)上構(gòu)建的。字符串類型的值實(shí)際可以是字符串(簡單的字符串、復(fù)雜的字符串(JSON/XML等))、數(shù)字(整數(shù)、浮點(diǎn)數(shù))、甚至是二進(jìn)制、但是值最大不能超過512M。

List

類似 Java 中的 List ,按照插入順序排序的字符串鏈表,在插入時(shí),如果該鍵并不存在,Redis將為該鍵創(chuàng)建一個(gè)新的鏈表。與此相反,如果鏈表中所有的元素均被移除,那么該鍵也將會被從數(shù)據(jù)庫中刪除


Set
Set 就是一個(gè)集合,集合的概念就是一堆不重復(fù)值的組合。利用 Redis 提供的 Set 數(shù)據(jù)結(jié)構(gòu),可以存儲一些集合性的數(shù)據(jù)。比如在微博應(yīng)用中,可以將一個(gè)用戶所有的關(guān)注人存在一個(gè)集合中,將其所有粉絲存在一個(gè)集合。因?yàn)?Redis 非常人性化的為集合提供了求交集、并集、差集等操作,那么就可以非常方便的實(shí)現(xiàn)如共同關(guān)注、共同喜好、二度好友等功能,對上面的所有集合操作,你還可以使用不同的命令選擇將結(jié)果返回給客戶端還是存集到一個(gè)新的集合中。


Sorted Set

和Sets相比,Sorted Sets是將 Set 中的元素增加了一個(gè)權(quán)重參數(shù) score,使得集合中的元素能夠按 score 進(jìn)行有序排列,比如一個(gè)存儲全班同學(xué)成績的 Sorted Sets,其集合 value 可以是同學(xué)的學(xué)號,而 score 就可以是其考試得分,這樣在數(shù)據(jù)插入集合的時(shí)候,就已經(jīng)進(jìn)行了天然的排序。另外還可以用 Sorted Sets 來做帶權(quán)重的隊(duì)列,比如普通消息的 score 為1,重要消息的 score 為2,然后工作線程可以選擇按 score 的倒序來獲取工作任務(wù)。讓重要的任務(wù)優(yōu)先執(zhí)行。


Hash
在 Memcached 中,我們經(jīng)常將一些結(jié)構(gòu)化的信息打包成 hashmap,在客戶端序列化后存儲為一個(gè)字符串的值(一般是 JSON 格式),比如用戶的昵稱、年齡、性別、積分等。這時(shí)候在需要修改其中某一項(xiàng)時(shí),通常需要將字符串(JSON)取出來,然后進(jìn)行反序列化,修改某一項(xiàng)的值,再序列化成字符串(JSON)存儲回去。簡單修改一個(gè)屬性就干這么多事情,消耗必定是很大的,也不適用于一些可能并發(fā)操作的場合(比如兩個(gè)并發(fā)的操作都需要修改積分)。而 Redis 的 Hash 結(jié)構(gòu)可以使你像在數(shù)據(jù)庫中 Update 一個(gè)屬性一樣只修改某一項(xiàng)屬性值


全局命令


  • keys *:查看所有鍵

  • dbsize:鍵的總數(shù)

  • exists key:查看鍵是否存在

  • del key:刪除鍵

  • expire key seconds:鍵過期

  • type key:查看鍵的數(shù)據(jù)類型


單線程架構(gòu)


命令到達(dá)服務(wù)端后,按隊(duì)列依次單線程執(zhí)行

純內(nèi)存存儲、 IO多路復(fù)用技術(shù)、單線程架構(gòu)是造就 Redis高性能的三個(gè)因素。

epoll I/O多路復(fù)用提升IO性能

redis快的原因:

  1. 純內(nèi)存訪問

  2. I/O多路復(fù)用:epoll

  3. 單線程避免線程競爭

keys全量遍歷鍵可能導(dǎo)致redis阻塞,可以在從節(jié)點(diǎn)上執(zhí)行,或者使用漸進(jìn)式的scan代替(可能漏掉期間進(jìn)行的更新)


應(yīng)用場景


  • 緩存。

  • 排行榜系統(tǒng)。redis提供了列表和有序集合支持。

  • 計(jì)數(shù)器應(yīng)用。

  • 社交網(wǎng)絡(luò)。

  • 消息隊(duì)列系統(tǒng)。redis提供了訂閱發(fā)布和阻塞隊(duì)列功能,雖然和專業(yè)的消息隊(duì)列軟件比不夠強(qiáng)大,但是可以滿足一般的消息隊(duì)列需求

Pipeline概念


edis客戶端執(zhí)行一條命令分為如下四個(gè)過程:

1)發(fā)送命令

2)命令排隊(duì)

3)命令執(zhí)行

4)返回結(jié)果其中

1到4稱為 Round Trip Time( RTT,往返時(shí)間)。

Pipeline(流水線)機(jī)制能將一組 Redis命令進(jìn)行組裝,通過一次 RTT傳輸給 Redis,再將這組 Redis命令的執(zhí)行結(jié)果按順序返回給客戶端。

Redis命令真正執(zhí)行的時(shí)間通常在微秒級別,所以才會有 Redis性能瓶頸是網(wǎng)絡(luò)這樣的說法。

持久


  1. RDB持久化方式會在一個(gè)特定的間隔保存那個(gè)時(shí)間點(diǎn)的一個(gè)數(shù)據(jù)快照。


  2. AOF持久化方式則會記錄每一個(gè)服務(wù)器收到的寫操作。在服務(wù)啟動時(shí),這些記錄的操作會逐條執(zhí)行從而重建出原來的數(shù)據(jù)。寫操作命令記錄的格式跟Redis協(xié)議一致,以追加的方式進(jìn)行保存。



?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,646評論 6 533
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,595評論 3 418
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,560評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,035評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,814評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,224評論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,301評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,444評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,988評論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,804評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,998評論 1 370
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,544評論 5 360
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,237評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,665評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,927評論 1 287
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,706評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,993評論 2 374

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

  • Redis 是一個(gè)鍵值對數(shù)據(jù)庫(key-value DB),數(shù)據(jù)庫的值可以是字符串、集合、列表等多種類型的對象,而...
    吳昂_ff2d閱讀 3,345評論 0 5
  • 1.Redis特性 1)速度快:數(shù)據(jù)存放在內(nèi)存上、基于C語言實(shí)現(xiàn)、單線程架構(gòu)預(yù)防多線程競爭問題;2)基于鍵值對的數(shù)...
    Sponge1128閱讀 624評論 0 1
  • Redis是啥 Redis是一個(gè)開源的key-value存儲系統(tǒng),由于擁有豐富的數(shù)據(jù)結(jié)構(gòu),又被其作者戲稱為數(shù)據(jù)結(jié)構(gòu)...
    一凡呀閱讀 1,180評論 0 5
  • redis簡介: 官方鏈接:跳轉(zhuǎn)地址;中文官方鏈接:跳轉(zhuǎn)地址 Redis 是一個(gè)開源(BSD許可)的,內(nèi)存中的數(shù)據(jù)...
    _偏執(zhí)狂閱讀 1,385評論 1 32
  • 使用緩存是系統(tǒng)性能優(yōu)化的第一黃金法則。 緩存的設(shè)計(jì)和使用對一個(gè)系統(tǒng)的性能至關(guān)重要,平時(shí)接觸到項(xiàng)目無論多少也都會在某...
    刀刃丿閱讀 1,353評論 0 6