久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Redis中如何使用info命令

155次閱讀
沒有評論

共計 3736 個字符,預計需要花費 10 分鐘才能閱讀完成。

這篇文章主要介紹 Redis 中如何使用 info 命令,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

Redis 是一個使用 ANSI C 編寫的開源、基于內存、可選持久性的鍵值對存儲數據庫,被廣泛應用于大型電商網站、視頻網站和游戲應用等場景,能夠有效減少數據庫磁盤 IO,提高數據查詢效率,減輕管理維護工作量,降低數據庫存儲成本。對傳統磁盤數據庫是一個重要的補充,成為了互聯網應用,尤其是支持高并發訪問的互聯網應用必不可少的基礎服務之一。它的主要優勢有以下幾方面:

● 首先性能極高,正因為是內存型數據庫,讀寫操作全在內存進行,因此 Redis 讀寫的速度能到 10 萬 ops。

● Redis 相對于其它內存數據庫,還提供豐富的數據接口:如字符串 (strings),散列(hashes),列表(lists),集合(sets),有序集合(sorted sets) 等,設置包括 bitmaps,hyperloglogs 和 地理空間(geo) 操作查詢。這也許是大多數開發者相對于其它內存數據庫選擇 Redis 一個重要原因。

● 雖然是內存型數據庫,但它也提供持久化功能。Redis 目前在 DB-Engines Ranking(https://db-engines.com/en/ranking)排名第 7,幾乎所有的公有云平臺都提供了 Redis 服務。雖然 Redis 性能高,但我們平時在使用 Redis 的過程中,也應該關注其運行時的狀態,根據這些信息,我們一方面可以優化使用 Redis 的方法,另一方面當應用程序出現超時、響應極慢的情況時,可以進行分析。

到這里,就必須要說到 Redis 提供的一個非常有用的查看狀態信息的命令:info,使用 redis-cli 連上 redis,輸入 info all 命令,redis-server 就會返回 Redis 的狀態信息,詳細內容如下:

其中 memory,stats,clients,keyspace 是 Redis 運行時經常要關注的信息,能夠有效幫我們本文重點對這四欄中我們需要詳細了解的信息。

一、深度剖析 Redis 最重要的 memory

對于 Redis 來說,內存是最重要的資源,所以本文首先介紹 Redis 內存狀態信息怎么查看,也就是 memory 這一欄:

● used_memory:Redis 分配器分配的內存量,也就是實際存儲數據的內存總量。

● used_memory_human:以可讀格式顯示 used_memory。

● used_memory_rss:以操作系統的角度,顯示 Redis 進程占用的總物理內存。

● used_memory_rss_human:以可讀格式顯示 used_memory_rss

● mem_fragmentation_ratio:used_memory_rss /used_memory 比值,表示內存碎片率。

其中 used_memory 反映了當前 Redis 存儲數據的內存使用情況,當內存使用率達到 Redis 設置的 maxmemory 時,Redis 就會根據設置內存數據逐出策略,以不同的方式移除存儲在內存中的數據。比如,如果設置的策略為 noeviction,那么 Redis 會直接返回錯誤提示。

mem_fragmentation_ratio 表示的內存碎片率,理解這一指標,對優化 Redis 實例的資源性能是非常重要的。內存碎片率稍大于 1 是比較合理的范圍,此時內存碎片率還比較低,同時也說明 Redis 沒有發生 swap。但如果內存碎片率的值超過了 1.5,那就說明 Redis 消耗了實際需要物理內存的 150%,其中有 50% 是內存碎片率,可以直接判定為 Redis 內存碎片過大。

內存碎片率是不是越低就越好呢? 答案是否定的。當內存碎片率低于 1 時,說明 Redis 內存分配超出了物理內存,操作系統正在進行 swap,Redis 可能會把部分數據交換到硬盤上。swap 會嚴重影響 Redis 的性能,造成極大的延遲。

二、stats 幫你全面理解 Redis 狀態

stats 可以統計 Redis 的基礎信息,比如 Redis 的連接數、命令、網絡、同步狀態等非常重要的信息。下面介紹以下幾個比較重要的信息:

● total_connections_received:連接過的客戶端總數。

● total_commands_processed:處理過的命令總數。

● instantaneous_ops_per_sec:每秒處理的命令數。

● keyspace_hits:keyspace 命中次數。

● keyspace_misses:keyspace 未命中次數。

● rejected_connections:由于 maxclients 限制而拒絕的連接數量。

● expired_keys:key 過期事件的總數。

● evicted_keys:由于 maxmemory 限制,而被回收內存的 key 的總數。

total_connections_received

以及 total_commands_processed 反映了 Redis 服務器自從啟動以來,所有處理過的連接數和命令數。instantaneous_ops_per_sec 反應了 Redis 服務器的忙碌狀態。當 rejected_connections 的值不為 0 時,說明應用的連接數過多,或者 maxclients 配置的太小。

對于應用來說,keyspace_hits 和 keyspace_misses 這兩項指標是非常關鍵的。Redis 對其所有的命令都設置了專門的標識屬性,如“只讀”,“寫”或者“管理命令”之類,在 Redis 源碼中,查看一下 redisCommand 結構體中 sflags 成員屬性字段,就可以知道這個命令是具有哪些屬性。

舉例:

比如,w 表示一個寫命令(如 set,del 命令),r 表示是一個只讀命令(get,hmget 命令),a 則表示一個管理命令(config,shutdown)。其中 keyspace_hits 和 keyspace_misses 都是針對具備只讀屬性的 Redis 操作命令做統計,如果 info 統計出來的 keyspace_misses 值過高,或者在過去一段時間內增長很快,那么就說明這一段時間從 Redis 中獲取數據都沒有拿到,這時也許就需要檢查一下應用數據在 Redis 中的存放和訪問情況了。

如果 key 在明確的時間周期內被使用,或者舊的 key 將來可能不會被使用,就可以用 Redis 過期時間命令 (expire,expireat, pexpire, pexpireat 等) 去設置過期時間,這樣 Redis 就會在 key 過期時自動刪除 key,這個信息可以通過 expired_keys 去查看。

當內存使用達到設置的最大閥值 maxmemory 時,Redis 則會根據設置的 key 逐出策略,淘汰 Redis 中存儲的數據,這個信息可以根據 evicted_keys 查看。

三、解讀 Redis 連接數的意義

clients 包含了連接數,輸入輸出緩沖和阻塞命令連接數等情況。

● connected_clients:客戶端連接的數量。

● client_longest_output_list:當前的客戶端連接之中最長的輸出列表。

● client_biggest_input_buf:當前的客戶端連接之中最大的輸入緩沖區。

● blocked_clients:由于阻塞調用 (BLPOP、BRPOP、BRPOPLPUSH) 而等待的客戶端的數量。

連接數其實對于 Redis 來說可以看做是一種有限資源,一般 Redis 都配置有最大連接數限制,因此了解這個對于確保應用正常連接也是相當重要的。client_longest_output_list 過高則很可能說明現在 Redis 出現了異常,可能要結合 clients list 來排查客戶端連接情況。使用了阻塞命令時,blocked_clients 也需要重點關注。

四、Keyspace 幫你了解數據狀態

Keyspace 主要提供關于每個 Redis 數據庫的主字典的統計數據。這些統計數據包括鍵的數量、具有過期時間的 key 的數量和平均生存時間。對于每個數據庫來說,keyspace 欄顯示的每行信息格式如下所示:

dbX: keys=X,expires=X,avg_ttl=X

其中,第一個 X 表示數據庫的編號,第二個 X 表示鍵的數量,第三個 X 表示具有過期時間的鍵的數量,第四個 X 表示鍵的平均生存時間。舉個例子:

db0:keys=6,expires=0,avg_ttl=0:這就表示當前數據庫 0 的 key 總數有 6 個,帶有過期時間的 key 總數 0 個,平均存活時間為 0。

Redis Info 命令的其它信息,在這里也簡要介紹一下:如 server 欄,是會顯示關于 Redis 服務器自身的一些信息,如版本號,操作系統,端口等。Persistence 和 replication 則與數據庫持久化和主備復制有關,cpu 反映了 Redis 服務器 CPU 使用信息,commandstas 是顯示 Redis 所有命令執行的詳細信息,包括命令調用次數、命令消耗的 CPU 時間總量、每次執行命令消耗 CPU 時間的平均值。Cluster 主要用來反應集群特性。

以上是“Redis 中如何使用 info 命令”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注丸趣 TV 行業資訊頻道!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-20發表,共計3736字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 腾冲县| 慈溪市| 华容县| 永安市| 汤原县| 健康| 文成县| 堆龙德庆县| 盱眙县| 五常市| 寻乌县| 烟台市| 安吉县| 鄂托克旗| 兴化市| 延长县| 揭西县| 鄂尔多斯市| 惠州市| 白城市| 息烽县| 凤阳县| 红桥区| 蓬安县| 安福县| 邵东县| 石嘴山市| 潼关县| 左云县| 临海市| 惠州市| 新兴县| 蓬莱市| 兰西县| 老河口市| 株洲市| 客服| 文化| 桑植县| 滨海县| 治多县|