redis-cli info命令中各數值含義
# Server
redis_version:3.2.0 #redis 版本
redis_git_sha1:00000000 #sha1 一種加密算法
redis_git_dirty:0 #dirty被污染的,臟數據
redis_build_id:85def9ed04ebeee4
redis_mode:cluster #運行模式(standalone,cluster)
os:Linux 3.0.13-0.27-default x86_64 #運行系統內核版本
arch_bits:64 #字長
multiplexing_api:epoll #Redis使用的事件處理機制
gcc_version:4.3.4 #編譯Redis時所使用的GCC版本
process_id:26327 #Redis進程PID
run_id:e833bf79e98daa5b5917c510b4d9f056cfc5059c #Redis服務器的編號(用於集群)
tcp_port:7001 #監聽的端口
uptime_in_seconds:587882 #已運行秒數
uptime_in_days:6 #已運行天數
hz:10 #用於執行后台任務的函數被調用的頻率
lru_clock:10570417 #用於LRU管理的計時器,單位為分鍾
executable:/home/rediscluster/7001/redis/./bin/redis-server #bin文件位置
config_file:/home/rediscluster/7001/redis/./config/redis.conf #配置文件位置
# Clients
connected_clients:1 #連接的客戶端數
client_longest_output_list:0 #當前客戶端連接中最長的輸出列表
client_biggest_input_buf:0 #當前客戶端連接中最大的輸入緩存
blocked_clients:0 #阻塞的客戶端數
# Memory
used_memory:2421816 #消耗的內存
used_memory_human:2.31M
used_memory_rss:3973120 #操作系統分配給Redis的內存
used_memory_rss_human:3.79M
used_memory_peak:2421816 #內存消耗的峰值
used_memory_peak_human:2.31M
total_system_memory:8250241024 #系統總內存
total_system_memory_human:7.68G
used_memory_lua:37888 #Lua腳本消耗的內存
used_memory_lua_human:37.00K
maxmemory:0 #內存使用限制
maxmemory_human:0B
maxmemory_policy:noeviction #超出內存限制時的行為(不淘汰)
mem_fragmentation_ratio:1.64 #內存碎片率(=used_memory_rss/used_memory)
mem_allocator:jemalloc-4.0.3 #內存分配器
# Persistence 持久化
loading:0 #是否正在載入持久化文件
rdb_changes_since_last_save:0 #上次持久化以來修改的鍵值數
rdb_bgsave_in_progress:0 #是否正在后台保存RDB文件
rdb_last_save_time:1469670746 #上次RDB持久化的時間戳
rdb_last_bgsave_status:ok #上次RDB持久化的結果
rdb_last_bgsave_time_sec:0 #上次創建RDB文件消耗的秒數
rdb_current_bgsave_time_sec:-1 #如果正在創建RDB文件,記錄已經消耗了多少時間
aof_enabled:1 #是否啟用AOF持久化
aof_rewrite_in_progress:0 #是否正在重寫AOF文件
aof_rewrite_scheduled:0 #是否將要重寫AOF文件
aof_last_rewrite_time_sec:-1 #上次AOF重寫消耗的時間
aof_current_rewrite_time_sec:-1 #當前AOF重寫已消耗的時間
aof_last_bgrewrite_status:ok #上次重寫AOF文件的結果
aof_last_write_status:ok #上次寫入AOF文件的結果
aof_current_size:54 #當前AOF文件的大小
aof_base_size:0 #上一個AOF文件的大小
aof_pending_rewrite:0 #是否有AOF重寫操作在等待RDB文件的創建
aof_buffer_length:0 #AOF寫入緩沖區大小
aof_rewrite_buffer_length:0 #AOF重寫緩沖區大小
aof_pending_bio_fsync:0 #正在I/O隊列中等待的fsync()的數量
aof_delayed_fsync:0 #被延遲執行的fsync()的數量
# Stats
total_connections_received:9 #服務器已接受的連接請求數
total_commands_processed:586729 #服務器已經執行的命令數量
instantaneous_ops_per_sec:1 #當前每秒執行的命令數量
total_net_input_bytes:22855989 #接受的數據包總大小
total_net_output_bytes:849760 #發送的數據包總大小
instantaneous_input_kbps:0.05 #當前下行速率
instantaneous_output_kbps:0.01 #當前上行速率
rejected_connections:0 #被拒絕的連接請求數
sync_full:1 #主從同步狀態
sync_partial_ok:0 #[ˈpɑːrʃl 不完全的
sync_partial_err:0
expired_keys:0 #過期的鍵數
evicted_keys:0 #因內存達到上限被剔除的鍵數 [ɪˈvɪktɪd]
keyspace_hits:0 #命中key的次數
keyspace_misses:0 #未命中的次數
pubsub_channels:0 #當前被訂閱的頻道 [ˈtʃænlz]
pubsub_patterns:0 #[ˈpætərnz]當前被訂閱的模式,或表達式
latest_fork_usec:640 #最后一次fork()消耗的毫秒數
migrate_cached_sockets:0 #為節點遷移緩存的TCP連接數
# Replication 復制
role:master #主節點還是從節點
connected_slaves:1 #已連接的從節點數
slave0:ip=127.0.0.1,port=7004,state=online,offset=821435,lag=1 #從節點信息 ip 端口 數據新度等
master_repl_offset:821435 #主節點數據偏移量
repl_backlog_active:1 #是否為主從同步啟用積壓空間
repl_backlog_size:1048576 #積壓空間大小
repl_backlog_first_byte_offset:2 #積壓空間開頭的數據新度
repl_backlog_histlen:821434 #積壓空間當前數據量
# CPU
used_cpu_sys:255.39 #核心態CPU時間
used_cpu_user:257.42 #用戶態CPU時間
used_cpu_sys_children:0.00 #子進程核心態CPU時間
used_cpu_user_children:0.00 #子進程用戶態CPU時間
# Cluster
cluster_enabled:1 #是否啟用集群
# Keyspace
db0:keys=1,expires=0,avg_ttl=0 #各數據庫的鍵數、過期鍵數、數據庫中鍵的平均過期時間戳估測值
###################################################################################
- LRU過期淘汰策略
這種策略是適用於當Redis存儲內存值接近或者超過maxmemory參數(maxmemory_policy)設置時就會觸發LRU策略。當Redis發生這種情況的時候系統提供了幾種策略:
1. noeviction:拒絕寫請求,正常提供讀請求,這樣可以保證已有數據不會丟失(默認策略);
2. volatile-lru:嘗試淘汰設置了過期時間的key,雖少使用的key被淘汰,沒有設置過期時間的key不會淘汰;
3. volatile-ttl:跟volatile-lru幾乎一樣,但是他是使用的key的ttl值進行比較,最先淘汰ttl最小的key;
4. volatile-random:其他同上,唯一就是他通過很隨意的方式隨機選擇淘汰key集合中的key;
5. allkeys-lru:區別於volatile-lru的地方就是淘汰目標是全部key,沒設置過期時間的key也不能幸免;
6. allkeys-random:這種方式同上,隨機的淘汰所有的key。
##############################################################################################################
redis 持久化
redis 有兩種持久化方案,RDB (Redis DataBase)和 AOF (Append Only File)
- Redis 默認開啟RDB持久化方式,在指定的時間間隔內,執行指定次數的寫操作,則將內存中的數據寫入到磁盤中。
- RDB 持久化適合大規模的數據恢復但它的數據一致性和完整性較差。
- Redis 需要手動開啟AOF持久化方式,默認是每秒將寫操作日志追加到AOF文件中。
- AOF 的數據完整性比RDB高,但記錄內容多了,會影響數據恢復的效率。
- Redis 針對 AOF文件大的問題,提供重寫的瘦身機制。
- 若只打算用Redis 做緩存,可以關閉持久化。
- 若打算使用Redis 的持久化。建議RDB和AOF都開啟。其實RDB更適合做數據的備份,留一后手。AOF出問題了,還有RDB。