redis常用命令、常見錯誤、配置技巧等分享
來源:易賢網(wǎng) 閱讀:8749 次 日期:2015-04-14 14:15:56
溫馨提示:易賢網(wǎng)小編為您整理了“redis常用命令、常見錯誤、配置技巧等分享”,方便廣大網(wǎng)友查閱!

1. redis查看當(dāng)前所有的key

代碼如下:

KEYS *

2. 查看當(dāng)前redis的配置信息

代碼如下:

CONFIG GET *

3. MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.

強(qiáng)制停止redis快照導(dǎo)致,redis運(yùn)行用戶沒有權(quán)限寫rdb文件或者磁盤空間滿了,解決辦法:

代碼如下:

config set stop-writes-on-bgsave-error no

例如:

代碼如下:

set 'name' 'shenhui'

-MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.

config set stop-writes-on-bgsave-error no

+OK

set 'name' 'shenhui'

+OK

4. redis 127.0.0.1:6379> CONFIG SET logfile "/var/log/redis/redis-server.log"

(error) ERR Unsupported CONFIG parameter: logfile

logfile 不能通過set動態(tài)設(shè)置

5.(error) OOM command not allowed when used memory >

設(shè)置了maxmemory的選項(xiàng),redis內(nèi)存使用達(dá)到上限。

可以通過設(shè)置LRU算法來刪除部分key,釋放空間。

默認(rèn)是按照過期時(shí)間的,如果set時(shí)候沒有加上過期時(shí)間就會導(dǎo)致數(shù)據(jù)寫滿maxmemory。

如果不設(shè)置maxmemory或者設(shè)置為0 64位系統(tǒng)不限制內(nèi)存,32位系統(tǒng)最多使用3GB內(nèi)存。

volatile-lru -> 根據(jù)LRU算法生成的過期時(shí)間來刪除。

allkeys-lru -> 根據(jù)LRU算法刪除任何key。

volatile-random -> 根據(jù)過期設(shè)置來隨機(jī)刪除key。

allkeys->random -> 無差別隨機(jī)刪。

volatile-ttl -> 根據(jù)最近過期時(shí)間來刪除(輔以TTL)

noeviction -> 誰也不刪,直接在寫操作時(shí)返回錯誤。

6. reids日志位置

logfile 日志記錄方式,默認(rèn)值為stdout,如果設(shè)置為stdout且以守護(hù)進(jìn)程方式運(yùn)行,那么日志會被重定向到/dev/null,也就是不記日志。

7. reids配置參數(shù)詳解

代碼如下:

#daemonize no 默認(rèn)情況下, redis 不是在后臺運(yùn)行的,如果需要在后臺運(yùn)行,把該項(xiàng)的值更改為 yes

daemonize yes

# 當(dāng) redis 在后臺運(yùn)行的時(shí)候, Redis 默認(rèn)會把 pid 文件放在 /var/run/redis.pid ,你可以配置到其他地址。

# 當(dāng)運(yùn)行多個(gè) redis 服務(wù)時(shí),需要指定不同的 pid 文件和端口

pidfile /var/run/redis_6379.pid

# 指定 redis 運(yùn)行的端口,默認(rèn)是 6379

port 6379

# 在高并發(fā)的環(huán)境中,為避免慢客戶端的連接問題,需要設(shè)置一個(gè)高速后臺日志

tcp-backlog 511

# 指定 redis 只接收來自于該 IP 地址的請求,如果不進(jìn)行設(shè)置,那么將處理所有請求

# bind 192.168.1.100 10.0.0.1

# bind 127.0.0.1

# 設(shè)置客戶端連接時(shí)的超時(shí)時(shí)間,單位為秒。當(dāng)客戶端在這段時(shí)間內(nèi)沒有發(fā)出任何指令,那么關(guān)閉該連接

# 0 是關(guān)閉此設(shè)置

timeout 0

# TCP keepalive

# 在 Linux 上,指定值(秒)用于發(fā)送 ACKs 的時(shí)間。注意關(guān)閉連接需要雙倍的時(shí)間。默認(rèn)為 0 。

tcp-keepalive 0

# 指定日志記錄級別,生產(chǎn)環(huán)境推薦 notice

