Redis服務器重要屬性詳解

Redis服務器重要屬性詳解

  1. cronloops 屬性 cronloops 屬性是一個計數器,用於記錄服務器的 serverCron 函數被執行的次數,是一個 int 類型的整數。
  2. rdb_child_pid 與 aof_child_pid 屬性 rdb_child_pid 和 aof_child_pid 屬性用於檢查 Redis 服務器持久化操作的運行狀態,它們記錄執行 BGSAVE 和 BGREWRITEAOF 命令的子進程的 ID。也常常使用這兩個屬性來判斷 BGSAVE 和 BGREWRITEAOF 命令是否正在被執行。 當執行 serverCron 函數時,會檢查 rdb_child_pid 和 aof_child_pid 屬性的值,只要其中一個屬性的值不等於-1,程序就會調用一次 wait3 函數來判斷子進程是否發送信號到服務器中。 如果沒有信號到達,則表示服務器持久化操作沒有完成,程序不做任何處理。而如果有信號到達,那麼,針對 BGSAVE 命令,表示新的 RDB 文件已經成功生成;針對 BGREWRITEAOF 命令,表示新的 AOF 文件生成完畢,然後服務器繼續執行相應的後續操作。比如,將舊的 RDB 文件或 AOF 文件替換為新的 RDB 文件或 AOF 文件。 另外,當 rdb_child_pid 和 aof_child_pid 屬性的值都為-1 時,表示此時的服務器沒有執行持久化操作,這時程序會做出如下判斷。 (1)判斷 BGREWRITEAOF 命令的執行是否被延遲了(通過下文所講aof_rewrite_scheduled 屬性)。如果被延遲了,則重新執行一次 BGREWRITEAOF 命令。 (2)判斷是否滿足服務器的自動保存條件。如果滿足服務器的自動保存條件,並且服務器沒有執行其他持久化操作,那麼服務器將開始執行 BGSAVE 命令。 (3)判斷是否滿足服務器設置的 AOF 重寫條件。如果條件滿足,同時服務器沒有執行其他持久化操作,那麼服務器將重新執行 BGREWRITEAOF 命令。
Redis服務器重要屬性詳解

3. #### stat_peak_memory 屬性

stat_peak_memory 屬性用於記錄 Redis 服務器的內存峰值大小。在每次執行 serverCron 函數時,程序都會檢查服務器當前內存的使用情況,並與 stat_peak_memory 屬性保存的上一次內存峰值大小進行比較。如果當前的內存峰值大小大於 stat_peak_memory 屬性保存的值,就將當前最新的內存峰值大小賦給 stat_peak_memory 屬性。

在執行 INFO memory 命令後,返回的 used_memory_peak 和 used_memory_peak_human 屬性分別以兩種格式記錄了服務器的內存峰值大小。

<code>   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/<code>
  1. lruclock 屬性 lruclock 屬性是一種服務器時間緩存,它記錄了服務器的 LRU 時鐘。在默認情況下,serverCron 函數會以每 10 秒一次的頻率更新 lruclock 屬性的值。LRU 時鐘不是實時的,它只是一個模糊的估計值。 Redis 的每個對象都有一個 lru 屬性,該屬性記錄了這個對象最後一次被命令訪問的時間。使用 lruclock 屬性的值減去 lru 屬性的值,就能計算出這個對象的空轉時間。 可以使用 INFO server 命令的 lru_clock 屬性來查看當前 LRU 時鐘的時間 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
  2. mstime 與 unixtime 屬性 mstime 和 unixtime 屬性記錄了服務器當前的時間。在默認情況下,serverCron 函數會以每 100 毫秒一次的頻率更新 mstime 和 unixtime 屬性,它們記錄的時間值並不是最準確的。
  3. aof_rewrite_scheduled 屬性 aof_rewrite_scheduled 屬性用於記錄服務器中 BGREWRITEAOF 命令執行是否被延遲。當 aof_rewrite_scheduled 屬性的值為 1 時,表示執行 BGREWRITEAOF 命令超時了。在服務器執行 BGSAVE 命令時,如果客戶端發送了 BGREWRITEAOF 命令請求,那麼服務器在接收到命令請求之後,會將 BGREWRITEAOF 命令延遲到 BGSAVE 命令執行成功後再執行。


分享到:


相關文章: