激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數(shù)據(jù)庫技術(shù)|

服務(wù)器之家 - 數(shù)據(jù)庫 - Redis - 提高redis緩存命中率的方法

提高redis緩存命中率的方法

2019-11-25 15:18laozhang Redis

在本篇文章里小編給大家整理了關(guān)于怎么提高redis緩存命中率的相關(guān)知識點內(nèi)容,有興趣的朋友們跟著學(xué)習(xí)下。

緩存命中率的介紹

命中:可以直接通過緩存獲取到需要的數(shù)據(jù)。

不命中:無法直接通過緩存獲取到想要的數(shù)據(jù),需要再次查詢數(shù)據(jù)庫或者執(zhí)行其它的操作。原因可能是由于緩存中根本不存在,或者緩存已經(jīng)過期。

通常來講,緩存的命中率越高則表示使用緩存的收益越高,應(yīng)用的性能越好(響應(yīng)時間越短、吞吐量越高),抗并發(fā)的能力越強(qiáng)。

由此可見,在高并發(fā)的互聯(lián)網(wǎng)系統(tǒng)中,緩存的命中率是至關(guān)重要的指標(biāo)。

如何監(jiān)控緩存的命中率

在memcached中,運(yùn)行state命令可以查看memcached服務(wù)的狀態(tài)信息,其中cmd_get表示總的get次數(shù),get_hits表示get的總命中次數(shù),命中率 = get_hits/cmd_get。

當(dāng)然,我們也可以通過一些開源的第三方工具對整個memcached集群進(jìn)行監(jiān)控,顯示會更直觀。比較典型的包括:zabbix、MemAdmin等。

 

如圖:MemAdmin對memcached服務(wù)的命中率情況的監(jiān)控統(tǒng)計

提高redis緩存命中率的方法

同理,在redis中可以運(yùn)行info命令查看redis服務(wù)的狀態(tài)信息,其中keyspace_hits為總的命中中次數(shù),keyspace_misses為總的miss次數(shù),命中率=keyspace_hits/(keyspace_hits+keyspace_misses)。

開源工具Redis-star能以圖表方式直觀redis服務(wù)相關(guān)信息,同時,zabbix也提供了相關(guān)的插件對redis服務(wù)進(jìn)行監(jiān)控。

影響緩存命中率的幾個因素

之前的章節(jié)中我們提到了緩存命中率的重要性,下面分析下影響緩存命中率的幾個因素。

業(yè)務(wù)場景和業(yè)務(wù)需求

緩存適合“讀多寫少”的業(yè)務(wù)場景,反之,使用緩存的意義其實并不大,命中率會很低。

業(yè)務(wù)需求決定了對時效性的要求,直接影響到緩存的過期時間和更新策略。時效性要求越低,就越適合緩存。在相同key和相同請求數(shù)的情況下,緩存時間越長,命中率會越高。

互聯(lián)網(wǎng)應(yīng)用的大多數(shù)業(yè)務(wù)場景下都是很適合使用緩存的。

緩存的設(shè)計(粒度和策略)

通常情況下,緩存的粒度越小,命中率會越高。舉個實際的例子說明:

當(dāng)緩存單個對象的時候(例如:單個用戶信息),只有當(dāng)該對象對應(yīng)的數(shù)據(jù)發(fā)生變化時,我們才需要更新緩存或者讓移除緩存。而當(dāng)緩存一個集合的時候(例如:所有用戶數(shù)據(jù)),其中任何一個對象對應(yīng)的數(shù)據(jù)發(fā)生變化時,都需要更新或移除緩存。

還有另一種情況,假設(shè)其他地方也需要獲取該對象對應(yīng)的數(shù)據(jù)時(比如其他地方也需要獲取單個用戶信息),如果緩存的是單個對象,則可以直接命中緩存,反之,則無法直接命中。這樣更加靈活,緩存命中率會更高。

此外,緩存的更新/過期策略也直接影響到緩存的命中率。當(dāng)數(shù)據(jù)發(fā)生變化時,直接更新緩存的值會比移除緩存(或者讓緩存過期)的命中率更高,當(dāng)然,系統(tǒng)復(fù)雜度也會更高。

緩存容量和基礎(chǔ)設(shè)施

緩存的容量有限,則容易引起緩存失效和被淘汰(目前多數(shù)的緩存框架或中間件都采用了LRU算法)。同時,緩存的技術(shù)選型也是至關(guān)重要的,比如采用應(yīng)用內(nèi)置的本地緩存就比較容易出現(xiàn)單機(jī)瓶頸,而采用分布式緩存則畢竟容易擴(kuò)展。所以需要做好系統(tǒng)容量規(guī)劃,并考慮是否可擴(kuò)展。此外,不同的緩存框架或中間件,其效率和穩(wěn)定性也是存在差異的。

其他因素

當(dāng)緩存節(jié)點發(fā)生故障時,需要避免緩存失效并最大程度降低影響,這種特殊情況也是架構(gòu)師需要考慮的。業(yè)內(nèi)比較典型的做法就是通過一致性Hash算法,或者通過節(jié)點冗余的方式。

