亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Redis > 正文

Redis是什么?Redis數據庫全解?

2020-03-17 12:45:06
字體:
來源:轉載
供稿:網友

Redis是什么?Redis數據庫全解?


1. Redis是什么

這個問題的結果影響了我們怎么用Redis。如果你認為Redis是一個key value store, 那可能會用它來代替MySQL;如果認為它是一個可以持久化的cache, 可能只是它保存一些頻繁訪問的臨時數據。Redis是REmote DIctionary Server的縮寫,在Redis在官方網站的的副標題是A persistent key-value database with built-in net interface written in ANSI-C for Posix systems,這個定義偏向key value store。還有一些看法則認為Redis是一個memory database,因為它的高性能都是基于內存操作的基礎。另外一些人則認為Redis是一個data structure server,因為Redis支持復雜的數據特性,比如List, Set等。對Redis的作用的不同解讀決定了你對Redis的使用方式。

互聯網數據目前基本使用兩種方式來存儲,關系數據庫或者key value。但是這些互聯網業務本身并不屬于這兩種數據類型,比如用戶在社會化平臺中的關系,它是一個list,如果要用關系數據庫存儲就需要轉換成一種多行記錄的形式,這種形式存在很多冗余數據,每一行需要存儲一些重復信息。如果用key value存儲則修改和刪除比較麻煩,需要將全部數據讀出再寫入。Redis在內存中設計了各種數據類型,讓業務能夠高速原子的訪問這些數據結構,并且不需要關心持久存儲的問題,從架構上解決了前面兩種存儲需要走一些彎路的問題。

2. Redis不可能比Memcache快

很多開發者都認為Redis不可能比Memcached快,Memcached完全基于內存,而Redis具有持久化保存特性,即使是異步的,Redis也不可能比Memcached快。但是測試結果基本是Redis占絕對優勢。一直在思考這個原因,目前想到的原因有這幾方面。

Libevent。和Memcached不同,Redis并沒有選擇libevent。Libevent為了迎合通用性造成代碼龐大(目前Redis代碼還不到libevent的1/3)及犧牲了在特定平臺的不少性能。Redis用libevent中兩個文件修改實現了自己的epoll event loop(4)。業界不少開發者也建議Redis使用另外一個libevent高性能替代libev,但是作者還是堅持Redis應該小巧并去依賴的思路。一個印象深刻的細節是編譯Redis之前并不需要執行./configure。

CAS問題。CAS是Memcached中比較方便的一種防止競爭修改資源的方法。CAS實現需要為每個cache key設置一個隱藏的cas token,cas相當value版本號,每次set會token需要遞增,因此帶來CPU和內存的雙重開銷,雖然這些開銷很小,但是到單機10G+ cache以及QPS上萬之后這些開銷就會給雙方相對帶來一些細微性能差別(5)。

3. 單臺Redis的存放數據必須比物理內存小

Redis的數據全部放在內存帶來了高速的性能,但是也帶來一些不合理之處。比如一個中型網站有100萬注冊用戶,如果這些資料要用Redis來存儲,內存的容量必須能夠容納這100萬用戶。但是業務實際情況是100萬用戶只有5萬活躍用戶,1周來訪問過1次的也只有15萬用戶,因此全部100萬用戶的數據都放在內存有不合理之處,RAM需要為冷數據買單。

這跟操作系統非常相似,操作系統所有應用訪問的數據都在內存,但是如果物理內存容納不下新的數據,操作系統會智能將部分長期沒有訪問的數據交換到磁盤,為新的應用留出空間?,F代操作系統給應用提供的并不是物理內存,而是虛擬內存(Virtual Memory)的概念。

基于相同的考慮,Redis 2.0也增加了VM特性。讓Redis數據容量突破了物理內存的限制。并實現了數據冷熱分離。

4. Redis的VM實現是重復造輪子

Redis的VM依照之前的epoll實現思路依舊是自己實現。但是在前面操作系統的介紹提到OS也可以自動幫程序實現冷熱數據分離,Redis只需要OS申請一塊大內存,OS會自動將熱數據放入物理內存,冷數據交換到硬盤,另外一個知名的“理解了現代操作系統(3)”的Varnish就是這樣實現,也取得了非常成功的效果。

