做者:gnuhpc
出處:http://www.cnblogs.com/gnuhpc/linux
$ redis-server redis.confgit
常見選項:redis
./redis-server (run the server with default conf)算法
./redis-server /etc/redis/6379.conf數據庫
./redis-server --port 7777windows
./redis-server --port 7777 --slaveof 127.0.0.1 8888api
./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
rename-command,例如:rename-command FLUSHALL ""。必須重啓。
- -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
做者: gnuhpc