Redis服務(wù)器重要屬性詳解

Redis服務(wù)器重要屬性詳解

  1. cronloops 屬性

    cronloops 屬性是一個(gè)計(jì)數(shù)器,用于記錄服務(wù)器的 serverCron 函數(shù)被執(zhí)行的次數(shù),是一個(gè) int 類型的整數(shù)。

  2. rdb_child_pid 與 aof_child_pid 屬性

    rdb_child_pid 和 aof_child_pid 屬性用于檢查 Redis 服務(wù)器持久化操作的運(yùn)行狀態(tài),它們記錄執(zhí)行 BGSAVE 和 BGREWRITEAOF 命令的子進(jìn)程的 ID。也常常使用這兩個(gè)屬性來(lái)判斷 BGSAVE 和 BGREWRITEAOF 命令是否正在被執(zhí)行。

    當(dāng)執(zhí)行 serverCron 函數(shù)時(shí),會(huì)檢查 rdb_child_pid 和 aof_child_pid 屬性的值,只要其中一個(gè)屬性的值不等于-1,程序就會(huì)調(diào)用一次 wait3 函數(shù)來(lái)判斷子進(jìn)程是否發(fā)送信號(hào)到服務(wù)器中。

    如果沒(méi)有信號(hào)到達(dá),則表示服務(wù)器持久化操作沒(méi)有完成,程序不做任何處理。而如果有信號(hào)到達(dá),那么,針對(duì) BGSAVE 命令,表示新的 RDB 文件已經(jīng)成功生成;針對(duì) BGREWRITEAOF 命令,表示新的 AOF 文件生成完畢,然后服務(wù)器繼續(xù)執(zhí)行相應(yīng)的后續(xù)操作。比如,將舊的 RDB 文件或 AOF 文件替換為新的 RDB 文件或 AOF 文件。

    另外,當(dāng) rdb_child_pid 和 aof_child_pid 屬性的值都為-1 時(shí),表示此時(shí)的服務(wù)器沒(méi)有執(zhí)行持久化操作,這時(shí)程序會(huì)做出如下判斷。

    (1)判斷 BGREWRITEAOF 命令的執(zhí)行是否被延遲了(通過(guò)下文所講aof_rewrite_scheduled 屬性)。如果被延遲了,則重新執(zhí)行一次 BGREWRITEAOF 命令。

    (2)判斷是否滿足服務(wù)器的自動(dòng)保存條件。如果滿足服務(wù)器的自動(dòng)保存條件,并且服務(wù)器沒(méi)有執(zhí)行其他持久化操作,那么服務(wù)器將開(kāi)始執(zhí)行 BGSAVE 命令。

    (3)判斷是否滿足服務(wù)器設(shè)置的 AOF 重寫(xiě)條件。如果條件滿足,同時(shí)服務(wù)器沒(méi)有執(zhí)行其他持久化操作,那么服務(wù)器將重新執(zhí)行 BGREWRITEAOF 命令。

