這篇文章主要介紹Redis中如何使用info命令,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),黃岡企業(yè)網(wǎng)站建設(shè),黃岡品牌網(wǎng)站建設(shè),網(wǎng)站定制,黃岡網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,黃岡網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。Redis是一個使用ANSI C編寫的開源、基于內(nèi)存、可選持久性的鍵值對存儲數(shù)據(jù)庫,被廣泛應(yīng)用于大型電商網(wǎng)站、視頻網(wǎng)站和游戲應(yīng)用等場景,能夠有效減少數(shù)據(jù)庫磁盤IO,提高數(shù)據(jù)查詢效率,減輕管理維護工作量,降低數(shù)據(jù)庫存儲成本。對傳統(tǒng)磁盤數(shù)據(jù)庫是一個重要的補充,成為了互聯(lián)網(wǎng)應(yīng)用,尤其是支持高并發(fā)訪問的互聯(lián)網(wǎng)應(yīng)用必不可少的基礎(chǔ)服務(wù)之一。它的主要優(yōu)勢有以下幾方面:
● 首先性能極高,正因為是內(nèi)存型數(shù)據(jù)庫,讀寫操作全在內(nèi)存進行,因此Redis讀寫的速度能到10萬ops。
● Redis相對于其它內(nèi)存數(shù)據(jù)庫,還提供豐富的數(shù)據(jù)接口:如字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 等,設(shè)置包括bitmaps,hyperloglogs 和 地理空間(geo)操作查詢。這也許是大多數(shù)開發(fā)者相對于其它內(nèi)存數(shù)據(jù)庫選擇Redis一個重要原因。
● 雖然是內(nèi)存型數(shù)據(jù)庫,但它也提供持久化功能。Redis目前在DB-Engines Ranking(https://db-engines.com/en/ranking)排名第7,幾乎所有的公有云平臺都提供了Redis服務(wù)。雖然Redis性能高,但我們平時在使用Redis的過程中,也應(yīng)該關(guān)注其運行時的狀態(tài),根據(jù)這些信息,我們一方面可以優(yōu)化使用Redis的方法,另一方面當應(yīng)用程序出現(xiàn)超時、響應(yīng)極慢的情況時,可以進行分析。
到這里,就必須要說到Redis提供的一個非常有用的查看狀態(tài)信息的命令:info,使用redis-cli連上redis,輸入info all命令,redis-server就會返回Redis的狀態(tài)信息,詳細內(nèi)容如下:
其中memory,stats,clients,keyspace是Redis運行時經(jīng)常要關(guān)注的信息,能夠有效幫我們本文重點對這四欄中我們需要詳細了解的信息。
一、深度剖析Redis最重要的memory
對于Redis來說,內(nèi)存是最重要的資源,所以本文首先介紹Redis內(nèi)存狀態(tài)信息怎么查看,也就是memory這一欄:
● used_memory:Redis分配器分配的內(nèi)存量,也就是實際存儲數(shù)據(jù)的內(nèi)存總量。
● used_memory_human:以可讀格式顯示used_memory。
● used_memory_rss:以操作系統(tǒng)的角度,顯示Redis進程占用的總物理內(nèi)存。
● used_memory_rss_human:以可讀格式顯示used_memory_rss
● mem_fragmentation_ratio:used_memory_rss /used_memory比值,表示內(nèi)存碎片率。
其中used_memory反映了當前Redis存儲數(shù)據(jù)的內(nèi)存使用情況,當內(nèi)存使用率達到Redis設(shè)置的maxmemory時,Redis就會根據(jù)設(shè)置內(nèi)存數(shù)據(jù)逐出策略,以不同的方式移除存儲在內(nèi)存中的數(shù)據(jù)。比如,如果設(shè)置的策略為noeviction,那么Redis會直接返回錯誤提示。
mem_fragmentation_ratio表示的內(nèi)存碎片率,理解這一指標,對優(yōu)化Redis實例的資源性能是非常重要的。內(nèi)存碎片率稍大于1是比較合理的范圍,此時內(nèi)存碎片率還比較低,同時也說明Redis沒有發(fā)生swap。但如果內(nèi)存碎片率的值超過了1.5,那就說明Redis消耗了實際需要物理內(nèi)存的150%,其中有50%是內(nèi)存碎片率,可以直接判定為Redis內(nèi)存碎片過大。
內(nèi)存碎片率是不是越低就越好呢?答案是否定的。當內(nèi)存碎片率低于1時,說明Redis內(nèi)存分配超出了物理內(nèi)存,操作系統(tǒng)正在進行swap,Redis可能會把部分數(shù)據(jù)交換到硬盤上。swap會嚴重影響Redis的性能,造成極大的延遲。
二、stats幫你全面理解Redis狀態(tài)
stats可以統(tǒng)計Redis的基礎(chǔ)信息,比如Redis的連接數(shù)、命令、網(wǎng)絡(luò)、同步狀態(tài)等非常重要的信息。下面介紹以下幾個比較重要的信息:
● total_connections_received:連接過的客戶端總數(shù)。
● total_commands_processed:處理過的命令總數(shù)。
● instantaneous_ops_per_sec:每秒處理的命令數(shù)。
● keyspace_hits:keyspace命中次數(shù)。
● keyspace_misses:keyspace未命中次數(shù)。
● rejected_connections:由于maxclients限制而拒絕的連接數(shù)量。
● expired_keys:key過期事件的總數(shù)。
● evicted_keys:由于maxmemory限制,而被回收內(nèi)存的key的總數(shù)。
total_connections_received
以及total_commands_processed反映了Redis服務(wù)器自從啟動以來,所有處理過的連接數(shù)和命令數(shù)。instantaneous_ops_per_sec反應(yīng)了Redis服務(wù)器的忙碌狀態(tài)。當rejected_connections的值不為0時,說明應(yīng)用的連接數(shù)過多,或者maxclients配置的太小。
對于應(yīng)用來說, keyspace_hits和keyspace_misses這兩項指標是非常關(guān)鍵的。Redis對其所有的命令都設(shè)置了專門的標識屬性,如“只讀”,“寫”或者“管理命令”之類,在 Redis源碼中,查看一下redisCommand結(jié)構(gòu)體中sflags成員屬性字段,就可以知道這個命令是具有哪些屬性。
舉例:
比如,w表示一個寫命令(如set,del命令),r表示是一個只讀命令(get,hmget命令),a則表示一個管理命令(config,shutdown)。其中 keyspace_hits和keyspace_misses 都是針對具備只讀屬性的Redis操作命令做統(tǒng)計,如果info統(tǒng)計出來的keyspace_misses值過高,或者在過去一段時間內(nèi)增長很快,那么就說明這一段時間從Redis中獲取數(shù)據(jù)都沒有拿到,這時也許就需要檢查一下應(yīng)用數(shù)據(jù)在Redis中的存放和訪問情況了。
如果key在明確的時間周期內(nèi)被使用,或者舊的key將來可能不會被使用,就可以用Redis過期時間命令(expire,expireat, pexpire, pexpireat等)去設(shè)置過期時間,這樣Redis就會在key過期時自動刪除key,這個信息可以通過expired_keys去查看。
當內(nèi)存使用達到設(shè)置的大閥值maxmemory時,Redis則會根據(jù)設(shè)置的key逐出策略,淘汰Redis中存儲的數(shù)據(jù),這個信息可以根據(jù) evicted_keys查看。
三、解讀Redis連接數(shù)的意義
clients包含了連接數(shù),輸入輸出緩沖和阻塞命令連接數(shù)等情況。
● connected_clients:客戶端連接的數(shù)量。
● client_longest_output_list:當前的客戶端連接之中最長的輸出列表。
● client_biggest_input_buf:當前的客戶端連接之中大的輸入緩沖區(qū)。
● blocked_clients:由于阻塞調(diào)用(BLPOP、BRPOP、BRPOPLPUSH)而等待的客戶端的數(shù)量。
連接數(shù)其實對于Redis來說可以看做是一種有限資源,一般Redis都配置有大連接數(shù)限制,因此了解這個對于確保應(yīng)用正常連接也是相當重要的。client_longest_output_list過高則很可能說明現(xiàn)在Redis出現(xiàn)了異常,可能要結(jié)合clients list來排查客戶端連接情況。使用了阻塞命令時,blocked_clients也需要重點關(guān)注。
四、Keyspace幫你了解數(shù)據(jù)狀態(tài)
Keyspace主要提供關(guān)于每個Redis數(shù)據(jù)庫的主字典的統(tǒng)計數(shù)據(jù)。這些統(tǒng)計數(shù)據(jù)包括鍵的數(shù)量、具有過期時間的key的數(shù)量和平均生存時間。對于每個數(shù)據(jù)庫來說,keyspace欄顯示的每行信息格式如下所示:
dbX: keys=X,expires=X,avg_ttl=X
其中,第一個X表示數(shù)據(jù)庫的編號,第二個X表示鍵的數(shù)量,第三個X表示具有過期時間的鍵的數(shù)量,第四個X表示鍵的平均生存時間。舉個例子:
db0:keys=6,expires=0,avg_ttl=0:這就表示當前數(shù)據(jù)庫0的key總數(shù)有6個,帶有過期時間的key總數(shù)0個,平均存活時間為0。
Redis Info命令的其它信息,在這里也簡要介紹一下:如server欄,是會顯示關(guān)于Redis服務(wù)器自身的一些信息,如版本號,操作系統(tǒng),端口等。Persistence和replication則與數(shù)據(jù)庫持久化和主備復(fù)制有關(guān),cpu反映了Redis服務(wù)器CPU使用信息,commandstas是顯示Redis所有命令執(zhí)行的詳細信息,包括命令調(diào)用次數(shù)、命令消耗的CPU時間總量、每次執(zhí)行命令消耗CPU時間的平均值。Cluster主要用來反應(yīng)集群特性。
以上是“Redis中如何使用info命令”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道!