Redis底層函數詳解

Redis底層函數詳解

  1. serverCron 函數 它負責管理服務器的資源,並維持服務器的正常運行。在執行 serverCron 函數的過程中會調用相關的子函數,如 trackOperationsPerSecond、SigtermHandler、clientsCron、databasesCron 等函數。默認情況下,每隔 100 毫秒執行一次 serverCron 函數
  2. trackOperationsPerSecond 函數 是 serverCron 函數的一個子函數。採用抽樣計算的方式,計算並記錄服務器在最近 1 秒內處理的命令請求數量。可以通過 INFO stats 命令來查看(instantaneous_ops_per_sec 屬性) 127.0.0.1:6379> info stats # Stats total_connections_received:1 total_commands_processed:4 instantaneous_ops_per_sec:0 total_net_input_bytes:133 total_net_output_bytes:5948156 instantaneous_input_kbps:0.00 instantaneous_output_kbps:0.00 rejected_connections:0 sync_full:0 sync_partial_ok:0 sync_partial_err:0 expired_keys:0 evicted_keys:0 keyspace_hits:0 keyspace_misses:0 pubsub_channels:0 pubsub_patterns:0 latest_fork_usec:0 migrate_cached_sockets:0
  3. sigtermHandler 函數 sigtermHandler 函數是一個 Redis 服務器進程的 SIGTERM 信號關聯處理器。在 Redis 服務器啟動的時候會調用執行 sigtermHandler 函數,它負責在服務器接收到 SIGTERM 信號時,打開服務器狀態的 shutdown_asap 標識。 在每次執行服務器資源管理函數 serverCron 的時候,都會先對服務器狀態的 shutdown_asap 屬性的值進行判斷,再決定是否關閉服務器。當 shutdown_asap 屬性的值為 1 時,關閉服務器;當 shutdown_asap 屬性的值為 0 時,什麼也不做。
  4. clientsCron 函數 它會對一定數量的客戶端進行如下檢查。 ● 檢查這個客戶端與服務器的連接是否已經超時。如果連接已經超時(在很長一段時間內,客戶端與服務器之間沒有進行交互),則釋放這個客戶端的連接。 ● 檢查這個客戶端的輸入緩存區的大小,以便對服務器的內存進行管理。如果客戶端在上一次執行命令請求後,輸入緩衝區的大小超過了一定的限制,那麼程序會釋放這個客戶端的輸入緩存區,然後重新為這個客戶端創建一個默認大小的輸入緩衝區,以此來防止客戶端的輸入緩衝區消耗更多內存。
  5. databasesCron 函數 它的作用是對服務器中的部分數據庫進行檢查,查找出過期的鍵,然後刪除它們,並對 Redis 數據字典進行相關的收縮操作等。


分享到:


相關文章: