日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

Redis的系统级命令

發(fā)布時間:2025/4/16 windows 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis的系统级命令 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章建立一個統(tǒng)一的認(rèn)識就是Redis的版本是3.2.8 1:BGREWRITEAOF(bgrewriteaof) 執(zhí)行一個 AOF文件 重寫操作。重寫會創(chuàng)建一個當(dāng)前 AOF 文件的體積優(yōu)化版本。 即使 BGREWRITEAOF 執(zhí)行失敗,也不會有任何數(shù)據(jù)丟失,因為舊的 AOF 文件在 BGREWRITEAOF 成功之前不會被修改。 重寫操作只會在沒有其他持久化工作在后臺執(zhí)行時被觸發(fā),也就是說: 如果 Redis 的子進程正在執(zhí)行快照的保存工作,那么 AOF 重寫的操作會被預(yù)定(scheduled),等到保存工作完成之后再執(zhí)行 AOF 重寫。在這種情況下, BGREWRITEAOF 的返回值仍然是 OK ,但還會加上一條額外的信息,說明 BGREWRITEAOF 要等到保存操作完成之后才能執(zhí)行。在 Redis 2.6 或以上的版本,可以使用 INFO 命令查看 BGREWRITEAOF 是否被預(yù)定。 如果已經(jīng)有別的 AOF 文件重寫在執(zhí)行,那么 BGREWRITEAOF 返回一個錯誤,并且這個新的 BGREWRITEAOF 請求也不會被預(yù)定到下次執(zhí)行。 從 Redis 2.4 開始, AOF 重寫由 Redis 自行觸發(fā), BGREWRITEAOF 僅僅用于手動觸發(fā)重寫操作。所以說已經(jīng)并不適用于3.2.8,不在詳述。 2:BGSAVE(bgsave) 在后臺異步(Asynchronously)保存當(dāng)前數(shù)據(jù)庫的數(shù)據(jù)到磁盤。 BGSAVE 命令執(zhí)行之后立即返回 OK ,然后 Redis fork 出一個新子進程,原來的 Redis 進程(父進程)繼續(xù)處理客戶端請求,而子進程則負(fù)責(zé)將數(shù)據(jù)保存到磁盤,然后退出。 客戶端可以通過 LASTSAVE 命令查看相關(guān)信息,判斷 BGSAVE 命令是否執(zhí)行成功。 首先進入6739的Redis: 127.0.0.1:6379[1]> config get dir 1) "dir" 2) "/home/redis/data"

看一下現(xiàn)在的dump.rbd文件

[root@localhost data]# ls -ll total 4 -rw-r--r-- 1 root root 108 May 2 16:32 dump.rdb

看一下日期,執(zhí)行bgsave并且查看dump.rbd文件:

127.0.0.1:6379[1]> bgsave Background saving started \[root@localhost data]# ls -ll total 4 -rw-r--r-- 1 root root 108 May 9 10:18 dump.rdb

看一下,備份時間已經(jīng)修改為最新我們執(zhí)行備份的時間了。

下面有兩個命令和BGSAVE息息相關(guān),SAVE|LASTSAVE SAVE SAVE 命令執(zhí)行一個同步保存操作,將當(dāng)前 Redis 實例的所有數(shù)據(jù)快照(snapshot)以 RDB 文件的形式保存到硬盤。 一般來說,在生產(chǎn)環(huán)境很少執(zhí)行 SAVE 操作,因為它會阻塞所有客戶端,保存數(shù)據(jù)庫的任務(wù)通常由 BGSAVE 命令異步地執(zhí)行。然而,如果負(fù)責(zé)保存數(shù)據(jù)的后臺子進程不幸出現(xiàn)問題時, SAVE 可以作為保存數(shù)據(jù)的最后手段來使用。 LASTSAVE 返回最近一次 Redis 成功將數(shù)據(jù)保存到磁盤上的時間,以 UNIX 時間戳格式表示。 127.0.0.1:6379[1]> lastsave (integer) 1494296312

我們把時間戳轉(zhuǎn)換以后就是1494296312=2017/5/9 10:18:32

3:關(guān)于CLIENT的幾個系統(tǒng)命令

CLIENT GETNAME,返回 CLIENT SETNAME 命令為連接設(shè)置的名字。另外還有CLIENT LIST和CLIENT KILL 因為新創(chuàng)建的連接默認(rèn)是沒有名字的, 對于沒有名字的連接, CLIENT GETNAME 返回空白回復(fù)。 為當(dāng)前連接分配一個名字。 這個名字會顯示在 CLIENT LIST 命令的結(jié)果中, 用于識別當(dāng)前正在與服務(wù)器進行連接的客戶端。 舉個例子, 在使用 Redis 構(gòu)建隊列(queue)時, 可以根據(jù)連接負(fù)責(zé)的任務(wù)(role), 為信息生產(chǎn)者(producer)和信息消費者(consumer)分別設(shè)置不同的名字。 名字使用 Redis 的字符串類型來保存, 最大可以占用 512 MB 。 另外, 為了避免和 CLIENT LIST 命令的輸出格式發(fā)生沖突, 名字里不允許使用空格。 要移除一個連接的名字, 可以將連接的名字設(shè)為空字符串 "" 。 使用 CLIENT GETNAME 命令可以取出連接的名字。 新創(chuàng)建的連接默認(rèn)是沒有名字的。 在 Redis 應(yīng)用程序發(fā)生連接泄漏時,為連接設(shè)置名字是一種很好的 debug 手段。下面給個例子 127.0.0.1:6379[1]> client getname (nil) 127.0.0.1:6379[1]> client setname mxqconnect1 OK 127.0.0.1:6379[1]> client getname "mxqconnect1" 127.0.0.1:6379[1]> client list id=2350 addr=172.16.16.34:13200 fd=7 name=sentinel-51fc16eb-cmd age=583234 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=publish id=2351 addr=172.16.16.34:13201 fd=9 name=sentinel-51fc16eb-pubsub age=583234 idle=0 flags=N db=0 sub=1 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=subscribe id=2352 addr=172.16.16.35:39670 fd=10 name= age=583233 idle=0 flags=S db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=replconf id=2362 addr=127.0.0.1:34498 fd=12 name=mxqconnect1 age=150 idle=0 flags=N db=1 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client id=2353 addr=172.16.16.35:39672 fd=6 name=sentinel-d7303108-pubsub age=583232 idle=0 flags=N db=0 sub=1 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=subscribe id=2354 addr=172.16.16.35:39671 fd=8 name=sentinel-d7303108-cmd age=583232 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=ping id=2355 addr=172.16.16.35:39687 fd=11 name= age=583223 idle=0 flags=S db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=replconf 127.0.0.1:6379[1]>

關(guān)閉自身的鏈接:

127.0.0.1:6379[1]> CLIENT KILL 127.0.0.1:34498 OK 127.0.0.1:6379[1]> 127.0.0.1:6379[1]> GET NAME (error) NOAUTH Authentication required.

我們知道Redis 使用單線程設(shè)計,所以當(dāng) Redis 正在執(zhí)行命令的時候,不會有客戶端被斷開連接。我們斷開本身的鏈接后,在執(zhí)行下一次命令,就會出現(xiàn)一個錯誤,告知我們已經(jīng)斷開了連接。

下面看一下CLIENT LIST的各個域的含義,也是Redis官網(wǎng)給出的解釋:

