$ redis-server redis.conf
常見選項:
./redis-server (run the server with default conf)
./redis-server /etc/redis/6379.conf
./redis-server --port 7777
./redis-server --port 7777 --slaveof 127.0.0.1 8888
./redis-server /etc/myredis.conf --loglevel verbose
./redis-server /etc/sentinel.conf –sentinel
./redis-sentinel /etc/sentinel.conf
部署後可以使用sstart對redis 和sentinel進行拉起,使用sctl進行supervisorctl的控制。(兩個alias)
redis-cli shutdown
sentinel方法一樣,隻是需要執行sentinel的連接配接端口
127.0.0.1:6379> ping
傳回PONG說明正常
在cli下執行monitor,生産環境慎用。
在cli下執行info
相關含義:
Mrds:6379> info
# Server
redis_version:2.8.19 ###redis版本号
redis_git_sha1:00000000 ###git SHA1
redis_git_dirty:0 ###git dirty flag
redis_build_id:78796c63e58b72dc
redis_mode:standalone ###redis運作模式
os:Linux 2.6.32-431.el6.x86_64 x86_64 ###os版本号
arch_bits:64 ###64位架構
multiplexing_api:epoll ###調用epoll算法
gcc_version:4.4.7 ###gcc版本号
process_id:25899 ###伺服器程序PID
run_id:eae356ac1098c13b68f2b00fd7e1c9f93b1c6a2c ###Redis的随機辨別符(用于sentinel和叢集)
tcp_port:6379 ###Redis監聽的端口号
uptime_in_seconds:6419 ###Redis運作時長(s為機關)
uptime_in_days:0 ###Redis運作時長(天為機關)
hz:10
lru_clock:10737922 ###以分鐘為機關的自增時鐘,用于LRU管理
config_file:/etc/redis/redis.conf ###redis配置檔案
# Clients
connected_clients:1 ###已連接配接用戶端的數量(不包括通過從屬伺服器連接配接的用戶端)
client_longest_output_list:0 ###目前連接配接的用戶端中最長的輸出清單
client_biggest_input_buf:0 ###目前連接配接的用戶端中最大的輸出緩存
blocked_clients:0 ###正在等待阻塞指令(BLPOP、BRPOP、BRPOPLPUSH)的用戶端的數量 需監控
# Memory
used_memory:2281560 ###由 Redis 配置設定器配置設定的記憶體總量,以位元組(byte)為機關
used_memory_human:2.18M ###以更友好的格式輸出redis占用的記憶體
used_memory_rss:2699264 ###從作業系統的角度,傳回 Redis 已配置設定的記憶體總量(俗稱常駐集大小)。這個值和 top 、 ps 等指令的輸出一緻
used_memory_peak:22141272 ### Redis 的記憶體消耗峰值(以位元組為機關)
used_memory_peak_human:21.12M ###以更友好的格式輸出redis峰值記憶體占用
used_memory_lua:35840 ###LUA引擎所使用的記憶體大小
mem_fragmentation_ratio:1.18 ###used_memory_rss 和 used_memory 之間的比率
mem_allocator:jemalloc-3.6.0
###在理想情況下, used_memory_rss 的值應該隻比 used_memory 稍微高一點兒。當 rss > used ,且兩者的值相差較大時,表示存在(内部或外部的)記憶體碎片。記憶體碎片的比率可以通過 mem_fragmentation_ratio 的值看出。
當 used > rss 時,表示 Redis 的部分記憶體被作業系統換出到交換空間了,在這種情況下,操作可能會産生明顯的延遲。
# Persistence
loading:0 ###記錄伺服器是否正在載入持久化檔案
rdb_changes_since_last_save:0 ###距離最近一次成功建立持久化檔案之後,經過了多少秒
rdb_bgsave_in_progress:0 ###記錄了伺服器是否正在建立 RDB 檔案
rdb_last_save_time:1420023749 ###最近一次成功建立 RDB 檔案的 UNIX 時間戳
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 ###RDB 檔案建立完畢之後,是否需要執行預約的 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_current_size:176265 ###AOF 檔案目前的大小
aof_base_size:176265 ###伺服器啟動時或者 AOF 重寫最近一次執行之後,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:8466 ###伺服器已接受的連接配接請求數量
total_commands_processed:900668 ###伺服器已執行的指令數量
instantaneous_ops_per_sec:1 ###伺服器每秒鐘執行的指令數量
total_net_input_bytes:82724170
total_net_output_bytes:39509080
instantaneous_input_kbps:0.07
instantaneous_output_kbps:0.02
rejected_connections:0 ###因為最大用戶端數量限制而被拒絕的連接配接請求數量
sync_full:2
sync_partial_ok:0
sync_partial_err:0
expired_keys:0 ###因為過期而被自動删除的資料庫鍵數量
evicted_keys:0 ###因為最大記憶體容量限制而被驅逐(evict)的鍵數量。
keyspace_hits:0 ###查找資料庫鍵成功的次數。
keyspace_misses:500000 ###查找資料庫鍵失敗的次數。
pubsub_channels:0 ###目前被訂閱的頻道數量
pubsub_patterns:0 ###目前被訂閱的模式數量
latest_fork_usec:402 ###最近一次 fork() 操作耗費的毫秒數
# Replication
role:master ###如果目前伺服器沒有在複制任何其他伺服器,那麼這個域的值就是 master ;否則的話,這個域的值就是 slave 。注意,在建立複制鍊的時候,一個從伺服器也可能是另一個伺服器的主伺服器
connected_slaves:2 ###2個slaves
slave0:ip=192.168.65.130,port=6379,state=online,offset=1639,lag=1
slave1:ip=192.168.65.129,port=6379,state=online,offset=1639,lag=0
master_repl_offset:1639
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:1638
# CPU
used_cpu_sys:41.87 ###Redis 伺服器耗費的系統 CPU
used_cpu_user:17.82 ###Redis 伺服器耗費的使用者 CPU
used_cpu_sys_children:0.01 ###背景程序耗費的系統 CPU
used_cpu_user_children:0.01 ###背景程序耗費的使用者 CPU
# Keyspace
db0:keys=3101,expires=0,avg_ttl=0 ###keyspace 部分記錄了資料庫相關的統計資訊,比如資料庫的鍵數量、資料庫已經被删除的過期鍵數量等。對于每個資料庫,這個部分都會添加一行以下格式的資訊
隻看其中一部分:info Replication
重新統計:config resetstat
檢視:
config get :擷取伺服器配置資訊。
redis 127.0.0.1:6379> config get dir
config get *:檢視所有配置
修改:
臨時設定:config set
永久設定:config rewrite,将目前伺服器的參數配置寫入redis conf.
使用telnet也可以連接配接redis-server。并且在腳本中使用nc指令進行redis操作也是很有效的:
gnuhpc@gnuhpc:~$ (echo -en "ping\r\nset key abc\r\nget key\r\n";sleep 1) | nc 127.0.0.1 6379
+PONG
+OK
$3
abc
另一個方式是使用pipeline:
在一個腳本中批量執行多個寫入操作:
先把插入操作放入操作文本insert.dat:
set a b
set 1 2
set h w
set f u
然後執行指令:cat insert.bat | ./redis-cli --pipe,或者如下腳本:
#!/bin/sh
host=$1
port=$;
password=$3
cat insert.dat | ./redis-cli -h $host -p $port -a $password --pipe
select db-index,預設連接配接的資料庫所有是0,預設資料庫數是16個。傳回1表示成功,0失敗
flushdb:删除目前選擇資料庫中的所有 key。生産上已經禁止。
flushall: 删除所有的資料庫。生産上已經禁止。
redis-cli debug segfault
redis-cli -p 6379 DEBUG sleep 30
- -eval 。例如:
redis-cli --eval myscript.lua key1 key2 , arg1 arg2 arg3
config set requirepass [passw0rd]
auth passw0rd
redis-benchmark -n 100000
SLOWLOG GET 10
結果為查詢ID、發生時間、運作時長和原指令
日志位置在/redis/log下,redis.log為redis主日志,sentinel.log為sentinel監控日志。
1. echo :在指令行列印一些内容
redis 127.0.0.1:6379> echo HongWan
"HongWan"
2. quit :退出連接配接。
redis 127.0.0.1:6379> quit
3. -x選項從标準輸入(stdin)讀取最後一個參數。 比如從管道中讀取輸入:
echo -en "chen.qun" | redis-cli -x set name
4. -r -i
-r 選項重複執行一個指令指定的次數。
-i 設定指令執行的間隔。
比如檢視redis每秒執行的commands(qps)
redis-cli -r 100 -i 1 info stats | grep instantaneous_ops_per_sec
5. -c:開啟reidis cluster模式,連接配接redis cluster節點時候使用。
6. --rdb:擷取指定redis執行個體的rdb檔案,儲存到本地。
redis-cli -h 192.168.44.16 -p 6379 --rdb 6379.rdb
7. --slave
模拟slave從master上接收到的commands。slave上接收到的commands都是update操作,記錄資料的更新行為。
8. - -pipe
這個一個非常有用的參數。發送原始的redis protocl格式資料到伺服器端執行。比如下面的形式的資料(linux伺服器上需要用unix2dos轉化成dos檔案)。
linux下預設的換行是\n,windows系統的換行符是\r\n,redis使用的是\r\n.
echo -en '*3\r\n$3\r\nSET\r\n$3\r\nkey\r\n$5\r\nvalue\r\n' | redis-cli --pipe