# Redis 總共支持四個(gè)級別: debug 、 verbose 、 notice 、 warning ,默認(rèn)為 verbose

# debug 記錄很多信息,用于開發(fā)和測試

# varbose 有用的信息,不像 debug 會記錄那么多

# notice 普通的 verbose ,常用于生產(chǎn)環(huán)境

# warning 只有非常重要或者嚴(yán)重的信息會記錄到日志

loglevel notice

# 配置 log 文件地址

# 默認(rèn)值為 stdout ,標(biāo)準(zhǔn)輸出,若后臺模式會輸出到 /dev/null 。

logfile /var/log/redis/redis.log

# 可用數(shù)據(jù)庫數(shù)

# 默認(rèn)值為 16 ,默認(rèn)數(shù)據(jù)庫為 0 ,數(shù)據(jù)庫范圍在 0- ( database-1 )之間

databases 16

################################ 快照#################################

# 保存數(shù)據(jù)到磁盤,格式如下 :

# save

# 指出在多長時(shí)間內(nèi),有多少次更新操作,就將數(shù)據(jù)同步到數(shù)據(jù)文件 rdb 。

# 相當(dāng)于條件觸發(fā)抓取快照,這個(gè)可以多個(gè)條件配合

# 比如默認(rèn)配置文件中的設(shè)置,就設(shè)置了三個(gè)條件

# save 900 1 900 秒內(nèi)至少有 1 個(gè) key 被改變

# save 300 10 300 秒內(nèi)至少有 300 個(gè) key 被改變

# save 60 10000 60 秒內(nèi)至少有 10000 個(gè) key 被改變

# save 900 1

# save 300 10

# save 60 10000

# 后臺存儲錯誤停止寫。

stop-writes-on-bgsave-error yes

# 存儲至本地?cái)?shù)據(jù)庫時(shí)(持久化到 rdb 文件)是否壓縮數(shù)據(jù),默認(rèn)為 yes

rdbcompression yes

# RDB 文件的是否直接偶像 chcksum

rdbchecksum yes

# 本地持久化數(shù)據(jù)庫文件名,默認(rèn)值為 dump.rdb

dbfilename dump.rdb

# 工作目錄

# 數(shù)據(jù)庫鏡像備份的文件放置的路徑。

# 這里的路徑跟文件名要分開配置是因?yàn)?redis 在進(jìn)行備份時(shí),先會將當(dāng)前數(shù)據(jù)庫的狀態(tài)寫入到一個(gè)臨時(shí)文件中,等備份完成,

# 再把該該臨時(shí)文件替換為上面所指定的文件,而這里的臨時(shí)文件和上面所配置的備份文件都會放在這個(gè)指定的路徑當(dāng)中。

# AOF 文件也會存放在這個(gè)目錄下面

# 注意這里必須制定一個(gè)目錄而不是文件

dir /var/lib/redis-server/

################################# 復(fù)制 #################################

# 主從復(fù)制 . 設(shè)置該數(shù)據(jù)庫為其他數(shù)據(jù)庫的從數(shù)據(jù)庫 .

# 設(shè)置當(dāng)本機(jī)為 slav 服務(wù)時(shí),設(shè)置 master 服務(wù)的 IP 地址及端口,在 Redis 啟動時(shí),它會自動從 master 進(jìn)行數(shù)據(jù)同步

# slaveof

# 當(dāng) master 服務(wù)設(shè)置了密碼保護(hù)時(shí) ( 用 requirepass 制定的密碼 )

# slave 服務(wù)連接 master 的密碼

# masterauth

# 當(dāng)從庫同主機(jī)失去連接或者復(fù)制正在進(jìn)行,從機(jī)庫有兩種運(yùn)行方式:

# 1) 如果 slave-serve-stale-data 設(shè)置為 yes( 默認(rèn)設(shè)置 ) ,從庫會繼續(xù)響應(yīng)客戶端的請求

# 2) 如果 slave-serve-stale-data 是指為 no ,出去 INFO 和 SLAVOF 命令之外的任何請求都會返回一個(gè)

# 錯誤 "SYNC with master in progress"

slave-serve-stale-data yes

