Redis使用規(guī)范

# ****Redis使用規(guī)范****

一:書寫本規(guī)范的背景哭懈,目的,原因茎用,意義等虛化的內(nèi)容全部省略遣总。制定本規(guī)范只是為了減少因濫用,亂用轨功,誤用造成的生產(chǎn)旭斥,研發(fā)事故

二:Redis使用場景分析及使用建議

1)、純Cache使用古涧,主要是key->value的使用垂券,這個場景主要是考慮減少數(shù)據(jù)庫的讀壓力減少數(shù)據(jù)庫的QPS,所以這部分key必須設(shè)置超時時間羡滑!因為若不設(shè)置菇爪,這些Key會一直占用內(nèi)存不釋放算芯,造成極大的浪費,而且隨著時間的推移會導(dǎo)致內(nèi)存占用越來越大娄帖,直到達(dá)到服務(wù)器內(nèi)存上限也祠!另外Key的超時長短要根據(jù)業(yè)務(wù)綜合評估,而不是越長越好近速!

2)诈嘿、作為限流中間件使用,如保存中獎信息削葱,作為已中獎用戶限制奖亚;如保存獎品數(shù)量信息,作為數(shù)量限制析砸,防止減少時扣減超出限制昔字。這部分?jǐn)?shù)據(jù)往往會使用hash,set數(shù)據(jù)首繁,這部分?jǐn)?shù)據(jù)應(yīng)該在某次活動結(jié)束后作郭,對里面的內(nèi)容和信息進(jìn)行落地,然后刪除弦疮。

3)夹攒、作為隊列使用,包括限流隊列用戶秒殺場景胁塞,或者任務(wù)隊列用于程序異步化咏尝。這里主要用到list,用于秒殺場景的key理論上在活動結(jié)束后啸罢,如果list內(nèi)數(shù)據(jù)還在编检,則需要刪除,用戶任務(wù)隊列的key理論上必須存在消費者扰才,基本無需處理

4)允懂、數(shù)據(jù)庫使用,主要使用hash和set滿足數(shù)據(jù)庫使用場景训桶,如存儲用戶信息的hash累驮,用戶排行榜數(shù)據(jù)的sortedset。這部分?jǐn)?shù)據(jù)需要有同步程序,理應(yīng)redis的數(shù)據(jù)和mysql或者oracle數(shù)據(jù)庫中都存有一份,在數(shù)據(jù)不同步時阻肿,能進(jìn)行同步恢復(fù)操作蕾额。

5)、發(fā)布訂閱消息中間件使用,暫未使用粟判。

6)怜奖、分布式session使用蜡坊,盡量與業(yè)務(wù)Redis不在同一實例上杠输,減少相關(guān)性。

7)秕衙、分布式鎖蠢甲,用于減少數(shù)據(jù)庫的鎖性能消耗,通過Redis的setnx操作實現(xiàn)分布式鎖据忘。

三:目前Redis使用存在的一些問題

1)鹦牛、用于Cache的key沒有設(shè)置超時時間

2)、用于限流中間件使用的的key未做好退出處理

3)勇吊、數(shù)據(jù)庫使用的key曼追,同步還是有缺失,導(dǎo)致數(shù)據(jù)出錯后汉规,無法正常使用

4)礼殊、session和業(yè)務(wù)使用同一實例,依賴性較強

5)针史、在操作Redis時晶伦,同一請求處理中多次操作Redis,但未使用管道合并請求

6)啄枕、只使用Redis坝辫,未將數(shù)據(jù)落地至關(guān)系型數(shù)據(jù)庫,或者沒有足夠的日志導(dǎo)致在導(dǎo)出數(shù)據(jù)射亏,查找數(shù)據(jù)時太煩

7)、key太多竭业,沒有統(tǒng)一的地方查詢每個key的使用原因智润,場景

8)、因為不敢刪除未辆,導(dǎo)致內(nèi)存占用越來越大窟绷,導(dǎo)致在持久化是超出正常內(nèi)存使用

四:使用規(guī)范

根據(jù)存在的問題及使用建議,需要做如下的規(guī)范:

1)咐柜、嚴(yán)格控制KEY的長度兼蜈,但需要注意的是KEY格式需要滿足前綴+名稱+(期限)等組成,前綴包括項目名稱簡寫如zj拙友,hb为狸,js,sh遗契,活動功能區(qū)分hd或者gn辐棒,名稱建議與Controller名稱一致,如果可以需要加期限,如1709表示17年9月過后可以刪除漾根。