以下是域的含義: addr : 客戶端的地址和端口 fd : 套接字所使用的文件描述符 age : 以秒計算的已連接時長 idle : 以秒計算的空閑時長 flags : 客戶端 flag (見下文) db : 該客戶端正在使用的數(shù)據(jù)庫 ID sub : 已訂閱頻道的數(shù)量 psub : 已訂閱模式的數(shù)量 multi : 在事務(wù)中被執(zhí)行的命令數(shù)量 qbuf : 查詢緩存的長度( 0 表示沒有查詢在等待) qbuf-free : 查詢緩存的剩余空間( 0 表示沒有剩余空間) obl : 輸出緩存的長度 oll : 輸出列表的長度(當(dāng)輸出緩存沒有剩余空間時,回復(fù)被入隊到這個隊列里) omem : 輸出緩存的內(nèi)存占用量 events : 文件描述符事件(見下文) cmd : 最近一次執(zhí)行的命令 客戶端 flag 可以由以下部分組成: O : 客戶端是 MONITOR 模式下的附屬節(jié)點(slave) S : 客戶端是一般模式下(normal)的附屬節(jié)點 M : 客戶端是主節(jié)點(master) x : 客戶端正在執(zhí)行事務(wù) b : 客戶端正在等待阻塞事件 i : 客戶端正在等待 VM I/O 操作(已廢棄) d : 一個受監(jiān)視(watched)的鍵已被修改, EXEC 命令將失敗 c : 在將回復(fù)完整地寫出之后,關(guān)閉鏈接 u : 客戶端未被阻塞(unblocked) A : 盡可能快地關(guān)閉連接 N : 未設(shè)置任何 flag 文件描述符事件可以是: r : 客戶端套接字(在事件 loop 中)是可讀的(readable) w : 客戶端套接字(在事件 loop 中)是可寫的(writeable)

4:CONFIG SET|GET|REWRITE

CONFIG SET 命令可以動態(tài)地調(diào)整 Redis 服務(wù)器的配置(configuration)而無須重啟。 你可以使用它修改配置參數(shù),或者改變 Redis 的持久化(Persistence)方式。 CONFIG SET 可以修改的配置參數(shù)可以使用命令 CONFIG GET * 來列出,所有被 CONFIG SET 修改的配置參數(shù)都會立即生 CONFIG GET 命令用于取得運行中的 Redis 服務(wù)器的配置參數(shù)(configuration parameters),在 Redis 2.4 版本中, 有部分參數(shù)沒有辦法用 CONFIG GET 訪問,但是在最新的 Redis 2.6 版本中,所有配置參數(shù)都已經(jīng)可以用 CONFIG GET 訪問了。 CONFIG GET 接受單個參數(shù) parameter 作為搜索關(guān)鍵字,查找所有匹配的配置參數(shù),其中參數(shù)和值以“鍵-值對”(key-value pairs)的方式排列。 例如我們可以修改一下交互時間: 127.0.0.1:6379[1]> clinet get name (error) ERR unknown command 'clinet' 127.0.0.1:6379[1]> client getname (error) NOAUTH Authentication required. 127.0.0.1:6379[1]> AUTH maxiangqianreids (error) ERR invalid password 127.0.0.1:6379[1]> AUTH maxiangqianredis OK 127.0.0.1:6379[1]> config get timeout 1) "timeout" 2) "300" 127.0.0.1:6379[1]> config set timeout 3000 OK 127.0.0.1:6379[1]> config get timeout 1) "timeout" 2) "3000" CONFIG REWRITE 命令對啟動 Redis 服務(wù)器時所指定的 redis.conf 文件進行改寫: 因為 CONFIG SET 命令可以對服務(wù)器的當(dāng)前配置進行修改, 而修改后的配置可能和 redis.conf 文件中所描述的配置不一樣, CONFIG REWRITE 的作用就是通過盡可能少的修改, 將服務(wù)器當(dāng)前所使用的配置記錄到 redis.conf 文件中。 重寫會以非常保守的方式進行: 原有 redis.conf 文件的整體結(jié)構(gòu)和注釋會被盡可能地保留。 如果一個選項已經(jīng)存在于原有 redis.conf 文件中 , 那么對該選項的重寫會在選項原本所在的位置(行號)上進行。 如果一個選項不存在于原有 redis.conf 文件中, 并且該選項被設(shè)置為默認(rèn)值, 那么重寫程序不會將這個選項添加到重寫后的 redis.conf 文件中。 如果一個選項不存在于原有 redis.conf 文件中, 并且該選項被設(shè)置為非默認(rèn)值, 那么這個選項將被添加到重寫后的 redis.conf 文件的末尾。 未使用的行會被留白。 比如說, 如果你在原有 redis.conf 文件上設(shè)置了數(shù)個關(guān)于 save 選項的參數(shù), 但現(xiàn)在你將這些 save 參數(shù)的一個或全部都關(guān)閉了, 那么這些不再使用的參數(shù)原本所在的行就會變成空白的。 即使啟動服務(wù)器時所指定的 redis.conf 文件已經(jīng)不再存在, CONFIG REWRITE 命令也可以重新構(gòu)建并生成出一個新的 redis.conf 文件。 另一方面, 如果啟動服務(wù)器時沒有載入 redis.conf 文件, 那么執(zhí)行 CONFIG REWRITE 命令將引發(fā)一個錯誤。