# 配置 slave 實(shí)例是否接受寫。寫 slave 對存儲短暫數(shù)據(jù)(在同 master 數(shù)據(jù)同步后可以很容易地被刪除)是有用的,但未配置的情況下,客戶端寫可能會發(fā)送問題。

# 從 Redis2.6 后,默認(rèn) slave 為 read-only

slaveread-only yes

# 從庫會按照一個(gè)時(shí)間間隔向主庫發(fā)送 PINGs. 可以通過 repl-ping-slave-period 設(shè)置這個(gè)時(shí)間間隔,默認(rèn)是 10 秒

# repl-ping-slave-period 10

# repl-timeout 設(shè)置主庫批量數(shù)據(jù)傳輸時(shí)間或者 ping 回復(fù)時(shí)間間隔,默認(rèn)值是 60 秒

# 一定要確保 repl-timeout 大于 repl-ping-slave-period

# repl-timeout 60

# 在 slave socket 的 SYNC 后禁用 TCP_NODELAY

# 如果選擇“ yes ” ,Redis 將使用一個(gè)較小的數(shù)字 TCP 數(shù)據(jù)包和更少的帶寬將數(shù)據(jù)發(fā)送到 slave , 但是這可能導(dǎo)致數(shù)據(jù)發(fā)送到 slave 端會有延遲 , 如果是 Linux kernel 的默認(rèn)配置,會達(dá)到 40 毫秒 .

# 如果選擇 "no" ,則發(fā)送數(shù)據(jù)到 slave 端的延遲會降低,但將使用更多的帶寬用于復(fù)制 .

repl-disable-tcp-nodelay no

# 設(shè)置復(fù)制的后臺日志大小。

# 復(fù)制的后臺日志越大, slave 斷開連接及后來可能執(zhí)行部分復(fù)制花的時(shí)間就越長。

# 后臺日志在至少有一個(gè) slave 連接時(shí),僅僅分配一次。

# repl-backlog-size 1mb

# 在 master 不再連接 slave 后,后臺日志將被釋放。下面的配置定義從最后一個(gè) slave 斷開連接后需要釋放的時(shí)間(秒)。

# 0 意味著從不釋放后臺日志

# repl-backlog-ttl 3600

# 如果 master 不能再正常工作,那么會在多個(gè) slave 中,選擇優(yōu)先值最小的一個(gè) slave 提升為 master ,優(yōu)先值為 0 表示不能提升為 master 。

slave-priority 100

# 如果少于 N 個(gè) slave 連接,且延遲時(shí)間 <=M 秒,則 master 可配置停止接受寫操作。

# 例如需要至少 3 個(gè) slave 連接,且延遲 <=10 秒的配置:

# min-slaves-to-write 3

# min-slaves-max-lag 10

# 設(shè)置 0 為禁用

# 默認(rèn) min-slaves-to-write 為 0 (禁用), min-slaves-max-lag 為 10

################################## 安全 ###################################

# 設(shè)置客戶端連接后進(jìn)行任何其他指定前需要使用的密碼。

# 警告:因?yàn)?redis 速度相當(dāng)快,所以在一臺比較好的服務(wù)器下,一個(gè)外部的用戶可以在一秒鐘進(jìn)行 150K 次的密碼嘗試,這意味著你需要指定非常非常強(qiáng)大的密碼來防止暴力破解

# requirepass foobared

# 命令重命名 .

# 在一個(gè)共享環(huán)境下可以重命名相對危險(xiǎn)的命令。比如把 CONFIG 重名為一個(gè)不容易猜測的字符。

# 舉例 :

# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52

# 如果想刪除一個(gè)命令,直接把它重命名為一個(gè)空字符 "" 即可,如下:

# rename-command CONFIG ""

################################### 約束###################################

#設(shè)置同一時(shí)間最大客戶端連接數(shù),默認(rèn)無限制,

#Redis 可以同時(shí)打開的客戶端連接數(shù)為 Redis 進(jìn)程可以打開的最大文件描述符數(shù),

#如果設(shè)置 maxclients 0 ,表示不作限制。

#當(dāng)客戶端連接數(shù)到達(dá)限制時(shí), Redis 會關(guān)閉新的連接并向客戶端返回 max number of clients reached 錯誤信息

