chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

redis幾個認(rèn)識誤區(qū)

lhl545545 ? 來源:電子發(fā)燒友網(wǎng) ? 2018-02-09 13:46 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

Redis性能驚人,國內(nèi)前十大網(wǎng)站的子產(chǎn)品估計(jì)用1臺Redis就可以滿足存儲及Cache的需求。除了性能印象之外,業(yè)界其實(shí)普遍對Redis的認(rèn)識存在一定誤區(qū)。下文是對對Redis研究的一個總結(jié),澄清了一些認(rèn)識上的誤區(qū),提出一些觀點(diǎn)供大家探討。

1. Redis是什么

這個問題的結(jié)果影響了我們怎么用Redis。如果你認(rèn)為Redis是一個key value store, 那可能會用它來代替MySQL;如果認(rèn)為它是一個可以持久化的cache, 可能只是它保存一些頻繁訪問的臨時數(shù)據(jù)。Redis是REmote DIctionary Server的縮寫,在Redis在官方網(wǎng)站的的副標(biāo)題是A persistent key-value database with built-in net interface written in ANSI-C for Posix systems,這個定義偏向key value store。還有一些看法則認(rèn)為Redis是一個memory database,因?yàn)樗母咝阅芏际腔趦?nèi)存操作的基礎(chǔ)。另外一些人則認(rèn)為Redis是一個data structure server,因?yàn)镽edis支持復(fù)雜的數(shù)據(jù)特性,比如List, Set等。對Redis的作用的不同解讀決定了你對Redis的使用方式。

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

2. Redis不可能比Memcache快

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

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

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

3. 單臺Redis的存放數(shù)據(jù)必須比物理內(nèi)存小

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

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

基于相同的考慮,Redis 2.0也增加了VM特性。讓Redis數(shù)據(jù)容量突破了物理內(nèi)存的限制。并實(shí)現(xiàn)了數(shù)據(jù)冷熱分離。

4. Redis的VM實(shí)現(xiàn)是重復(fù)造輪子

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

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

5. 用get/set方式使用Redis

作為一個key value存在,很多開發(fā)者自然的使用set/get方式來使用Redis,實(shí)際上這并不是最優(yōu)化的使用方法。尤其在未啟用VM情況下,Redis全部數(shù)據(jù)需要放入內(nèi)存,節(jié)約內(nèi)存尤其重要。

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

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

6. 使用aof代替snapshot

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

其實(shí)aof目的主要是數(shù)據(jù)可靠性及高可用性,在Redis中有另外一種方法來達(dá)到目的:Replication。由于Redis的高性能,復(fù)制基本沒有延遲。這樣達(dá)到了防止單點(diǎn)故障及實(shí)現(xiàn)了高可用。

