开心六月综合激情婷婷|欧美精品成人动漫二区|国产中文字幕综合色|亚洲人在线成视频

    1. 
      
        <b id="zqfy3"><legend id="zqfy3"><fieldset id="zqfy3"></fieldset></legend></b>
          <ul id="zqfy3"></ul>
          <blockquote id="zqfy3"><strong id="zqfy3"><dfn id="zqfy3"></dfn></strong></blockquote>
          <blockquote id="zqfy3"><legend id="zqfy3"></legend></blockquote>
          打開(kāi)APP
          userphoto
          未登錄

          開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

          開(kāi)通VIP
          【Redis11】Redis基礎(chǔ):服務(wù)端操作

          Redis基礎(chǔ)學(xué)習(xí):服務(wù)端操作

          上回我們已經(jīng)學(xué)習(xí)過(guò)了客戶端的一些操作命令,今天我們就來(lái)繼續(xù)學(xué)習(xí)服務(wù)器端的一些操作命令。這些命令其實(shí)平常用得比較多的也就那么幾個(gè),通常就是看一看服務(wù)器的一些相關(guān)信息。

          好吧,那么我們就先從查看服務(wù)器信息開(kāi)始。

          服務(wù)器信息

          這個(gè)命令應(yīng)該不少人知道的,INFO 命令,查看當(dāng)前服務(wù)器的各種狀態(tài)信息。

          127.0.0.1:6379> info
          # Server
          redis_version:6.2.6
          redis_git_sha1:00000000
          redis_git_dirty:0
          redis_build_id:c6f3693d1aced7d9
          redis_mode:standalone
          ……………………
          ……………………
          ……………………

          127.0.0.1:6379> info cpu
          # CPU
          used_cpu_sys:14.436791
          used_cpu_user:11.242336
          used_cpu_sys_children:0.004246
          used_cpu_user_children:0.001057

          它的參數(shù)是一個(gè)選項(xiàng),可以選擇查看內(nèi)存、CPU消耗等信息,包括 server、clients、memory、persistence、stats、replication、cpu、command stats、cluster、keyspace、all、default 這些信息,很明顯,默認(rèn)情況下就是使用的 all 這個(gè)參數(shù)啦。

          命令信息

          命令相關(guān)的信息我們可以通過(guò) COMMAND 命令來(lái)進(jìn)行查看,它返回的是當(dāng)前版本下所有 Redis 命令的詳細(xì)信息,這個(gè)命令也是有子命令的,如果不給子命令的話,就是返回全部的信息。

          127.0.0.1:6379> COMMAND HELP
           1) COMMAND <subcommand> [<arg> [value] [opt] ...]. Subcommands are:
           2) (no subcommand)
           3)     Return details about all Redis commands.
           4) COUNT
           5)     Return the total number of commands in this Redis server.
           6) GETKEYS <full-command>
           7)     Return the keys from a full Redis command.
           8) INFO [<command-name> ...]
           9)     Return details about multiple Redis commands.
          10) HELP
          11)     Prints this help.

          127.0.0.1:6379> COMMAND
          …………
          …………
          …………
          224) 1) "exec"
               2) (integer) 1
               3) 1) noscript
                  2) loading
                  3) stale
                  4) skip_slowlog
               4) (integer) 0
               5) (integer) 0
               6) (integer) 0
               7) 1) @slow
                  2) @transaction
                  
          127.0.0.1:6379> COMMAND COUNT
          (integer) 224

          目前在我的這個(gè)版本的 Redis 上,一共有 224 條命令,子命令 COMMAND COUNT 返回全部的命令數(shù)量。當(dāng)然,我們也可以單獨(dú)查看某個(gè)或多個(gè)指定的命令,使用子命令 COMMAND INFO xxx xxx 。

          127.0.0.1:6379> COMMAND INFO set get
          1) 1) "set"
             2) (integer) -3
             3) 1) write
                2) denyoom
             4) (integer) 1
             5) (integer) 1
             6) (integer) 1
             7) 1) @write
                2) @string
                3) @slow
          2) 1) "get"
             2) (integer) 2
             3) 1) readonly
                2) fast
             4) (integer) 1
             5) (integer) 1
             6) (integer) 1
             7) 1) @read
                2) @string
                3) @fast

          返回的命令信息包含命令的名稱、數(shù)據(jù)規(guī)范、一些標(biāo)志,具體的內(nèi)容大家可以查看官方文檔。不過(guò)最后的一些命令標(biāo)志其實(shí)我們直接看這些名稱也能看明白,比如 @write 是命令會(huì)導(dǎo)致修改,@string 表明這是 string 類型的,@fast 就是以常量或者 log(N) 的方式運(yùn)行,而 @slow 就表示它比較慢啦。

          另外,通過(guò) COMMAND GETKEYS 命令我們還可以獲得要執(zhí)行的命令的參數(shù) key ,就像下面這樣。

          127.0.0.1:6379> command getkeys set a 111
          1) "a"
          127.0.0.1:6379> command getkeys mset a 111 b 222
          1) "a"
          2) "b"

          配置信息及設(shè)置

          這里的配置信息主要指的就是服務(wù)器的配置,或者說(shuō)是我們?cè)?redis.conf 中的那些配置以及一些運(yùn)行時(shí)的配置,說(shuō)白了,就像是 MySQL 中 show variables 或者 show status 。它也是一個(gè)復(fù)合命令,有一些子命令可以使用。

          127.0.0.1:6379> CONFIG HELP
           1) CONFIG <subcommand> [<arg> [value] [opt] ...]. Subcommands are:
           2) GET <pattern>
           3)     Return parameters matching the glob-like <pattern> and their values.
           4) SET <directive> <value>
           5)     Set the configuration <directive> to <value>.
           6) RESETSTAT
           7)     Reset statistics reported by the INFO command.
           8) REWRITE
           9)     Rewrite the configuration file.
          10) HELP
          11)     Prints this help.

          我們先來(lái)看一下查看和修改,查看相關(guān)的配置使用 CONFIG GET ,修改配置的話使用 CONFIG SET 。

          127.0.0.1:6379> CONFIG GET *max-*-entries*
          1) "hash-max-ziplist-entries"
          2) "512"
          3) "set-max-intset-entries"
          4) "512"
          5) "zset-max-ziplist-entries"
          6) "128"
          127.0.0.1:6379> CONFIG SET hash-max-ziplist-entries 500
          OK
          127.0.0.1:6379> CONFIG GET hash-max-ziplist-entries
          1) "hash-max-ziplist-entries"
          2) "500"

          要想查看所有信息怎么辦呢?直接 CONFIG GET * 就好啦。

          CONFIG RESETSTAT 命令用于還原當(dāng)前系統(tǒng)中的一些統(tǒng)計(jì)信息,也就是我們?cè)?INFO STATS 里面看到的信息,不過(guò)不是全部啊,只是一部分,主要是下面這些:

          • Keyspace hits
          • Keyspace misses
          • Number of commands processed
          • Number of connections received
          • Number of expired keys
          • Number of rejected connections
          • Latest fork(2) time
          • The aof_delayed_fsync counter
          ?  ~ redis-cli info | grep keyspace
          keyspace_hits:8
          keyspace_misses:1

          127.0.0.1:6379> CONFIG RESETSTAT
          OK

          ?  ~ redis-cli info | grep keyspace
          keyspace_hits:0
          keyspace_misses:0

          另外還有一個(gè) CONFIG REWRITE 命令,它會(huì)將我們當(dāng)前運(yùn)行時(shí)的配置信息寫(xiě)入到 redis.conf 文件中,比如我們前面修改了 hash-max-ziplist-entries 的內(nèi)容,大家可以自己嘗試用一下 CONFIG REWRITE 然后再去你的 redis.conf 文件中看看是不是被設(shè)置成了我們修改的值了哦。

          內(nèi)存信息

          內(nèi)存信息非常重要,對(duì)于我們的調(diào)優(yōu)來(lái)說(shuō)非常有用,畢竟 Redis 就是個(gè)內(nèi)存數(shù)據(jù)庫(kù),所以主要的內(nèi)存命令操作還是以查詢、檢查、診斷為主的。同樣的,它也是一個(gè)包含子命令的復(fù)合命令。

          127.0.0.1:6379> MEMORY help
           1) MEMORY <subcommand> [<arg> [value] [opt] ...]. Subcommands are:
           2) DOCTOR
           3)     Return memory problems reports.
           4) MALLOC-STATS    Return internal statistics report from the memory allocator.
           5) PURGE
           6)     Attempt to purge dirty pages for reclamation by the allocator.
           7) STATS
           8)     Return information about the memory usage of the server.
           9) USAGE <key> [SAMPLES <count>]
          10)     Return memory in bytes used by <key> and its value. Nested values are
          11)     sampled up to <count> times (default: 5).
          12) HELP
          13)     Prints this help.

          其中 MEMORY DOCTOR 是可以為我們當(dāng)前的服務(wù)器狀態(tài)進(jìn)行診斷的,不過(guò)我這里沒(méi)什么數(shù)據(jù),看不到什么內(nèi)容。然后 MEMORY MALLOC-STATS 命令我這里也顯示當(dāng)前不支持。MEMORY STATS 就是一些內(nèi)存參數(shù)的信息,MEMORY USAGE 則可以查看某個(gè) key 的內(nèi)存占用情況。

          127.0.0.1:6379> MEMORY DOCTOR
          Hi Sam, this instance is empty or is using very little memory, my issues detector can't be used in these conditions. Please, leave for your mission on Earth and fill it with some data. The new Sam and I will be back to our programming as soon as I finished rebooting.

          127.0.0.1:6379> MEMORY MALLOC-STATS
          Stats not supported for the current allocator

          127.0.0.1:6379> MEMORY STATS
           1) "peak.allocated"
           2) (integer) 1207040
           ……………………
           ……………………
           …………………… 
          50) "1.5472098588943481"
          51) "fragmentation.bytes"
          52) (integer) 602640

          127.0.0.1:6379> MEMORY USAGE a
          (integer) 56

          監(jiān)控命令執(zhí)行

          監(jiān)控是監(jiān)控個(gè)啥類?其實(shí)這個(gè)監(jiān)控就是可以監(jiān)控到所有客戶端向服務(wù)端發(fā)送的命令信息。

          // 客戶端1
          127.0.0.1:6379> MONITOR
          OK

          // 客戶端2
          127.0.0.1:6379> set a 111
          OK
          127.0.0.1:6379> get a
          "111"

          // 客戶端1
          1652940576.074378 [0 127.0.0.1:63123] "set" "a" "111"
          1652940577.783409 [0 127.0.0.1:63123] "get" "a"

          是不是有點(diǎn)意思?感覺(jué)隱私都沒(méi)了呀!

          保存數(shù)據(jù)

          保存數(shù)據(jù)相關(guān)的操作其實(shí)意思是將數(shù)據(jù)保存到 rdb 文件中,也就是將數(shù)據(jù)刷到硬盤上。默認(rèn)情況下這個(gè)操作是系統(tǒng)定時(shí)去完成的,當(dāng)然我們也可以手動(dòng)完成,使用的是 SAVE 和 BGSAVE 命令。

          ?  redis ll
          total 8
          -rw-r--r--  1 zhangyue  admin   107B  5 19 15:04 dump.rdb

          127.0.0.1:6379> mset a 111 b 222 c 333
          OK
          127.0.0.1:6379> save
          OK

          ?  redis ll
          total 8
          -rw-r--r--  1 zhangyue  admin   129B  5 19 15:09 dump.rdb

          127.0.0.1:6379> mset c a 111 b 222 c 333
          OK
          127.0.0.1:6379> save
          OK

          127.0.0.1:6379> mset d 444 e 555 f 666
          OK
          127.0.0.1:6379> bgsave
          Background saving started

          ?  redis ll
          total 8
          -rw-r--r--  1 zhangyue  admin   141B  5 19 15:13 dump.rdb

          通過(guò)上面的命令,我們可以看到 rdb 文件明顯的發(fā)生了變化。當(dāng)然,大部分情況下其實(shí)我們是不需要手動(dòng)去刷盤的,直接讓系統(tǒng)默認(rèn)處理就好了,因?yàn)槎喽嗌偕僦灰凶x寫(xiě)硬盤的操作,必然就會(huì)帶來(lái)性能的下降,特別是 Redis 還是單線程的。和 keys * 一樣,SAVE 命令在線上也是千萬(wàn)別亂用的,如果是一定要用的話,用 BGSAVE ,從名字也看出來(lái)了,它是后端再起線程去執(zhí)行刷盤操作的,這也是 Redis 自動(dòng)持久化存儲(chǔ)的默認(rèn)命令。

          后面在學(xué)習(xí)進(jìn)階部分持久化策略相關(guān)的內(nèi)容時(shí),我們還會(huì)詳細(xì)地說(shuō)這一塊的內(nèi)容。

          刪除全部

          刪除全部數(shù)據(jù)使用 FLASHALL 或者 FLASHDB 都可以,F(xiàn)LUSHALL 是刪除全部 16 個(gè)庫(kù)的內(nèi)容,F(xiàn)LUSHDB 只刪除當(dāng)前操作的庫(kù)。

          127.0.0.1:6379> FLUSHALL
          OK
          127.0.0.1:6379> keys *
          (empty array)

          其它

          剩下的一些命令其實(shí)就非常簡(jiǎn)單了,我們可以看到返回當(dāng)前的系統(tǒng)時(shí)間,所有數(shù)據(jù) key 的總數(shù)量,當(dāng)前版本信息以及如何快速交換內(nèi)部的庫(kù)。

          時(shí)間

          關(guān)于獲取當(dāng)前 Redis 服務(wù)器的時(shí)間,TIME 直接返回當(dāng)前服務(wù)器時(shí)間戳以及對(duì)應(yīng)的毫秒時(shí)間戳。

          127.0.0.1:6379> TIME
          1) "1652940501"
          2) "874432"

          另外一個(gè) LASTSAVE 也返回一個(gè)時(shí)間戳,但是它返回的是最近一次成功將數(shù)據(jù)保存在磁盤的時(shí)間。比如在使用 BGSAVE 命令時(shí),可以通過(guò)每 N 秒發(fā)送一個(gè) LASTSAVE 命令來(lái)查看 BGSAVE 命令執(zhí)行的結(jié)果。

          127.0.0.1:6379> LASTSAVE
          (integer) 1652940571

          內(nèi)容數(shù)量

          這個(gè)沒(méi)啥多說(shuō)的啦,就是所有 key 的數(shù)量。

          127.0.0.1:6379> keys *
          1) "c"
          2) "d"
          3) "a"
          4) "b"
          127.0.0.1:6379> DBSIZE
          (integer) 4

          查看版本

          其實(shí)我們可以直接通過(guò) redis-cli 和 redis-server 加上 -v 參數(shù)來(lái)查看版本信息,redis-server 啟動(dòng)的時(shí)候也能看到。不過(guò)在客戶端連接后,也可以通過(guò) LOLWUT 來(lái)查看,并且這個(gè)命令在 Redis5 以上的版本,還會(huì)返回版本的一個(gè)圖形,大家可以自己看一下哦。

          ?  ~ redis-cli -v
          redis-cli 6.2.6
          ?  ~ redis-server -v
          Redis server v=6.2.6 sha=00000000:0 malloc=libc bits=64 build=c6f3693d1aced7d9
          ?  ~ redis-cli
          127.0.0.1:6379> LOLWUT
          ……………………
          ……………………
          Dedicated to the 8 bit game developers of past and present.
          Original 8 bit image from Plaguemon by hikikomori. Redis ver. 6.2.6

          交換庫(kù)

          最后就是交換庫(kù),這是啥意思?其實(shí)就是我們可以快速把內(nèi)部庫(kù)進(jìn)行交換。

          127.0.0.1:6379> SWAPDB 0 1
          OK
          127.0.0.1:6379> get a
          (nil)
          127.0.0.1:6379> SELECT 1
          OK
          127.0.0.1:6379[1]> get a
          "111"

          之前我們一直沒(méi)有操作過(guò) 1 庫(kù),現(xiàn)在使用 SWAPDB 命令交換 0 和 1 庫(kù),結(jié)果之前在 0 庫(kù)的數(shù)據(jù)就跑到了 1 庫(kù)上了,是不是非常方便。

          總結(jié)

          服務(wù)端這些相關(guān)的命令中,最經(jīng)常用的其實(shí)就是 INFO ,主要也是為了查看以及統(tǒng)計(jì)一些服務(wù)器信息,另外 DBSIZE 可能也會(huì)比較常用。其它的命令,說(shuō)實(shí)話,我是沒(méi)怎么用過(guò),甚至沒(méi)有學(xué)習(xí)之前都不知道還有這些命令。但現(xiàn)在我發(fā)現(xiàn),CONFIG、MEMORY 以及 SAVE、BGSAVE 是可以在很多特殊的情況下幫助我們處理很多事情的。這就是學(xué)習(xí)的魅力呀,不知總會(huì)變知道,每天增加一點(diǎn)點(diǎn)小知識(shí)總有一天會(huì)迎來(lái)巨大的蛻變。

          本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
          打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
          猜你喜歡
          類似文章
          不到 10 個(gè)提升逼格的 Redis 命令
          redis常用性能分析命令
          Redis性能指標(biāo)監(jiān)控
          Redis幾個(gè)重要的健康指標(biāo)
          Redis學(xué)習(xí)手冊(cè)(服務(wù)器管理)
          Redis快速入門
          更多類似文章 >>
          生活服務(wù)
          分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
          綁定賬號(hào)成功
          后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
          如果VIP功能使用有故障,
          可點(diǎn)擊這里聯(lián)系客服!

          聯(lián)系客服