# maxclients 10000

# 指定 Redis 最大內(nèi)存限制, Redis 在啟動時(shí)會把數(shù)據(jù)加載到內(nèi)存中,達(dá)到最大內(nèi)存后, Redis 會按照清除策略嘗試清除已到期的 Key

# 如果 Redis 依照策略清除后無法提供足夠空間,或者策略設(shè)置為 ”noeviction” ,則使用更多空間的命令將會報(bào)錯,例如 SET, LPUSH 等。但仍然可以進(jìn)行讀取操作

# 注意: Redis 新的 vm 機(jī)制,會把 Key 存放內(nèi)存, Value 會存放在 swap 區(qū)

# 該選項(xiàng)對 LRU 策略很有用。

# maxmemory 的設(shè)置比較適合于把 redis 當(dāng)作于類似 memcached 的緩存來使用,而不適合當(dāng)做一個(gè)真實(shí)的 DB 。

# 當(dāng)把 Redis 當(dāng)做一個(gè)真實(shí)的數(shù)據(jù)庫使用的時(shí)候,內(nèi)存使用將是一個(gè)很大的開銷

# maxmemory

# 當(dāng)內(nèi)存達(dá)到最大值的時(shí)候 Redis 會選擇刪除哪些數(shù)據(jù)?有五種方式可供選擇

# volatile-lru -> 利用 LRU 算法移除設(shè)置過過期時(shí)間的 key (LRU: 最近使用 Least RecentlyUsed )

# allkeys-lru -> 利用 LRU 算法移除任何 key

# volatile-random -> 移除設(shè)置過過期時(shí)間的隨機(jī) key

# allkeys->random -> remove a randomkey, any key

# volatile-ttl -> 移除即將過期的 key(minor TTL)

# noeviction -> 不移除任何可以,只是返回一個(gè)寫錯誤

# 注意:對于上面的策略,如果沒有合適的 key 可以移除,當(dāng)寫的時(shí)候 Redis 會返回一個(gè)錯誤

# 默認(rèn)是 : volatile-lru

# maxmemory-policy volatile-lru

# LRU 和 minimal TTL 算法都不是精準(zhǔn)的算法,但是相對精確的算法 ( 為了節(jié)省內(nèi)存 ) ,隨意你可以選擇樣本大小進(jìn)行檢測。

# Redis 默認(rèn)的灰選擇 3 個(gè)樣本進(jìn)行檢測,你可以通過 maxmemory-samples 進(jìn)行設(shè)置

# maxmemory-samples 3

############################## AOF###############################

# 默認(rèn)情況下, redis 會在后臺異步的把數(shù)據(jù)庫鏡像備份到磁盤,但是該備份是非常耗時(shí)的,而且備份也不能很頻繁,如果發(fā)生諸如拉閘限電、拔插頭等狀況,那么將造成比較大范圍的數(shù)據(jù)丟失。

# 所以 redis 提供了另外一種更加高效的數(shù)據(jù)庫備份及災(zāi)難恢復(fù)方式。

# 開啟 append only 模式之后, redis 會把所接收到的每一次寫操作請求都追加到 appendonly.aof 文件中,當(dāng) redis 重新啟動時(shí),會從該文件恢復(fù)出之前的狀態(tài)。

# 但是這樣會造成 appendonly.aof 文件過大,所以 redis 還支持了 BGREWRITEAOF 指令,對 appendonly.aof 進(jìn)行重新整理。

# 你可以同時(shí)開啟 asynchronous dumps 和 AOF

appendonly no

# AOF 文件名稱 ( 默認(rèn) : "appendonly.aof")

# appendfilename appendonly.aof

# Redis 支持三種同步 AOF 文件的策略 :

# no: 不進(jìn)行同步,系統(tǒng)去操作 . Faster.

# always: always 表示每次有寫操作都進(jìn)行同步 . Slow, Safest.

# everysec: 表示對寫操作進(jìn)行累積,每秒同步一次 . Compromise.

# 默認(rèn)是 "everysec" ,按照速度和安全折中這是最好的。

# 如果想讓 Redis 能更高效的運(yùn)行,你也可以設(shè)置為 "no" ,讓操作系統(tǒng)決定什么時(shí)候去執(zhí)行

# 或者相反想讓數(shù)據(jù)更安全你也可以設(shè)置為 "always"

# 如果不確定就用 "everysec".

# appendfsync always

appendfsync everysec

# appendfsync no

# AOF 策略設(shè)置為 always 或者 everysec 時(shí),后臺處理進(jìn)程 ( 后臺保存或者 AOF 日志重寫 ) 會執(zhí)行大量的 I/O 操作

# 在某些 Linux 配置中會阻止過長的 fsync() 請求。注意現(xiàn)在沒有任何修復(fù),即使 fsync 在另外一個(gè)線程進(jìn)行處理

# 為了減緩這個(gè)問題,可以設(shè)置下面這個(gè)參數(shù) no-appendfsync-on-rewrite

no-appendfsync-on-rewrite no

# AOF 自動重寫

# 當(dāng) AOF 文件增長到一定大小的時(shí)候 Redis 能夠調(diào)用 BGREWRITEAOF 對日志文件進(jìn)行重寫

# 它是這樣工作的: Redis 會記住上次進(jìn)行些日志后文件的大小 ( 如果從開機(jī)以來還沒進(jìn)行過重寫,那日子大小在開機(jī)的時(shí)候確定 )

# 基礎(chǔ)大小會同現(xiàn)在的大小進(jìn)行比較。如果現(xiàn)在的大小比基礎(chǔ)大小大制定的百分比,重寫功能將啟動

# 同時(shí)需要指定一個(gè)最小大小用于 AOF 重寫,這個(gè)用于阻止即使文件很小但是增長幅度很大也去重寫 AOF 文件的情況

# 設(shè)置 percentage 為 0 就關(guān)閉這個(gè)特性

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

################################ LUASCRIPTING #############################

# 一個(gè) Lua 腳本最長的執(zhí)行時(shí)間為 5000 毫秒( 5 秒),如果為 0 或負(fù)數(shù)表示無限執(zhí)行時(shí)間。

lua-time-limit 5000

################################LOW LOG################################

# Redis Slow Log 記錄超過特定執(zhí)行時(shí)間的命令。執(zhí)行時(shí)間不包括 I/O 計(jì)算比如連接客戶端,返回結(jié)果等,只是命令執(zhí)行時(shí)間

# 可以通過兩個(gè)參數(shù)設(shè)置 slow log :一個(gè)是告訴 Redis 執(zhí)行超過多少時(shí)間被記錄的參數(shù) slowlog-log-slower-than( 微妙 ) ,

# 另一個(gè)是 slow log 的長度。當(dāng)一個(gè)新命令被記錄的時(shí)候最早的命令將被從隊(duì)列中移除

# 下面的時(shí)間以微妙為單位,因此 1000000 代表一秒。

# 注意指定一個(gè)負(fù)數(shù)將關(guān)閉慢日志,而設(shè)置為 0 將強(qiáng)制每個(gè)命令都會記錄

slowlog-log-slower-than 10000

# 對日志長度沒有限制,只是要注意它會消耗內(nèi)存

# 可以通過 SLOWLOG RESET 回收被慢日志消耗的內(nèi)存

# 推薦使用默認(rèn)值 128 ,當(dāng)慢日志超過 128 時(shí),最先進(jìn)入隊(duì)列的記錄會被踢出

slowlog-max-len 128

################################ 事件通知 #############################

# 當(dāng)事件發(fā)生時(shí), Redis 可以通知 Pub/Sub 客戶端。

# 可以在下表中選擇 Redis 要通知的事件類型。事件類型由單個(gè)字符來標(biāo)識:

# K Keyspace 事件,以 _keyspace@_ 的前綴方式發(fā)布

# E Keyevent 事件,以 _keysevent@_ 的前綴方式發(fā)布

# g 通用事件(不指定類型),像 DEL, EXPIRE, RENAME, …

# $ String 命令

# s Set 命令

# h Hash 命令

# z 有序集合命令

# x 過期事件(每次 key 過期時(shí)生成)

# e 清除事件(當(dāng) key 在內(nèi)存被清除時(shí)生成)

# A g$lshzxe 的別稱,因此 ”AKE” 意味著所有的事件

