久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

【Redis11】Redis基礎(chǔ):服務(wù)端操作

 硬核項(xiàng)目經(jīng)理 2023-04-10 發(fā)布于湖南

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

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

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

服務(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)的信息我們可以通過 COMMAND 命令來進(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)容大家可以查看官方文檔,。不過最后的一些命令標(biāo)志其實(shí)我們直接看這些名稱也能看明白,,比如 @write 是命令會(huì)導(dǎo)致修改,,@string 表明這是 string 類型的,@fast 就是以常量或者 log(N) 的方式運(yùn)行,,而 @slow 就表示它比較慢啦,。

另外,通過 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ù)器的配置,或者說是我們?cè)?redis.conf 中的那些配置以及一些運(yùn)行時(shí)的配置,,說白了,,就像是 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.

我們先來看一下查看和修改,查看相關(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 里面看到的信息,不過不是全部啊,,只是一部分,,主要是下面這些:

  • 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í)的配置信息寫入到 redis.conf 文件中,,比如我們前面修改了 hash-max-ziplist-entries 的內(nèi)容,,大家可以自己嘗試用一下 CONFIG REWRITE 然后再去你的 redis.conf 文件中看看是不是被設(shè)置成了我們修改的值了哦。

內(nèi)存信息

內(nèi)存信息非常重要,,對(duì)于我們的調(diào)優(yōu)來說非常有用,,畢竟 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)行診斷的,不過我這里沒什么數(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)意思,?感覺隱私都沒了呀!

保存數(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

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

后面在學(xué)習(xí)進(jìn)階部分持久化策略相關(guān)的內(nèi)容時(shí),我們還會(huì)詳細(xì)地說這一塊的內(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í),,可以通過每 N 秒發(fā)送一個(gè) LASTSAVE 命令來查看 BGSAVE 命令執(zhí)行的結(jié)果,。

127.0.0.1:6379> LASTSAVE
(integer) 1652940571

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

這個(gè)沒啥多說的啦,,就是所有 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í)我們可以直接通過 redis-cli 和 redis-server 加上 -v 參數(shù)來查看版本信息,,redis-server 啟動(dòng)的時(shí)候也能看到,。不過在客戶端連接后,也可以通過 LOLWUT 來查看,,并且這個(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"

之前我們一直沒有操作過 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ì)比較常用。其它的命令,,說實(shí)話,,我是沒怎么用過,甚至沒有學(xué)習(xí)之前都不知道還有這些命令,。但現(xiàn)在我發(fā)現(xiàn),,CONFIG、MEMORY 以及 SAVE,、BGSAVE 是可以在很多特殊的情況下幫助我們處理很多事情的,。這就是學(xué)習(xí)的魅力呀,不知總會(huì)變知道,,每天增加一點(diǎn)點(diǎn)小知識(shí)總有一天會(huì)迎來巨大的蛻變,。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多