作者antirez在解釋為什么要自己實現VM中提到幾個原因(6)。主要OS的VM換入換出是基于Page概念,比如OS VM1個Page是4K, 4K中只要還有一個元素即使只有1個字節被訪問,這個頁也不會被SWAP, 換入也同樣道理,讀到一個字節可能會換入4K無用的內存。而Redis自己實現則可以達到控制換入的粒度。另外訪問操作系統SWAP內存區域時block進程,也是導致Redis要自己實現VM原因之一。

5. 用get/set方式使用Redis

作為一個key value存在,很多開發者自然的使用set/get方式來使用Redis,實際上這并不是最優化的使用方法。尤其在未啟用VM情況下,Redis全部數據需要放入內存,節約內存尤其重要。

假如一個key-value單元需要最小占用512字節,即使只存一個字節也占了512字節。這時候就有一個設計模式,可以把key復用,幾個key-value放入一個key中,value再作為一個set存入,這樣同樣512字節就會存放10-100倍的容量。

這就是為了節約內存,建議使用hashset而不是set/get的方式來使用Redis,詳細方法見參考文獻(7)。

6. 使用aof代替snapshot

Redis有兩種存儲方式,默認是snapshot方式,實現方法是定時將內存的快照(snapshot)持久化到硬盤,這種方法缺點是持久化之后如果出現crash則會丟失一段數據。因此在完美主義者的推動下作者增加了aof方式。aof即append only mode,在寫入內存數據的同時將操作命令保存到日志文件,在一個并發更改上萬的系統中,命令日志是一個非常龐大的數據,管理維護成本非常高,恢復重建時間會非常長,這樣導致失去aof高可用性本意。另外更重要的是Redis是一個內存數據結構模型,所有的優勢都是建立在對內存復雜數據結構高效的原子操作上,這樣就看出aof是一個非常不協調的部分。

其實aof目的主要是數據可靠性及高可用性,在Redis中有另外一種方法來達到目的:Replication。由于Redis的高性能,復制基本沒有延遲。這樣達到了防止單點故障及實現了高可用。

小結

