【redis使用全解析】常見營運操作

來源:互聯網
上載者:User

標籤:

gnuhpc
出處:http://www.cnblogs.com/gnuhpc/

1.1 啟動 1.1.1 啟動redis

$ 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

1.1.2 啟動redis-sentinel

./redis-server /etc/sentinel.conf –sentinel

./redis-sentinel /etc/sentinel.conf

部署後可以使用sstart對redis 和sentinel進行拉起,使用sctl進行supervisorctl的控制。(兩個alias)

1.2 停止

redis-cli shutdown

sentinel方法一樣,只是需要執行sentinel的串連連接埠

1.3 探測服務是否可用

127.0.0.1:6379> ping

返回PONG說明正常

1.4 監控redis請求執行資訊

在cli下執行monitor,生產環境慎用。

1.5 查看redis資料庫統計資訊

在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

1.6 查看和修改配置

查看:

config get :擷取伺服器配置資訊。

redis 127.0.0.1:6379> config get dir

config get *:查看所有配置

修改:

臨時設定:config set

永久設定:config rewrite,將目前伺服器的參數配置寫入redis conf.

1.7 批量執行操作

使用telnet也可以串連redis-server。並且在指令碼中使用nc命令進行redis操作也是很有效:

[email protected]:~$ (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

1.8 選擇資料庫

select db-index,預設串連的資料庫所有是0,預設資料庫數是16個。返回1表示成功,0失敗

1.9 清空資料庫

flushdb:刪除當前選擇資料庫中的所有 key。生產上已經禁止。

flushall: 刪除所有的資料庫。生產上已經禁止。

1.10 類比宕機

redis-cli debug segfault

1.11 類比hang

redis-cli -p 6379 DEBUG sleep 30

1.12 重新命名命令

rename-command,例如:rename-command FLUSHALL ""。必須重啟。

1.13 執行lua指令碼

- -eval 。例如:

redis-cli --eval myscript.lua key1 key2 , arg1 arg2 arg3

1.14 設定密碼

config set requirepass [passw0rd]

1.15 驗證密碼

auth passw0rd

1.16 效能測試命令

redis-benchmark -n 100000

1.17 擷取慢查詢

SLOWLOG GET 10

結果為查詢ID、發生時間、運行時間長度和原命令

1.18 查看日誌

日誌位置在/redis/log下,redis.log為redis主日誌,sentinel.log為sentinel監控日誌。

1.19 Redis-cli命令列其他動作

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
出處:http://www.cnblogs.com/gnuhpc/

【redis使用全解析】常見營運操作

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.