Redis底層函式詳解
-
serverCron 函式
它負責管理服務器的資源,并維持服務器的正常運行,在執行 serverCron 函式的程序中會呼叫相關的子函式,如 trackOperationsPerSecond、SigtermHandler、clientsCron、databasesCron 等函式,默認情況下,每隔 100 毫秒執行一次 serverCron 函式
-
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 -
sigtermHandler 函式
sigtermHandler 函式是一個 Redis 服務器行程的 SIGTERM 信號關聯處理器,在 Redis 服務器啟動的時候會呼叫執行 sigtermHandler 函式,它負責在服務器接收到 SIGTERM 信號時,打開服務器狀態的 shutdown_asap 標識,
在每次執行服務器資源管理函式 serverCron 的時候,都會先對服務器狀態的 shutdown_asap 屬性的值進行判斷,再決定是否關閉服務器,當 shutdown_asap 屬性的值為 1 時,關閉服務器;當 shutdown_asap 屬性的值為 0 時,什么也不做,
-
clientsCron 函式
它會對一定數量的客戶端進行如下檢查,
● 檢查這個客戶端與服務器的連接是否已經超時,如果連接已經超時(在很長一段時間內,客戶端與服務器之間沒有進行互動),則釋放這個客戶端的連接,
● 檢查這個客戶端的輸入快取區的大小,以便對服務器的記憶體進行管理,如果客戶端在上一次執行命令請求后,輸入緩沖區的大小超過了一定的限制,那么程式會釋放這個客戶端的輸入快取區,然后重新為這個客戶端創建一個默認大小的輸入緩沖區,以此來防止客戶端的輸入緩沖區消耗更多記憶體,
-
databasesCron 函式
它的作用是對服務器中的部分資料庫進行檢查,查找出過期的鍵,然后洗掉它們,并對 Redis 資料字典進行相關的收縮操作等,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/12715.html
標籤:NoSQL
上一篇:Redis 持久化
