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

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

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

GaussDB(for Redis) 特性揭秘:大 key 治理

jf_94205927 ? 來(lái)源:jf_94205927 ? 作者:jf_94205927 ? 2024-03-28 22:06 ? 次閱讀

從 DBA 的視角看,大 Key 無(wú)疑是引起 Redis 線上問(wèn)題的常見(jiàn)原因。為了解決大 Key 隱患,業(yè)務(wù)首先要遵守合理的開(kāi)發(fā)規(guī)范,減少大 Key 的產(chǎn)生和訪問(wèn)依賴。但有時(shí)大 Key 是在程序運(yùn)行過(guò)程中悄悄產(chǎn)生的,讓人防不勝防。因此,一款可隨時(shí)在線診斷,且能主動(dòng)預(yù)警,防患于未然的 Redis 服務(wù)產(chǎn)品顯得尤為重要。

作為由華為云精心打造的企業(yè)級(jí) Redis,GaussDB(for Redis)提供了完備的大 Key 解決方案,支持大 Key 在線診斷、監(jiān)控預(yù)警、承載力強(qiáng)等能力,讓 DBA 如虎添翼。

GaussDB(for Redis)

支持大 Key 在線診斷

GaussDB(for Redis)采用計(jì)算、存儲(chǔ)分離的高可靠架構(gòu),每個(gè)計(jì)算節(jié)點(diǎn)上都部署有后臺(tái)任務(wù)。GaussDB(for Redis)通過(guò)后臺(tái)任務(wù)持續(xù)檢測(cè)分析存儲(chǔ)池中的大 key 情況,用戶執(zhí)行命令時(shí)直接取結(jié)果,不會(huì)影響線上業(yè)務(wù),跟業(yè)界阻塞式全量掃描方式相比,更安全。

wKgZomYFeOCAed07AAI8IiCcEsM153.png

用戶執(zhí)行 bigkeys 命令后,將直接從節(jié)點(diǎn)上獲取“答案”,不用全庫(kù)掃描引起不必要的性能影響。

wKgZomYFeOuASaplAARdBFoUhmE077.png

此外,GaussDB(for Redis)支持用戶自定義大 key 標(biāo)準(zhǔn),比如大于 1MB 的 string、大于 10000 個(gè)元素的 hash 類型等。該功能一經(jīng)推出,收獲了很多客戶和 DBA 小伙伴的認(rèn)可及點(diǎn)贊。

GaussDB(for Redis)

支持大 key 監(jiān)控預(yù)警

分享兩個(gè)真實(shí)案例:

1、業(yè)務(wù)周期性執(zhí)行“l(fā)range 0 -1”獲取 list key 的所有元素。但由于程序 bug,業(yè)務(wù)也同時(shí)在長(zhǎng)期、緩慢地向這個(gè) key 中持續(xù)追加,導(dǎo)致 key 越來(lái)越長(zhǎng)。直到線上業(yè)務(wù)出問(wèn)題,幾經(jīng)波折,才發(fā)現(xiàn)了這個(gè)危險(xiǎn)的大 Key。

2、業(yè)務(wù)長(zhǎng)期穩(wěn)定運(yùn)行,有一天有新組件上線,線上業(yè)務(wù)開(kāi)始不斷超時(shí)。幾經(jīng)排查,發(fā)現(xiàn)新組件對(duì) Redis 執(zhí)行 hmset f1 v1 f2 v2……,一條寫(xiě)入命令攜帶了長(zhǎng)達(dá) 2 萬(wàn)個(gè)參數(shù),嚴(yán)重影響了生產(chǎn)業(yè)務(wù)。

從 DBA 的角度,這類問(wèn)題需要一個(gè)“大 Key 偵探”時(shí)刻盯防,一旦有對(duì)大 Key 的高危操作,立刻主動(dòng)預(yù)警。

GaussDB(for Redis)設(shè)計(jì)了 10+監(jiān)控指標(biāo),提供“大 Key 偵探”的能力,例如:?jiǎn)蝹€(gè)請(qǐng)求回包的最大元素個(gè)數(shù)(識(shí)別 lrange 0 -1 操作大 key 引起阻塞的場(chǎng)景)、單個(gè)請(qǐng)求攜帶的最大參數(shù)個(gè)數(shù)(識(shí)別 hmset 上萬(wàn)元素批導(dǎo)引起阻塞的場(chǎng)景)……DBA 只需要根據(jù)多年經(jīng)驗(yàn),將這類指標(biāo)訂閱告警,即可在第一時(shí)間“抓住大 Key 案發(fā)現(xiàn)場(chǎng)”,將風(fēng)險(xiǎn)扼殺于萌芽狀態(tài)。

GaussDB(for Redis)

對(duì)大 Key 的承載能力更強(qiáng)

即使在大 Key 存在的一些業(yè)務(wù)場(chǎng)景,GaussDB(for Redis)的表現(xiàn)也是遠(yuǎn)優(yōu)于開(kāi)源 Redis 的。下面將介紹大 Key 經(jīng)常引起的一些問(wèn)題:

1、大 key 引發(fā)了 CPU 100%,阻塞生產(chǎn)業(yè)務(wù)

在開(kāi)源 Redis 中,大 key 容易引起 CPU 占用 100%,使生產(chǎn)業(yè)務(wù)受損,引起線上問(wèn)題。這是因?yàn)殚_(kāi)源 Redis 本身就是單線程,尤其在這種比較脆弱的架構(gòu)下使用大 key,更容易引起線程阻塞,從而影響整個(gè)實(shí)例。

GaussDB(for Redis)的多線程架構(gòu)天然就對(duì)大 key 更友好,不會(huì)有這個(gè)問(wèn)題困擾。即使單個(gè)線程被個(gè)別大 Key 影響,整個(gè) GaussDB(for Redis)實(shí)例包含數(shù)十、上百個(gè)線程,整體業(yè)務(wù)基本都不會(huì)受到干擾。

2、大 key 因個(gè)別分片帶寬高,被 Redis 頻繁“流控”

目前市面上有一些開(kāi)源 Redis 是基于一個(gè)大的容器混合部署很多租戶的 Redis 進(jìn)程,但在這種架構(gòu)下,為了避免一個(gè)客戶的 Redis 影響其他客戶,往往會(huì)對(duì)客戶的 Redis 進(jìn)程進(jìn)行流量控制,當(dāng)某個(gè)客戶業(yè)務(wù)中對(duì)大 key 有較為頻繁的操作時(shí),很容易觸發(fā)給客戶設(shè)定的該租戶的帶寬閾值并觸發(fā)流控,從而導(dǎo)致線上業(yè)務(wù)受損。

相比之下,GaussDB(for Redis)的每個(gè)分片都是一個(gè)獨(dú)立的容器,是客戶的獨(dú)享資源,更可靠,連接數(shù)、帶寬等資源不設(shè)主動(dòng)流控,尤其是節(jié)點(diǎn)帶寬資源的“天花板”非常高。

3、大 key 導(dǎo)致傾斜,分片內(nèi)存占用不均勻

開(kāi)源 Redis 集群中,存儲(chǔ)大 key 會(huì)導(dǎo)致內(nèi)存空間不均勻、消耗不均衡,大 key 所在分片有 OOM 風(fēng)險(xiǎn)。

wKgaomYFePeAD17CAAK7QGdY_C0279.png

GaussDB(for Redis)采用高性能存儲(chǔ)池,不會(huì)對(duì)某個(gè)節(jié)點(diǎn)分片造成數(shù)據(jù)量的傾斜,支持大 key 可靠存儲(chǔ),不會(huì)導(dǎo)致分片 OOM。

wKgaomYFeQOAY7nQAAQi8So7m3Q466.png

4、Redis 擴(kuò)容時(shí)要搬遷數(shù)據(jù),大 key 總引起問(wèn)題

開(kāi)源 Redis 擴(kuò)容時(shí),由于涉及數(shù)據(jù)跨片搬遷,擴(kuò)容過(guò)程耗時(shí)久,存在訪問(wèn)阻塞的風(fēng)險(xiǎn)。如圖所示,因此開(kāi)源 Redis 在有大 key 的情況下,擴(kuò)容必須謹(jǐn)慎!

wKgaomYFeSuAOiNMAAQlTIEv-MU291.png

GaussDB(for Redis)支持秒級(jí)無(wú)感擴(kuò)容,不論擴(kuò)容量,還是擴(kuò) CPU,都不需要搬遷數(shù)據(jù),因此也不受大 Key 影響,運(yùn)維體驗(yàn)極佳。

wKgZomYFeR2AANsSAATJrsXY5L0225.png

本文介紹了 GaussDB(for Redis)的大 Key 診斷、大 Key 預(yù)警特性,以及在大 Key 場(chǎng)景下如何解決開(kāi)源 Redis 的穩(wěn)定性痛點(diǎn),為客戶提供了高效可靠的大 Key 解決方案。未來(lái),GaussDB(for Redis)將持續(xù)致力于開(kāi)發(fā)更多好用的企業(yè)級(jí)特性,幫助客戶輕松運(yùn)維,高效開(kāi)發(fā)。

審核編輯 黃宇

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

    關(guān)注

    3

    文章

    3381

    瀏覽量

    42604
  • DBA
    DBA
    +關(guān)注

    關(guān)注

    0

    文章

    18

    瀏覽量

    7890
  • Redis
    +關(guān)注

    關(guān)注

    0

    文章

    376

    瀏覽量

    10898
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于javaPoet的緩存key優(yōu)化實(shí)踐

    數(shù)據(jù)庫(kù)中的熱數(shù)據(jù)緩存在redis/本地緩存中,代碼如下: ? @Cacheable(value = { "per" }, key="#person.getId
    的頭像 發(fā)表于 01-14 15:18 ?352次閱讀
    基于javaPoet的緩存<b class='flag-5'>key</b>優(yōu)化實(shí)踐

    華為云Flexus X實(shí)例,Redis性能加速評(píng)測(cè)及對(duì)比

    隨著云計(jì)算技術(shù)的飛速發(fā)展,Redis 作為一種高性能的內(nèi)存數(shù)據(jù)庫(kù),在各種應(yīng)用場(chǎng)景中發(fā)揮著越來(lái)越重要的作用。為了滿足不同用戶對(duì) Redis 性能的高要求,華為云推出了 Flexus X 實(shí)例,并提供了
    的頭像 發(fā)表于 12-29 15:47 ?189次閱讀
    華為云Flexus X實(shí)例,<b class='flag-5'>Redis</b>性能加速評(píng)測(cè)及對(duì)比

    Redis緩存與Memcached的比較

    關(guān)鍵特性和差異: 1. 數(shù)據(jù)存儲(chǔ) Redis: Redis是一個(gè)開(kāi)源的鍵值存儲(chǔ),支持多種數(shù)據(jù)結(jié)構(gòu),如字符串、列表、集合、有序集合、散列、位圖、超日志和地理空間索引。 它支持持久化,可以將內(nèi)存中的數(shù)據(jù)保存到磁盤(pán),支持RDB(快照)
    的頭像 發(fā)表于 12-18 09:33 ?182次閱讀

    Sallen-Key架構(gòu)分析

    電子發(fā)燒友網(wǎng)站提供《Sallen-Key架構(gòu)分析.pdf》資料免費(fèi)下載
    發(fā)表于 10-28 09:20 ?0次下載
    Sallen-<b class='flag-5'>Key</b>架構(gòu)分析

    聊聊緩存擊穿的解決方法

    緩存擊穿,Redis中的某個(gè)熱點(diǎn)key不存在或者過(guò)期,但是此時(shí)有大量的用戶訪問(wèn)該key。比如xxx直播間優(yōu)惠券搶購(gòu)、xxx商品活動(dòng),這時(shí)候大量用戶會(huì)在某個(gè)時(shí)間點(diǎn)一同訪問(wèn)該熱點(diǎn)事件。但是可能
    的頭像 發(fā)表于 10-23 13:54 ?212次閱讀

    緩存有大key?你得知道的一些手段

    ?? ? ? ? 背景: 最近系統(tǒng)內(nèi)緩存CPU使用率一直報(bào)警,超過(guò)設(shè)置的70%報(bào)警閥值,針對(duì)此場(chǎng)景,需要對(duì)應(yīng)解決緩存是否有大key使用問(wèn)題,掃描緩存集群的大key,針對(duì)每個(gè)key做優(yōu)化處理。 以下
    的頭像 發(fā)表于 06-19 09:38 ?798次閱讀
    緩存有大<b class='flag-5'>key</b>?你得知道的一些手段

    Redis 開(kāi)源協(xié)議調(diào)整,我們?cè)趺崔k?

    2 024 年 3 月 20 日, Redis 官方宣布,從 Redis 7.4 版本開(kāi)始,Redis 將獲得源可用許可證 ( RSALv2 ) 和服務(wù)器端公共許可證 ( SSPLv1 ) 的雙重
    的頭像 發(fā)表于 05-09 22:59 ?453次閱讀
    <b class='flag-5'>Redis</b> 開(kāi)源協(xié)議調(diào)整,我們?cè)趺崔k?

    華為云 GeminiDB 發(fā)布新版本,全面支持 Redis 6.2

    華為云 GeminiDB 是一款兼容 Redis 協(xié)議的彈性 KV(Key-Value)數(shù)據(jù)庫(kù),支持遠(yuǎn)超內(nèi)存的容量和極致的性能,可支撐用戶平滑遷移,在廣告、游戲、電商等行業(yè)有著廣泛的應(yīng)用。 今年 3
    的頭像 發(fā)表于 04-08 18:22 ?1152次閱讀
    華為云 GeminiDB 發(fā)布新版本,全面支持 <b class='flag-5'>Redis</b> 6.2

    Redis開(kāi)源版與Redis企業(yè)版,怎么選用?

    點(diǎn)擊“藍(lán)字”關(guān)注我們數(shù)以千計(jì)的企業(yè)和數(shù)以百萬(wàn)計(jì)的開(kāi)發(fā)人員Redis開(kāi)源版來(lái)構(gòu)建應(yīng)用程序。但隨著用戶數(shù)量、數(shù)據(jù)量和地區(qū)性的增加,成本、可擴(kuò)展性、運(yùn)營(yíng)和可用性等問(wèn)題也隨之而來(lái)。Redis企業(yè)版
    的頭像 發(fā)表于 04-04 08:04 ?1153次閱讀
    <b class='flag-5'>Redis</b>開(kāi)源版與<b class='flag-5'>Redis</b>企業(yè)版,怎么選用?

    數(shù)據(jù)安全沒(méi)保障?GaussDB(for Redis) 為你保駕護(hù)航

    未知的 key,實(shí)際上可能面臨數(shù)據(jù)庫(kù)信息丟失和記錄篡改的風(fēng)險(xiǎn)。 作為一個(gè)重視技術(shù)的團(tuán)隊(duì),我們始終將用戶信息安全和使用體驗(yàn)放在第一位。對(duì)于這次用戶使用開(kāi)源 Redis 遇到的問(wèn)題,我們盤(pán)點(diǎn)了 GaussDB(for
    的頭像 發(fā)表于 03-28 22:09 ?694次閱讀
    數(shù)據(jù)安全沒(méi)保障?<b class='flag-5'>GaussDB</b>(for <b class='flag-5'>Redis</b>) 為你保駕護(hù)航

    GaussDB(for Redis) 特性揭秘:多租戶管理

    華為云 GaussDB(for Redis)持續(xù)完善企業(yè)級(jí)增強(qiáng)特性,是名副其實(shí)的 "Redis Plus" ,其中很經(jīng)典的企業(yè)級(jí)特性是 多租
    的頭像 發(fā)表于 03-28 22:06 ?766次閱讀
    <b class='flag-5'>GaussDB</b>(for <b class='flag-5'>Redis</b>) <b class='flag-5'>特性</b><b class='flag-5'>揭秘</b>:多租戶管理

    GaussDB(for Redis) 游戲?qū)嵺`:玩家下線行為上報(bào)

    實(shí)現(xiàn)以上功能時(shí),感知用戶下線行為延遲較大,導(dǎo)致上報(bào)時(shí)間不準(zhǔn)確。華為云 GaussDB(for Redis)作為一款企業(yè)級(jí)游戲數(shù)據(jù)庫(kù),具備卓越的企業(yè)級(jí)能力,能及時(shí)上報(bào)用戶下線行為,并被廣泛應(yīng)用于排行榜等多種業(yè)務(wù)場(chǎng)景。 基于 Redis
    的頭像 發(fā)表于 03-28 22:03 ?542次閱讀

    新版 Redis 不再“開(kāi)源”,對(duì)使用者都有哪些影響?

    2024 年 3 月 20 日,Redis Labs 宣布從 Redis 7.4 開(kāi)始,將原先比較寬松的 BSD 源碼使用協(xié)議修改為 RSAv2和 SSPLv1協(xié)議。該變化意味著 Redis
    的頭像 發(fā)表于 03-27 22:30 ?524次閱讀
    新版 <b class='flag-5'>Redis</b> 不再“開(kāi)源”,對(duì)使用者都有哪些影響?

    Redis官方搜索引擎來(lái)了,性能炸裂!

    RediSearch 是一個(gè) Redis 模塊,為 Redis 提供查詢、二級(jí)索引和全文搜索功能。
    的頭像 發(fā)表于 02-21 10:01 ?2436次閱讀
    <b class='flag-5'>Redis</b>官方搜索引擎來(lái)了,性能炸裂!

    MongoDB和Redis的技術(shù)特性

    Redis作為一個(gè)高性能的內(nèi)存數(shù)據(jù)存儲(chǔ)系統(tǒng),能夠提供快速的緩存機(jī)制,從而幫助應(yīng)用承受高并發(fā)請(qǐng)求,顯著提高系統(tǒng)響應(yīng)速度和吞吐量。這與國(guó)內(nèi)互聯(lián)網(wǎng)公司推崇的快速迭代和高用戶并發(fā)量的特點(diǎn)非常契合。
    的頭像 發(fā)表于 02-01 11:42 ?532次閱讀
    MongoDB和<b class='flag-5'>Redis</b>的技術(shù)<b class='flag-5'>特性</b>