我們執(zhí)行config rewrite,然后查看配置文件

[root@localhost redis]# cat redis.conf #bind 127.0.0.1 # 綁定的主機地址 port 6379 timeout 3000

timeout已經(jīng)被修改為3000了。

還有一個CONFIG 命令CONFIG RESETSTAT

重置 INFO 命令中的某些統(tǒng)計數(shù)據(jù),包括: Keyspace hits (鍵空間命中次數(shù)) Keyspace misses (鍵空間不命中次數(shù)) Number of commands processed (執(zhí)行命令的次數(shù)) Number of connections received (連接服務(wù)器的次數(shù)) Number of expired keys (過期key的數(shù)量) Number of rejected connections (被拒絕的連接數(shù)量) Latest fork(2) time(最后執(zhí)行 fork(2) 的時間) The aof_delayed_fsync counter(aof_delayed_fsync 計數(shù)器的值)

5:DBSIZE

返回當(dāng)前數(shù)據(jù)庫的 key 的數(shù)量 127.0.0.1:6379> DBSIZE (integer) 4 127.0.0.1:6379> INFO KEYSPACE # Keyspace db0:keys=4,expires=0,avg_ttl=0 db1:keys=1,expires=0,avg_ttl=0

6:DEBUG OBJECT key

DEBUG OBJECT 是一個調(diào)試命令,它不應(yīng)被客戶端所使用。

DEBUG SEGFAULT 執(zhí)行一個不合法的內(nèi)存訪問從而讓 Redis 崩潰,僅在開發(fā)時用于 BUG 模擬。

7:FLUSHALL:清空整個 Redis 服務(wù)器的數(shù)據(jù)(刪除所有數(shù)據(jù)庫的所有 key )。此命令從不失敗。

FLUSHDB:清空當(dāng)前數(shù)據(jù)庫中的所有 key。此命令從不失敗。

8:INFO:系統(tǒng)相關(guān)信息,下面看一下相關(guān)的例子:

127.0.0.1:6379> INFO KEYSPACE # Keyspace db0:keys=4,expires=0,avg_ttl=0 db1:keys=1,expires=0,avg_ttl=0 127.0.0.1:6379> info replication # Replication role:master connected_slaves:2 slave0:ip=172.16.16.35,port=6380,state=online,offset=131088123,lag=0 slave1:ip=172.16.16.35,port=6379,state=online,offset=131088123,lag=1 master_repl_offset:131088123 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:130039548 repl_backlog_histlen:1048576 127.0.0.1:6379> info Persistence # Persistence loading:0 rdb_changes_since_last_save:2 rdb_bgsave_in_progress:0 rdb_last_save_time:1494299732 rdb_last_bgsave_status:ok rdb_last_bgsave_time_sec:0 rdb_current_bgsave_time_sec:-1 aof_enabled:0 aof_rewrite_in_progress:0 aof_rewrite_scheduled:0 aof_last_rewrite_time_sec:-1 aof_current_rewrite_time_sec:-1 aof_last_bgrewrite_status:ok aof_last_write_status:ok

我們可以通過INFO 后帶域的信息查看相關(guān)復(fù)制,KEY值和相關(guān)的持久化信息。

9:MONITOR相關(guān)信息

