如何做到阿里雲 Redis 開發規範中的拒絕 bigkey
點選上方“業餘草”,選擇“置頂公眾號”
第一時間獲取技術乾貨和業界資訊!
程式碼中的問題,光靠 Code Review 是不夠的。Code Review 主要是解決規範問題,當然也能排查出一些 bug。
Code Review 適合技術驅動型團隊、公共服務型團隊、測試缺失型團隊、新人密集型團隊、任何有主觀意願的團隊。Code Review 活動主要圍繞下面 4 項工作開展。
說到程式碼規範,我們就不得不提阿里雲的 Redis 開發規範。這個規範寫的很好,想把我說的都總結了。需要這套規範的可以私信我,我發給你們。
其中有一條寫到:
意思我們都懂,關鍵是這個 bigkey 不好掌握,使用著使用著 key 可能就變大了,不規範了。
那麼有沒有大 Key 檢測機制呢?答案當然有。阿里雲提供了一個大 Key 搜尋工具:https://yq.aliyun.com/articles/117042。原理其實就是和我們下面要將的內容類似。
因為有時候,我們的 BUG 就是無意直接產生的,bigkey 也有可能是你知識欠缺,缺乏考慮等原因造成的。因此,對於生產中的一些問題,我們還需要做到主動出擊,主動去觀察每個服務的健康狀況。下面我們就一起來看看如果提前發現 Redis 中使用不合理的大 Key。
redis-cli -h{ip} -p{port} bigkeys 命令就是幹這個事情的。該命令會對 redis 中的 key 進行取樣,尋找較大的 keys。是用的是 scan 方式,不用擔心會阻塞 redis 很長時間不能處理其他的請求。執行的結果可以用於分析 redis 的記憶體的只用狀態,每種型別 key 的平均大小。
例如當我執行:redis-cli -h 127.0.0.1 -p 7001 –bigkeys 後,會出現如下內容:
String 就是字串、Hash 就是雜湊、List 就是列表、Set 就是集合、zset(sorted set:有序集合)。
字串型別:一般認為超過 10k 的就是 bigkey,但是這個值和具體的 OPS 相關。
非字串型別:體現在雜湊,列表,集合型別元素過多。
bigkey 通常會導致記憶體空間不平衡,超時阻塞,如果 key 較大,redis 又是單執行緒,操作 bigkey 比較耗時,那麼阻塞 redis 的可能性增大。每次獲取 bigKey 的網路流量較大,假設一個 bigkey 為 1MB,每秒訪問量為 1000,那麼每秒產生 1000MB 的流量,對於普通千兆網路卡,按照位元組算 128M/S 的伺服器來說可能扛不住。而且一般伺服器採用單機多例項方式來部署,所以還可能對其他例項造成影響。
當你以為你會用 Redis 了,就可以找高薪工作了,但實際上會優化才重要!
原文連結:Redis 的大 Key 掃描 redis-cli -h{ip} -p{port} bigkeys 用法詳解
10T技術資源大放送!包括但不限於:C/C++,Linux,Python,Java,PHP,人工智慧,GO等等。在公眾號內回覆對應關鍵字或框架名字,即可免費獲取!!
你再主動一點點 我們就有故事了
相關文章
- 阿里雲Redis開發規範阿里Redis
- redis開發規範Redis
- Redis 開發規範Redis
- 一份完整的阿里雲 Redis 開發規範,值得收藏!阿里Redis
- 如何做到API文件規範化API
- 拒絕“散漫”與低效 遊戲研發也需要一套設計規範遊戲
- 前端開發規範:命名規範、html規範、css規範、js規範前端HTMLCSSJS
- 【J2EE】--讓你不能拒絕的J2EE13核心規範
- 開發規範
- 開發中的你的Git提交規範嗎?Git
- Java開發規範(效能提升)更新中Java
- Redis有哪些開發設計規範值得我們注意的!Redis
- MySQL資料庫規範 (設計規範+開發規範+操作規範)MySql資料庫
- 專案開發過程中的管理規範
- 開發中的程式碼規範實踐 PHPPHP
- 前端開發規範前端
- MySQL 開發規範MySql
- 規範開發工具
- INFORMATICA 開發規範ORM
- MySQL開發規範MySql
- react 開發規範React
- oracle開發規範Oracle
- lisp 開發規範。Lisp
- php 開發規範PHP
- Git 開發規範Git
- 拒絕測試驅動開發(TDD)的10個理由
- Java開發中RestFul服務介面規範JavaREST
- 關於SQL開發規範中的那些誤區!SQL
- PR如何在專案管理中學會拒絕?(轉)專案管理
- Redis系列24:Redis使用規範Redis
- Redis bigkey解決方案Redis
- redis的bigkey掃描指令碼Redis指令碼
- web前端開發規範Web前端
- 規範:開發環境部署開發環境
- app開發流程規範APP
- 移動開發規範移動開發
- Vue前端開發規範Vue前端
- Android開發規範Android