有些朋友可能會有這樣的理解誤區(qū):既然業(yè)務(wù)需求對數(shù)據(jù)時效性要求很高,而緩存時間又會影響到緩存命中率,那么系統(tǒng)就別使用緩存了。其實這忽略了一個重要因素--并發(fā)。通常來講,在相同緩存時間和key的情況下,并發(fā)越高,緩存的收益會越高,即便緩存時間很短。

提高緩存命中率的方法

從架構(gòu)師的角度,需要應(yīng)用盡可能的通過緩存直接獲取數(shù)據(jù),并避免緩存失效。這也是比較考驗架構(gòu)師能力的,需要在業(yè)務(wù)需求,緩存粒度,緩存策略,技術(shù)選型等各個方面去通盤考慮并做權(quán)衡。盡可能的聚焦在高頻訪問且時效性要求不高的熱點業(yè)務(wù)上,通過緩存預(yù)加載(預(yù)熱)、增加存儲容量、調(diào)整緩存粒度、更新緩存等手段來提高命中率。

對于時效性很高(或緩存空間有限),內(nèi)容跨度很大(或訪問很隨機(jī)),并且訪問量不高的應(yīng)用來說緩存命中率可能長期很低,可能預(yù)熱后的緩存還沒來得被訪問就已經(jīng)過期了。

延伸 · 閱讀

精彩推薦
  • Redisredis實現(xiàn)排行榜功能

    redis實現(xiàn)排行榜功能

    排行榜在很多地方都能使用到,redis的zset可以很方便地用來實現(xiàn)排行榜功能,本文就來簡單的介紹一下如何使用,具有一定的參考價值,感興趣的小伙伴們...

    乘月歸5022021-08-05
  • RedisRedis 事務(wù)知識點相關(guān)總結(jié)

    Redis 事務(wù)知識點相關(guān)總結(jié)

    這篇文章主要介紹了Redis 事務(wù)相關(guān)總結(jié),幫助大家更好的理解和學(xué)習(xí)使用Redis,感興趣的朋友可以了解下...

    AsiaYe8232021-07-28
  • RedisRedis的配置、啟動、操作和關(guān)閉方法

    Redis的配置、啟動、操作和關(guān)閉方法

    今天小編就為大家分享一篇Redis的配置、啟動、操作和關(guān)閉方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧 ...

    大道化簡5312019-11-14
  • RedisRedis全量復(fù)制與部分復(fù)制示例詳解

    Redis全量復(fù)制與部分復(fù)制示例詳解

    這篇文章主要給大家介紹了關(guān)于Redis全量復(fù)制與部分復(fù)制的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Redis爬蟲具有一定的參考學(xué)習(xí)...

    豆子先生5052019-11-27
  • RedisRedis如何實現(xiàn)數(shù)據(jù)庫讀寫分離詳解

    Redis如何實現(xiàn)數(shù)據(jù)庫讀寫分離詳解

    Redis的主從架構(gòu),能幫助我們實現(xiàn)讀多,寫少的情況,下面這篇文章主要給大家介紹了關(guān)于Redis如何實現(xiàn)數(shù)據(jù)庫讀寫分離的相關(guān)資料,文中通過示例代碼介紹...

    羅兵漂流記6092019-11-11
  • Redisredis中如何使用lua腳本讓你的靈活性提高5個逼格詳解

    redis中如何使用lua腳本讓你的靈活性提高5個逼格詳解

    這篇文章主要給大家介紹了關(guān)于redis中如何使用lua腳本讓你的靈活性提高5個逼格的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具...

    一線碼農(nóng)5812019-11-18
  • Redisredis 交集、并集、差集的具體使用

    redis 交集、并集、差集的具體使用

    這篇文章主要介紹了redis 交集、并集、差集的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友...

    xiaojin21cen10152021-07-27
  • Redis詳解Redis復(fù)制原理

    詳解Redis復(fù)制原理

    與大多數(shù)db一樣,Redis也提供了復(fù)制機(jī)制,以滿足故障恢復(fù)和負(fù)載均衡等需求。復(fù)制也是Redis高可用的基礎(chǔ),哨兵和集群都是建立在復(fù)制基礎(chǔ)上實現(xiàn)高可用的...

    李留廣10222021-08-09
主站蜘蛛池模板: 可以看毛片的网址 | 亚洲午夜在线 | 亚州精品天堂中文字幕 | 天天色综合6 | 一区二区久久电影 | 国产精品免费视频观看 | 99re热视频这里只精品 | 国产91影院| 成人在线免费观看网址 | 91成人一区二区三区 | 久久久久久久一区 | 怦然心动50免费完整版 | 国产精品亚洲一区二区三区在线观看 | 一级大片一级一大片 | 韩国一级免费视频 | 性欧美在线视频 | 亚洲91网站 | 日韩黄色影视 | 久久成人视屏 | 免费a级毛片永久免费 | 午夜国产在线观看 | 超碰97最新 | 香蕉在线播放 | 这里精品 | 成人在线视频免费看 | 亚洲精品午夜在线 | 欧美区在线 | 国产91一区二区三区 | 91成人午夜性a一级毛片 | 91免费高清视频 | 久久福利小视频 | 国产亚洲精品综合一区91 | 夜夜夜精品视频 | 91网站链接 | 久久一本日日摸夜夜添 | 99影视电影电视剧在线播放 | 一级免费| 精品一区二区在线播放 | 久久精品性视频 | 日韩av有码在线 | 久久草草影视免费网 |