file
  1. stat_peak_memory 屬性

    stat_peak_memory 屬性用于記錄 Redis 服務(wù)器的內(nèi)存峰值大小。在每次執(zhí)行 serverCron 函數(shù)時(shí),程序都會(huì)檢查服務(wù)器當(dāng)前內(nèi)存的使用情況,并與 stat_peak_memory 屬性保存的上一次內(nèi)存峰值大小進(jìn)行比較。如果當(dāng)前的內(nèi)存峰值大小大于 stat_peak_memory 屬性保存的值,就將當(dāng)前最新的內(nèi)存峰值大小賦給 stat_peak_memory 屬性。

    在執(zhí)行 INFO memory 命令后,返回的 used_memory_peak 和 used_memory_peak_human 屬性分別以兩種格式記錄了服務(wù)器的內(nèi)存峰值大小。

    127.0.0.1:6379> info memory
    # Memory
    used_memory:689352
    used_memory_human:673.20K
    used_memory_rss:652424
    used_memory_rss_human:637.13K
    used_memory_peak:689352
    used_memory_peak_human:673.20K
    total_system_memory:0
    total_system_memory_human:0B
    used_memory_lua:37888
    used_memory_lua_human:37.00K
    maxmemory:0
    maxmemory_human:0B
    maxmemory_policy:noeviction
    mem_fragmentation_ratio:0.95
    mem_allocator:jemalloc-3.6.0
    
  2. lruclock 屬性

    lruclock 屬性是一種服務(wù)器時(shí)間緩存,它記錄了服務(wù)器的 LRU 時(shí)鐘。在默認(rèn)情況下,serverCron 函數(shù)會(huì)以每 10 秒一次的頻率更新 lruclock 屬性的值。LRU 時(shí)鐘不是實(shí)時(shí)的,它只是一個(gè)模糊的估計(jì)值。

    Redis 的每個(gè)對(duì)象都有一個(gè) lru 屬性,該屬性記錄了這個(gè)對(duì)象最后一次被命令訪問(wèn)的時(shí)間。使用 lruclock 屬性的值減去 lru 屬性的值,就能計(jì)算出這個(gè)對(duì)象的空轉(zhuǎn)時(shí)間。

    可以使用 INFO server 命令的 lru_clock 屬性來(lái)查看當(dāng)前 LRU 時(shí)鐘的時(shí)間

    127.0.0.1:6379> info server
    # Server
    redis_version:3.2.100
    redis_git_sha1:00000000
    redis_git_dirty:0
    redis_build_id:dd26f1f93c5130ee
    redis_mode:standalone
    os:Windows
    arch_bits:64
    multiplexing_api:WinSock_IOCP
    process_id:15428
    run_id:3bd0b4b68b5d6df82688e2b316a21ef9224da5a1
    tcp_port:6379
    uptime_in_seconds:1299
    uptime_in_days:0
    hz:10
    lru_clock:8416198
    executable:F:\redis\redis-server.exe
    config_file:F:\redis\redis.windows.conf
    
  3. mstime 與 unixtime 屬性

    mstime 和 unixtime 屬性記錄了服務(wù)器當(dāng)前的時(shí)間。在默認(rèn)情況下,serverCron 函數(shù)會(huì)以每 100 毫秒一次的頻率更新 mstime 和 unixtime 屬性,它們記錄的時(shí)間值并不是最準(zhǔn)確的。

  4. aof_rewrite_scheduled 屬性

    aof_rewrite_scheduled 屬性用于記錄服務(wù)器中 BGREWRITEAOF 命令執(zhí)行是否被延遲。當(dāng) aof_rewrite_scheduled 屬性的值為 1 時(shí),表示執(zhí)行 BGREWRITEAOF 命令超時(shí)了。在服務(wù)器執(zhí)行 BGSAVE 命令時(shí),如果客戶端發(fā)送了 BGREWRITEAOF 命令請(qǐng)求,那么服務(wù)器在接收到命令請(qǐng)求之后,會(huì)將 BGREWRITEAOF 命令延遲到 BGSAVE 命令執(zhí)行成功后再執(zhí)行。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、Redis高可用概述 在介紹Redis高可用之前,先說(shuō)明一下在Redis的語(yǔ)境中高可用的含義。 我們知道,在w...
    空語(yǔ)閱讀 1,684評(píng)論 0 2
  • 服務(wù)器 1. 命令請(qǐng)求的執(zhí)行過(guò)程 1.1 發(fā)送命令請(qǐng)求 下圖是客戶端接收并發(fā)送命令請(qǐng)求的過(guò)程。 1.2 讀取命令請(qǐng)...
    xMustang閱讀 577評(píng)論 0 0
  • 企業(yè)級(jí)redis集群架構(gòu)的特點(diǎn) 海量數(shù)據(jù) 高并發(fā) 高可用 要達(dá)到高可用,持久化是不可減少的,持久化主要是做災(zāi)難恢復(fù)...
    lucode閱讀 2,284評(píng)論 0 7
  • Redis服務(wù)器負(fù)責(zé)與多個(gè)客戶端建立連接,處理客戶端請(qǐng)求,保存各個(gè)數(shù)據(jù)庫(kù)狀態(tài)。使用由I/O多路復(fù)用技術(shù)實(shí)現(xiàn)的事件處...
    達(dá)微閱讀 1,104評(píng)論 0 0
  • 什么是持久化 redis所有數(shù)據(jù)保持在內(nèi)存中,對(duì)數(shù)據(jù)的更新將異步地保存在磁盤(pán)上。 持久化方式 快照 1.MySQL...
    香沙小熊閱讀 818評(píng)論 0 13

友情鏈接更多精彩內(nèi)容