# notify-keyspace-events 帶一個(gè)由 0 到多個(gè)字符組成的字符串參數(shù)。空字符串意思是通知被禁用。

# 例子:啟用 list 和通用事件:

# notify-keyspace-events Elg

# 默認(rèn)所用的通知被禁用,因?yàn)橛脩敉ǔ2恍枰奶匦?,并且該特性會有性能損耗。

# 注意如果你不指定至少 K 或 E 之一,不會發(fā)送任何事件。

notify-keyspace-events “”

############################## 高級配置 ###############################

# 當(dāng) hash 中包含超過指定元素個(gè)數(shù)并且最大的元素沒有超過臨界時(shí),

# hash 將以一種特殊的編碼方式(大大減少內(nèi)存使用)來存儲,這里可以設(shè)置這兩個(gè)臨界值

# Redis Hash 對應(yīng) Value 內(nèi)部實(shí)際就是一個(gè) HashMap ,實(shí)際這里會有 2 種不同實(shí)現(xiàn),

# 這個(gè) Hash 的成員比較少時(shí) Redis 為了節(jié)省內(nèi)存會采用類似一維數(shù)組的方式來緊湊存儲,而不會采用真正的 HashMap 結(jié)構(gòu),對應(yīng)的 valueredisObject 的 encoding 為 zipmap,

# 當(dāng)成員數(shù)量增大時(shí)會自動轉(zhuǎn)成真正的 HashMap, 此時(shí) encoding 為 ht 。

hash-max-zipmap-entries 512

hash-max-zipmap-value 64

# 和 Hash 一樣,多個(gè)小的 list 以特定的方式編碼來節(jié)省空間。

# list 數(shù)據(jù)類型節(jié)點(diǎn)值大小小于多少字節(jié)會采用緊湊存儲格式。

list-max-ziplist-entries 512

list-max-ziplist-value 64

# set 數(shù)據(jù)類型內(nèi)部數(shù)據(jù)如果全部是數(shù)值型,且包含多少節(jié)點(diǎn)以下會采用緊湊格式存儲。

set-max-intset-entries 512

# 和 hashe 和 list 一樣 , 排序的 set 在指定的長度內(nèi)以指定編碼方式存儲以節(jié)省空間

# zsort 數(shù)據(jù)類型節(jié)點(diǎn)值大小小于多少字節(jié)會采用緊湊存儲格式。

zset-max-ziplist-entries 128

zset-max-ziplist-value 64

# Redis 將在每 100 毫秒時(shí)使用 1 毫秒的 CPU 時(shí)間來對 redis 的 hash 表進(jìn)行重新 hash ,可以降低內(nèi)存的使用

# 當(dāng)你的使用場景中,有非常嚴(yán)格的實(shí)時(shí)性需要,不能夠接受 Redis 時(shí)不時(shí)的對請求有 2 毫秒的延遲的話,把這項(xiàng)配置為 no 。

# 如果沒有這么嚴(yán)格的實(shí)時(shí)性要求,可以設(shè)置為 yes ,以便能夠盡可能快的釋放內(nèi)存

activerehashing yes

# 客戶端的輸出緩沖區(qū)的限制,因?yàn)槟撤N原因客戶端從服務(wù)器讀取數(shù)據(jù)的速度不夠快,

# 可用于強(qiáng)制斷開連接(一個(gè)常見的原因是一個(gè)發(fā)布 / 訂閱客戶端消費(fèi)消息的速度無法趕上生產(chǎn)它們的速度)。

# 可以三種不同客戶端的方式進(jìn)行設(shè)置:

# normal -> 正常客戶端

# slave -> slave 和 MONITOR 客戶端

# pubsub -> 至少訂閱了一個(gè) pubsub channel 或 pattern 的客戶端

# 每個(gè) client-output-buffer-limit 語法 :

# client-output-buffer-limit

# 一旦達(dá)到硬限制客戶端會立即斷開,或者達(dá)到軟限制并保持達(dá)成的指定秒數(shù)(連續(xù))。

# 例如,如果硬限制為 32 兆字節(jié)和軟限制為 16 兆字節(jié) /10 秒,客戶端將會立即斷開