小結(jié)

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • Redis
    +關(guān)注

    關(guān)注

    0

    文章

    394

    瀏覽量

    12248
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    Redis應(yīng)用監(jiān)控指標(biāo)大盤點(diǎn)

    Redis作為高性能內(nèi)存數(shù)據(jù)庫,廣泛應(yīng)用于緩存、會話存儲、消息隊(duì)列等場景。對Redis運(yùn)行狀況的有效監(jiān)控,是保障業(yè)務(wù)穩(wěn)定性的關(guān)鍵。本文的目的是幫助運(yùn)維工程師建立完整的Redis監(jiān)控知識體系,講解需要監(jiān)控哪些指標(biāo)、如何采集這些指標(biāo)
    的頭像 發(fā)表于 04-09 10:07 ?136次閱讀

    全方位對比:Redis能取代MySQL嗎?看完這篇你就懂了

    Redis能不能取代MySQL?答案很明確:不能取代,但可以互補(bǔ)。
    的頭像 發(fā)表于 04-07 10:50 ?133次閱讀
    全方位對比:<b class='flag-5'>Redis</b>能取代MySQL嗎?看完這篇你就懂了

    變頻器應(yīng)用誤區(qū)的探討

    變頻器在應(yīng)用過程中確實(shí)存在一些常見的誤區(qū),這些誤區(qū)如果不加以注意和糾正,可能會對變頻器的性能、壽命以及整個系統(tǒng)的穩(wěn)定性產(chǎn)生不良影響。
    的頭像 發(fā)表于 03-13 16:46 ?283次閱讀

    運(yùn)動控制伺服閉環(huán)PID參數(shù)調(diào)整的誤區(qū)

    ,不僅可能無法解決問題,甚至?xí)屜到y(tǒng)陷入“調(diào)了震,震了調(diào)”的死循環(huán)。以下是幾個最常見、也最容易被忽視的調(diào)整誤區(qū),希望能幫你換個思路,找到問題的真正根源。 誤區(qū)一:盲目調(diào)參,忽略硬件與負(fù)載的“天花板” 這是最根本的
    的頭像 發(fā)表于 03-08 12:08 ?1252次閱讀
    運(yùn)動控制伺服閉環(huán)PID參數(shù)調(diào)整的<b class='flag-5'>誤區(qū)</b>

    Redis哨兵模式的自動故障檢測與主從切換實(shí)戰(zhàn)

    Redis 主從復(fù)制解決了讀擴(kuò)展和數(shù)據(jù)冗余問題,但主節(jié)點(diǎn)故障時需要人工介入切換,這在生產(chǎn)環(huán)境中是不可接受的。Sentinel(哨兵)模式在主從架構(gòu)之上增加了自動故障檢測和故障轉(zhuǎn)移能力,是 Redis 高可用的標(biāo)準(zhǔn)方案之一。
    的頭像 發(fā)表于 02-27 11:05 ?261次閱讀

    Redis內(nèi)存管理、持久化策略與慢查詢排查分析

    Redis 在生產(chǎn)環(huán)境中承擔(dān)著緩存、會話存儲、消息隊(duì)列、分布式鎖等多種角色。隨著數(shù)據(jù)量增長和并發(fā)壓力上升,內(nèi)存碎片、持久化 I/O 抖動、慢查詢堆積這三類問題會逐漸顯現(xiàn),直接影響服務(wù)延遲和穩(wěn)定性。Redis 8.x 在內(nèi)存管理和持久化機(jī)制上做了若干改進(jìn),但核心調(diào)優(yōu)思路與
    的頭像 發(fā)表于 02-27 11:00 ?271次閱讀

    輪轂氣密性檢測設(shè)備選購誤區(qū)及避坑指南-岳信儀器

    為工廠選購輪轂氣密性檢測設(shè)備是一項(xiàng)關(guān)鍵決策,選對了能提升質(zhì)量、保障安全;選錯了則可能成為生產(chǎn)線上的“燒錢坑”。許多采購者容易陷入以下幾個常見誤區(qū)。本文將一一拆解,并提供實(shí)用的“避坑”指南,助您做出
    的頭像 發(fā)表于 01-13 15:49 ?282次閱讀
    輪轂氣密性檢測設(shè)備選購<b class='flag-5'>誤區(qū)</b>及避坑指南-岳信儀器

    步進(jìn)電機(jī)EMC整改:不過關(guān)?常見誤區(qū)你可能正在犯

    深圳南柯電子|步進(jìn)電機(jī)EMC整改:不過關(guān)?常見誤區(qū)你可能正在犯
    的頭像 發(fā)表于 09-08 09:58 ?801次閱讀

    Redis Sentinel和Cluster模式如何選擇

    在我十年的運(yùn)維生涯中,見過太多團(tuán)隊(duì)在Redis集群方案選擇上踩坑。有的團(tuán)隊(duì)盲目追求"高大上"的Cluster模式,結(jié)果運(yùn)維復(fù)雜度爆表;有的團(tuán)隊(duì)死守Sentinel不放,最后擴(kuò)展性成了瓶頸。今天,我想通過這篇萬字長文,把我在生產(chǎn)環(huán)境中積累的經(jīng)驗(yàn)全部分享給你。
    的頭像 發(fā)表于 09-08 09:31 ?742次閱讀

    防雷誤區(qū)揭秘:雷卯解決方案與技術(shù)指南

    今天,雷卯EMC小哥來為大家一一解答。誤區(qū)1:“裝了避雷針,設(shè)備就不會被雷擊了?”很多人覺得只要裝了避雷針,設(shè)備就絕對安
    的頭像 發(fā)表于 08-13 16:52 ?1043次閱讀
    防雷<b class='flag-5'>誤區(qū)</b>揭秘:雷卯解決方案與技術(shù)指南

    Redis集群部署配置詳解

    Redis集群是一種分布式Redis解決方案,通過數(shù)據(jù)分片和主從復(fù)制實(shí)現(xiàn)高可用性和橫向擴(kuò)展。集群將整個數(shù)據(jù)集分割成16384個哈希槽(hash slots),每個節(jié)點(diǎn)負(fù)責(zé)一部分槽位。
    的頭像 發(fā)表于 07-17 11:04 ?1147次閱讀

    Redis集群部署與性能優(yōu)化實(shí)戰(zhàn)

    Redis作為高性能的內(nèi)存數(shù)據(jù)庫,在現(xiàn)代互聯(lián)網(wǎng)架構(gòu)中扮演著關(guān)鍵角色。作為運(yùn)維工程師,掌握Redis的部署、配置和優(yōu)化技能至關(guān)重要。本文將從實(shí)戰(zhàn)角度出發(fā),詳細(xì)介紹Redis集群的搭建、性能優(yōu)化以及監(jiān)控運(yùn)維的核心技術(shù)。
    的頭像 發(fā)表于 07-08 17:56 ?1004次閱讀

    【經(jīng)驗(yàn)分享】在Omni3576上編譯Redis-8.0.2源碼,并安裝及性能測試

    本文首先介紹Redis是什么,然后介紹如何在Omni3576上編譯Redis-8.0.2源碼,以及從源碼編譯、安裝Redis,最后介紹如何在Omni3576上運(yùn)行Redis性能測試,并
    的頭像 發(fā)表于 06-05 08:05 ?1070次閱讀
    【經(jīng)驗(yàn)分享】在Omni3576上編譯<b class='flag-5'>Redis</b>-8.0.2源碼,并安裝及性能測試

    【幸狐Omni3576邊緣計(jì)算套件試用體驗(yàn)】Redis最新8.0.2版本源碼安裝及性能測試

    本文首先介紹Redis是什么,然后介紹如何在Omni3576上編譯Redis-8.0.2源碼,以及從源碼編譯、安裝Redis,最后介紹如何在Omni3576上運(yùn)行Redis性能測試,并
    發(fā)表于 06-03 01:28

    Redis 再次開源!

    “ ?Redis 現(xiàn)已采用 AGPLv3 開源許可證。? ” Redis CEO 的 Blog 以下是 Redis CEO Rowan Trollope 的 Blog: 像 AWS 和 GCP 這樣
    的頭像 發(fā)表于 05-06 18:26 ?1053次閱讀