127.0.0.1:6379> MONITOR OK 1494300607.699131 [0 172.16.16.34:13200] "PING" 1494300607.783224 [0 172.16.16.34:13200] "PUBLISH" "__sentinel__:hello" "172.16.16.34,26379,51fc16eb8e0bf950a3f3ada8c1eb9d70145c9ffb,2,localhost,172.16.16.34,6379,2" 1494300608.585669 [0 172.16.16.35:39671] "PING" 1494300608.676104 [0 172.16.16.35:39671] "PUBLISH" "__sentinel__:hello" "172.16.16.35,26379,d73031089231fd5f46bdda23d8a448cfe64ec8fd,2,localhost,172.16.16.34,6379,2" 1494300608.724879 [0 172.16.16.34:13200] "PING" 1494300609.640910 [0 172.16.16.35:39671] "PING" 1494300609.746056 [0 172.16.16.34:13200] "PING" 1494300609.836231 [0 172.16.16.34:13200] "PUBLISH" "__sentinel__:hello" "172.16.16.34,26379,51fc16eb8e0bf950a3f3ada8c1eb9d70145c9ffb,2,localhost,172.16.16.34,6379,2" 1494300610.713244 [0 172.16.16.35:39671] "PING" 1494300610.752325 [0 172.16.16.34:13200] "PING"

主要就是監(jiān)控Redis的實時鏈接信息,這個功能感覺也是很好用。當(dāng)大量新鏈接出問題時候我們可以看到連接的來源地址和主要作用。

10:SLAVEOF host port

SLAVEOF 命令用于在 Redis 運行時動態(tài)地修改復(fù)制(replication)功能的行為。 通過執(zhí)行 SLAVEOF host port 命令,可以將當(dāng)前服務(wù)器轉(zhuǎn)變?yōu)橹付ǚ?wù)器的從屬服務(wù)器(slave server)。 如果當(dāng)前服務(wù)器已經(jīng)是某個主服務(wù)器(master server)的從屬服務(wù)器,那么執(zhí)行 SLAVEOF host port 將使當(dāng)前服務(wù)器停止對舊主服務(wù)器的同步,丟棄舊數(shù)據(jù)集,轉(zhuǎn)而開始對新主服務(wù)器進行同步。 另外,對一個從屬服務(wù)器執(zhí)行命令 SLAVEOF NO ONE 將使得這個從屬服務(wù)器關(guān)閉復(fù)制功能,并從從屬服務(wù)器轉(zhuǎn)變回主服務(wù)器,原來同步所得的數(shù)據(jù)集不會被丟棄。 利用『 SLAVEOF NO ONE 不會丟棄同步所得數(shù)據(jù)集』這個特性,可以在主服務(wù)器失敗的時候,將從屬服務(wù)器用作新的主服務(wù)器,從而實現(xiàn)無間斷運行。

11:SHUTDOWN 命令執(zhí)行以下操作:

停止所有客戶端 如果有至少一個保存點在等待,執(zhí)行 SAVE 命令 如果 AOF 選項被打開,更新 AOF 文件 關(guān)閉 redis 服務(wù)器(server) 如果持久化被打開的話, SHUTDOWN 命令會保證服務(wù)器正常關(guān)閉而不丟失任何數(shù)據(jù)。 另一方面,假如只是單純地執(zhí)行 SAVE 命令,然后再執(zhí)行 QUIT 命令,則沒有這一保證 —— 因為在執(zhí)行 SAVE 之后、執(zhí)行 QUIT 之前的這段時間中間,其他客戶端可能正在和服務(wù)器進行通訊,這時如果執(zhí)行 QUIT 就會造成數(shù)據(jù)丟失。 SAVE 和 NOSAVE 修飾符 通過使用可選的修飾符,可以修改 SHUTDOWN 命令的表現(xiàn)。比如說: 執(zhí)行 SHUTDOWN SAVE 會強制讓數(shù)據(jù)庫執(zhí)行保存操作,即使沒有設(shè)定(configure)保存點 執(zhí)行 SHUTDOWN NOSAVE 會阻止數(shù)據(jù)庫執(zhí)行保存操作,即使已經(jīng)設(shè)定有一個或多個保存點(你可以將這一用法看作是強制停止服務(wù)器的一個假想的 ABORT 命令)

?

本文是自己測試學(xué)習(xí)結(jié)果,如果你感覺此文對你有幫助,請幫忙點一下推薦。這將鼓勵我繼續(xù)寫下去。

轉(zhuǎn)載于:https://www.cnblogs.com/shengdimaya/p/6829879.html

總結(jié)

以上是生活随笔為你收集整理的Redis的系统级命令的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。