# 如果輸出緩沖區(qū)的大小達(dá)到 32 兆字節(jié),客戶端達(dá)到 16 兆字節(jié)和連續(xù)超過了限制 10 秒,也將斷開連接。

# 默認(rèn) normal 客戶端不做限制,因?yàn)樗麄冊谝粋€(gè)請求后未要求時(shí)(以推的方式)不接收數(shù)據(jù),

# 只有異步客戶端可能會出現(xiàn)請求數(shù)據(jù)的速度比它可以讀取的速度快的場景。

# 把硬限制和軟限制都設(shè)置為 0 來禁用該特性

client-output-buffer-limit normal 0 0 0

client-output-buffer-limit slave 256mb 64mb60

client-output-buffer-limit pubsub 32mb 8mb60

# Redis 調(diào)用內(nèi)部函數(shù)來執(zhí)行許多后臺任務(wù),如關(guān)閉客戶端超時(shí)的連接,清除過期的 Key ,等等。

# 不是所有的任務(wù)都以相同的頻率執(zhí)行,但 Redis 依照指定的“ Hz ”值來執(zhí)行檢查任務(wù)。

# 默認(rèn)情況下,“ Hz ”的被設(shè)定為 10 。

# 提高該值將在 Redis 空閑時(shí)使用更多的 CPU 時(shí),但同時(shí)當(dāng)有多個(gè) key 同時(shí)到期會使 Redis 的反應(yīng)更靈敏,以及超時(shí)可以更精確地處理。

# 范圍是 1 到 500 之間,但是值超過 100 通常不是一個(gè)好主意。

# 大多數(shù)用戶應(yīng)該使用 10 這個(gè)預(yù)設(shè)值,只有在非常低的延遲的情況下有必要提高最大到 100 。

hz 10

# 當(dāng)一個(gè)子節(jié)點(diǎn)重寫 AOF 文件時(shí),如果啟用下面的選項(xiàng),則文件每生成 32M 數(shù)據(jù)進(jìn)行同步。

aof-rewrite-incremental-fsync yes

8.Redis官方文檔對VM的使用建議:

當(dāng)你的key很小而value很大時(shí),使用VM的效果會比較好.因?yàn)檫@樣節(jié)約的內(nèi)存比較大.

當(dāng)你的key不小時(shí),可以考慮使用一些非常方法將很大的key變成很大的value,比如你可以考慮將key,value組合成一個(gè)新的value.

最好使用linux ext3 等對稀疏文件支持比較好的文件系統(tǒng)保存你的swap文件.

vm-max-threads這個(gè)參數(shù),可以設(shè)置訪問swap文件的線程數(shù),設(shè)置最好不要超過機(jī)器的核數(shù),如果設(shè)置為0,那么所有對swap文件的操作都是串行的.可能會造成比較長時(shí)間的延遲,但是對數(shù)據(jù)完整性有很好的保證.

有了VM功能,Redis終于擺脫了受內(nèi)存容量限制的噩夢了,似乎我們可以稱其為Redis數(shù)據(jù)庫了,我們還可以想象又有多少新的用法可以產(chǎn)生.當(dāng)然,希望這一功能不會對Redis原有的非常牛B的內(nèi)存存儲性能有所影響.

9. redis修改持久化路徑和日志路徑

代碼如下:

vim redis.conf

logfile /data/redis_cache/logs/redis.log #日志路徑

dir /data/redis_cache #持久化路徑,修改后 記得要把dump.rdb持久化文件拷貝到/data/redis_cache下

先殺掉redis,拷貝dump.rdb,啟動

10. 清redis緩存

代碼如下:

./redis-cli #進(jìn)入

dbsize

flushall #執(zhí)行

exit

11. 刪除redis當(dāng)前數(shù)據(jù)庫中的所有Key

代碼如下:

flushdb

12.刪除redis所有數(shù)據(jù)庫中的key

代碼如下:

flushall

更多信息請查看IT技術(shù)專欄

更多信息請查看數(shù)據(jù)庫
易賢網(wǎng)手機(jī)網(wǎng)站地址:redis常用命令、常見錯誤、配置技巧等分享
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國考·省考課程試聽報(bào)名

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)