2)泰涂、嚴(yán)格或者是必須設(shè)置ttl,需重新封裝Redis操作類辐怕,封裝的類中其中所有的set方法盡可能加上expire逼蒙,禁止直接使用內(nèi)置client庫

3)、禁止使用hgetall寄疏,smembers是牢,keys,lrange 0赁还,-1等獲取所有數(shù)據(jù)的操作妖泄,特別是嚴(yán)禁在生產(chǎn)環(huán)境使用,如需獲取全量數(shù)據(jù)艘策,需要通過scan蹈胡,hscan等操作替代

4)、在同一線程或進(jìn)程多次操作Redis時朋蔫,需要使用管道的方式獲取數(shù)據(jù)罚渐,或者mget,hmget等獲取數(shù)據(jù)驯妄,但不建議在集群環(huán)境中使用荷并。不可以在同一方法內(nèi)SET10000次,GET10000次

5)青扔、嚴(yán)禁將數(shù)據(jù)只保存在Redis中源织,對一些核心數(shù)據(jù)必須落地至數(shù)據(jù)庫,一些非核心數(shù)據(jù)必須落地至日志

6)微猖、Redis只是一個其中的工具谈息,適用場景也是有限的,沒必要拿到一個工具往死里用凛剥,在技術(shù)選型時侠仇,不要拘泥于只有Redis

7)、控制每一個value的大小犁珠,不要把大量數(shù)據(jù)合在一個key中逻炊,只保存有效的,可使用的犁享,這種場景建議hash或其他方式余素,或?qū)alue進(jìn)行壓縮后儲存

8)、建議將保存用戶信息和保存業(yè)務(wù)數(shù)據(jù)及保存session數(shù)據(jù)分離使用不同實例饼疙,減少因Redis單線程讀寫高并發(fā)情況使用效果不佳

9)溺森、根據(jù)目前的實際情況慕爬,提出搭建Redis KEY使用管理平臺,具體內(nèi)容見五

五:Redis key管理平臺

目標(biāo):

初級-》所有Redis key可管理屏积,可查詢医窿,可知道key用途

進(jìn)階-》可導(dǎo)出(導(dǎo)出方式分為csv,數(shù)據(jù)庫等)炊林,刪除姥卢,批量操作

實現(xiàn)內(nèi)容:

1、按照需求詳細(xì)記錄每個key的使用渣聚,包括key名稱独榴,數(shù)據(jù)結(jié)構(gòu),生成規(guī)則奕枝,ttl時間棺榔,數(shù)據(jù)格式示例

2、記錄時需評估合理性隘道,在添加時需要注明key使用者症歇,如果是list,還應(yīng)注明消費者相關(guān)

3谭梗、定期導(dǎo)出所有key跟管理平臺所維護的 key進(jìn)行對比忘晤,看是否有異常key使用情況

4、記錄不在管理平臺中的key使用相關(guān)信息

5激捏、做好定期檢查工作设塔,對不正常的key,進(jìn)行分析

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末远舅,一起剝皮案震驚了整個濱河市闰蛔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌图柏,老刑警劉巖钞护,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異爆办,居然都是意外死亡,警方通過查閱死者的電腦和手機课梳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進(jìn)店門距辆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人暮刃,你說我怎么就攤上這事跨算。” “怎么了椭懊?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵诸蚕,是天一觀的道長。 經(jīng)常有香客問我,道長背犯,這世上最難降的妖魔是什么坏瘩? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮漠魏,結(jié)果婚禮上倔矾,老公的妹妹穿的比我還像新娘。我一直安慰自己柱锹,他們只是感情好哪自,可當(dāng)我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著禁熏,像睡著了一般壤巷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瞧毙,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天胧华,我揣著相機與錄音,去河邊找鬼升筏。 笑死撑柔,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的您访。 我是一名探鬼主播铅忿,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼灵汪!你這毒婦竟也來了檀训?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤享言,失蹤者是張志新(化名)和其女友劉穎峻凫,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體览露,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡荧琼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了差牛。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片命锄。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖偏化,靈堂內(nèi)的尸體忽然破棺而出脐恩,到底是詐尸還是另有隱情,我是刑警寧澤侦讨,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布驶冒,位于F島的核電站苟翻,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏骗污。R本人自食惡果不足惜崇猫,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望身堡。 院中可真熱鬧邓尤,春花似錦、人聲如沸贴谎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽擅这。三九已至澈魄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間仲翎,已是汗流浹背痹扇。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留溯香,地道東北人鲫构。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像玫坛,于是被迫代替她去往敵國和親结笨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,691評論 2 361