要想成功使用一種產品,我們需要深入了解它的特性。Redis性能突出,如果能夠熟練的駕馭,對國內很多大型應用具有很大幫助。希望更多同行加入到Redis使用及代碼研究行列。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩欧美aaa| 午夜精品美女自拍福到在线| 国产精品一区二区三区久久久| 欧美性少妇18aaaa视频| 欧美成人高清视频| 亚洲国产欧美精品| 亚洲一区二区中文字幕| 欧美性xxxxxx| 国产精品十八以下禁看| 日日骚av一区| 中文字幕欧美精品日韩中文字幕| 国模精品视频一区二区| 亚洲高清av在线| 91香蕉嫩草神马影院在线观看| 国产成人精品av| 久久精品亚洲精品| 精品久久久在线观看| 97精品一区二区三区| 日本高清不卡的在线| 久久视频精品在线| 久久久伊人欧美| 国产丝袜一区二区三区免费视频| 欧美成人亚洲成人日韩成人| 午夜精品久久久久久久99热浪潮| 欧美黄色免费网站| 成人黄色影片在线| 国产精品免费看久久久香蕉| 久久99亚洲精品| 日本精品va在线观看| 国产精品亚洲欧美导航| 26uuu国产精品视频| 国产精品ⅴa在线观看h| 国产成人精品免高潮在线观看| 欧美成人精品xxx| 国产一区二区三区久久精品| 精品国偷自产在线视频99| 欧美电影电视剧在线观看| 久久综合色影院| 精品日本美女福利在线观看| 中文字幕欧美精品日韩中文字幕| 国产精品极品美女粉嫩高清在线| 国产精品高清网站| 日韩网站在线观看| 国产精品丝袜久久久久久高清| 黑人巨大精品欧美一区二区| 国产精品视频自在线| 国产91精品高潮白浆喷水| 国语自产精品视频在线看一大j8| 欧美在线观看一区二区三区| 国产精品男女猛烈高潮激情| 日韩av影视综合网| 国产激情视频一区| 日韩视频精品在线| 久久韩国免费视频| 久久久久久久久久久久av| 日韩视频第一页| 97色在线视频| 欧美激情一级精品国产| 免费91麻豆精品国产自产在线观看| 这里只有视频精品| 亚洲国产精品资源| 欧美在线亚洲在线| 色综合视频一区中文字幕| 国内精品久久久久久中文字幕| 亚洲国产精品免费| 国产欧美精品在线播放| 91在线观看免费高清完整版在线观看| 亚洲欧美在线一区| 2019av中文字幕| 国产亚洲人成网站在线观看| 日本在线精品视频| 国产精品高潮呻吟视频| 久久久久久久国产精品| 国产亚洲欧洲高清| 国产精品入口日韩视频大尺度| 久久91精品国产| 久久青草福利网站| 国产精品羞羞答答| 精品久久久久久久久久久久| 亚洲大胆人体在线| 欧美人成在线视频| 亚洲色图激情小说| 国产免费一区二区三区在线观看| 97色伦亚洲国产| 97视频在线观看成人| 狠狠躁夜夜躁人人爽超碰91| 成人黄色片在线| 91精品久久久久久综合乱菊| 最好看的2019年中文视频| 成人国产在线激情| 亚洲第一区中文99精品| 全亚洲最色的网站在线观看| 国产精品视频99| 最近2019中文免费高清视频观看www99| 亚洲综合中文字幕在线观看| 日韩在线视频免费观看| 亚洲欧美国产精品久久久久久久| 国产精品免费久久久久影院| 91精品国产高清久久久久久久久| 国产在线a不卡| 国内精品模特av私拍在线观看| 亚洲精品动漫100p| 亚洲中国色老太| 久久97久久97精品免视看| 国产成人高清激情视频在线观看| 欧美性猛交xxxx偷拍洗澡| 亚洲最大在线视频| 亚洲在线免费视频| 日韩电影中文字幕在线观看| 97在线观看视频国产| 在线国产精品播放| 亚洲精品乱码久久久久久金桔影视| 亚洲一区二区日本| 欧美日韩国产一区中文午夜| 精品国产乱码久久久久久婷婷| 97国产suv精品一区二区62| 日韩视频中文字幕| 亚洲伊人一本大道中文字幕| 亚洲精品v欧美精品v日韩精品| 亚洲福利在线看| 亚洲欧美在线第一页| 国产成人精品久久二区二区| 精品欧美激情精品一区| 欧美视频专区一二在线观看| 麻豆国产精品va在线观看不卡| 午夜剧场成人观在线视频免费观看| 美女av一区二区三区| 欧美精品精品精品精品免费| 丝袜情趣国产精品| 日韩久久午夜影院| 国产精品三级久久久久久电影| 日韩在线欧美在线国产在线| 都市激情亚洲色图| 亚洲男人的天堂网站| 亚洲在线视频观看| 国产视频一区在线| 国产成人精品a视频一区www| 国产亚洲欧洲高清| 一区二区欧美久久| 日韩在线观看免费av| 久久影视电视剧免费网站清宫辞电视| 欧美日本高清视频| 亚洲天堂免费观看| 亚洲国模精品私拍| 欧美日韩国产在线播放| 国产成人鲁鲁免费视频a| 欧美性做爰毛片| 55夜色66夜色国产精品视频| www.精品av.com| 欧美另类暴力丝袜| 亚洲成人激情视频| 欧美激情精品久久久久久黑人| 97色在线播放视频| 韩曰欧美视频免费观看| 成人精品一区二区三区| 国自产精品手机在线观看视频| 亚洲精品久久久久久下一站| 亚洲最大av在线| 在线免费观看羞羞视频一区二区| 久久精品视频中文字幕| 欧美日韩裸体免费视频| 九九热精品在线| 亚洲三级 欧美三级| 国产日韩在线视频|