1.設置賬號密碼端口
config set requirepass 123456 設置密碼為123456
config get requirepass 查看賬號密碼
auth 123456 登入的時候輸入這個確定賬號密碼
1. 首先連接到Redis服務器:
```
redis-cli
```
2. 然后使用`CONFIG SET`命令設置`requirepass`參數并指定密碼:
```
CONFIG SET requirepass
```
其中,``是你想要設置的密碼。
3. 最后,使用`SAVE`命令保存配置更改:
```
SAVE
```
CONFIG GET port 查詢redis的端口號
# Redis配置文件樣例
# 單位注意事項:當需要內存大小時,可以指定,它以通常的形式 1k 5GB 4M 等等:
#
# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytes
#
# 單位不區分大小寫,所以 1GB 1Gb 1gB 都是一樣的
############################### INCLUDES(包含) ##############################
#這在你有標準配置模板但是每個redis服務器又需要個性設置的時候很有用。等同import導入
# include /path/to/local.conf
# include /path/to/other.conf
############################## GENERAL(通配)##################################
# 是否在后臺執行,yes:后臺運行;no:不是后臺運行(老版本默認)
daemonize no
# 當Redis以上述守護進程方式運行時,Redis默認會把進程文件寫入/var/run/redis.pid文件
pidfile /var/run/redis.pid
# 是否開啟保護模式。如配置里沒有指定bind和密碼。開啟該參數后,redis只允許本地訪問,拒絕外部訪問
# 要是開啟了密碼和bind,可以開啟。否則最好關閉,設置為no。
protected-mode yes
# Redis監聽端口號,默認為6379,如果指定0端口,表示Redis不監聽TCP連接
port 6379
# 只允許來自bind指定網卡的Redis請求。如沒有指定,則可以接受來自任意一個網卡的Redis請求
# bind 127.0.0.1
#配置unix socket來讓redis支持監聽本地連接。
# unixsocket /var/run/redis/redis.sock
#配置unix socket使用文件的權限
# unixsocketperm 755
# 連接超時時間,單位秒;超過timeout,服務端會斷開連接,為0則服務端不會主動斷開連接,不能小于0
timeout 0
# tcp keepalive參數。如果設置不為0,就使用配置tcp的SO_KEEPALIVE值
# 使用keepalive有兩個好處:
# 1) 檢測掛掉的對端。降低中間設備出問題而導致網絡看似連接卻已經與對端端口的問題。
# 2) 在Linux內核中,設置了keepalive,redis會定時給對端發送ack。檢測到對端關閉需兩倍的設置值
tcp-keepalive 0
# 指定日志記錄級別,四個級別:
# 1) debug:很多信息,方便開發、測試
# 2) verbose:許多有用的信息,但是沒有debug級別信息多(默認)
# 3) notice:適當的日志級別,適合生產環境
# 4) warning:只記錄非常重要/關鍵的消息
loglevel verbose
# 指定日志文件記錄的位置。logfile “”:標準輸出。則日志將會發送給/dev/null
logfile “”
# 是否將日志輸出到系統日志
# syslog-enabled no
# syslog的標識符。
# syslog-ident redis
# 日志的來源、設備;指定系統日志工具。必須是 USER 或介于 LOCAL0-LOCAL7 之間
# syslog-facility local0
# 數據庫的數量,默認數據庫為0。可通過”SELECT [index]“命令指定數據庫
databases 16
########################### SNAPSHOTTING (快照方式) ###########################
# 指定在多長時間內,有多少次更新操作,就將數據同步到數據文件,可以多個條件配合
# 注釋掉“save”這一行配置項就可以讓保存數據庫功能失效
# 900秒(15分鐘)內至少1個key值改變(則進行數據庫保存--持久化)
# 300秒(5分鐘)內至少10個key值改變(則進行數據庫保存--持久化)
# 60秒(1分鐘)內至少10000個key值改變(則進行數據庫保存--持久化)
save 900 1
save 300 10
save 60 10000
# 當RDB持久化出現錯誤后,是否依然進行繼續進行工作,yes:不能進行工作,no:可以繼續進行工作
# 可以通過info中的rdb_last_bgsave_status了解RDB持久化是否有錯誤
stop-writes-on-bgsave-error yes
# 指定存儲至本地數據庫時是否壓縮數據,耗cpu資源,默認為yes,Redis采用LZF壓縮
# 如果為了節省CPU時間,可以關閉該選項,但會導致數據庫文件變的巨大
rdbcompression yes
# 保存rdb文件時,是否進行錯誤檢查校驗。
# 從rdb格式的第五個版本開始,在rdb文件的末尾會帶上CRC64的校驗和。這跟有利于文件的容錯性
# 但是在保存rdb文件的時候,會有大概10%的性能損耗,如果你追求高性能,可以關閉該配置。
rdbchecksum yes
# 指定本地數據庫文件名(rdb文件的名稱),默認值為dump.rdb
dbfilename dump.rdb
# 數據目錄,數據庫的寫入會在這個目錄。rdb、aof文件也會寫在這個目錄
# 指定本地數據庫存放目錄(dump.rdb文件存放目錄),rdb、aof文件也會寫在這個目錄
# 注意,這里只能指定一個目錄,不能指定文件名(文件名由上一個dbfilename配置項指定)
dir ./
############################# REPLICATION(主從復制) #############################
# 主從復制。使用slaveof從 Redis服務器復制一個Redis實例。注意,該配置僅限于當前slave有效
# 設置當本機為slav服務時,設置master服務的ip地址及端口,Redis啟動時,自動從master進行數據同步
# slaveof
# 如master設置了requirepass密碼,slave用此選項指定master認證密碼
# 下文的“requirepass”配置項可以指定密碼
# masterauth
# 從庫同主機失去連接或者復制正在進行,從機庫的兩種運行方式
# 當slave與master之間的連接斷開或slave正在與master進行數據同步時,如果有slave請求
# 1) yes:slave仍然響應請求,此時可能有問題
# 2) no:slave會返回"SYNC with master in progress"錯誤信息。但INFO和SLAVEOF命令除外。
slave-serve-stale-data yes
# 作為從服務器,默認情況下是只讀的(yes),可以修改成NO,用于寫(不建議)。
slave-read-only yes
# 是否使用socket方式復制數據。目前redis復制提供兩種方式,disk和socket。如果新的slave連上來或# 者重連的slave無法部分同步,就會執行全量同步,master會生成rdb文件。
# 有2種方式:
# 1) disk:master創建一個新的進程把rdb文件保存到磁盤,再把磁盤上的rdb文件傳遞給slave。
# 2) socket:master創建一個新的進程,直接把rdb文件以socket的方式發給slave。
# disk方式時,當一個rdb保存的過程中,多個slave都能共享這個rdb文件。
# socket方式就得一個個slave順序復制。在磁盤速度緩慢,網速快的情況下推薦用socket方式。
repl-diskless-sync no
# diskless復制的延遲時間,防止設置為0。一旦復制開始
# 節點不會再接收新slave的復制請求直到下一個rdb傳輸。所以最好等待一段時間,等更多的slave連上來
repl-diskless-sync-delay 5
# slave根據指定的時間間隔向服務器發送ping請求。默認10秒。
# repl-ping-slave-period 10
# 復制連接超時時間。master和slave都有超時時間的設置。
# master檢測到slave上次發送的時間超過repl-timeout,即認為slave離線,清除該slave信息。
# slave檢測到上次和master交互的時間超過repl-timeout,則認為master離線。
# 需注意repl-timeout需設置一個比repl-ping-slave-period更大的值,不然會經常檢測到超時。
# repl-timeout 60
# 是否禁止復制tcp鏈接的tcp nodelay參數,默認是no,即使用tcp nodelay。
# 如master設置了yes,在把數據復制給slave時,會減少包的數量和更小的網絡帶寬。
# 但這也可能帶來數據的延遲。默認我們推薦更小的延遲,但在數據量傳輸很大的場景下,建議選擇yes。
repl-disable-tcp-nodelay no
# 復制緩沖區大小,這是一個環形復制緩沖區,用來保存最新復制的命令。
# 這樣在slave離線時,無需完全復制master的數據,如果可以執行部分同步,只需把緩沖區的部分數據復制# 給slave,就能恢復正常復制狀態。緩沖區的大小越大,slave離線的時間可以更長,復制緩沖區只有在有
# slave連接的時候才分配內存。沒有slave的一段時間,內存會被釋放出來,默認1m。
# repl-backlog-size 5mb
# master沒有slave一段時間會釋放復制緩沖區的內存,repl-backlog-ttl設置該時間長度。單位為秒
# repl-backlog-ttl 3600
# 當master不可用,Sentinel會根據slave的優先級選舉一個master。
# 最低的優先級的slave,當選master。而配置成0,永遠不會被選舉。
slave-priority 100
# master停止寫入的方式,健康的slave的個數小于N,mater就禁止寫入。master最少得有多少個健康的
# slave存活才能執行寫命令。這個配置雖然不能保證N個slave都一定能接收到master的寫操作,
# 但能避免沒有足夠健康的slave時,master不能寫入來避免數據丟失。設置為0是關閉該功能。
# min-slaves-to-write 3
# 延遲小于min-slaves-max-lag 秒的slave才認為是健康的slave。
# min-slaves-max-lag 10
############################## SECURITY(安全) ################################
# 配置redis連接認證密碼
# 如果配置了,則客戶端在連接Redis時需通過auth 命令提供密碼(默認關閉)
# 注意:因為redis太快了,每秒可認證15w次密碼,簡單的很容易被攻破,最好使用一個更復雜的密碼
# requirepass foobared
# 把危險的命令給修改成其他名稱。比如CONFIG命令可以重命名為一個很難被猜到的命令
# 這樣用戶不能使用,而內部工具還能接著使用。
# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
# 設置成一個空的值,可以禁止一個命令
# rename-command CONFIG ""
################################ LIMITS(限制)#################################
# 設置連上redis的最大客戶端連接數量。默認10000。設置0表示不作限制。
# 超出此數,Redis會關閉新的連接并向客戶端返回max Number of clients reached錯誤
# redis不區分連接是客戶端連接還是內部打開文件或和slave連接等,故maxclients最小建議設置到32
# maxclients 10000
# 指定Redis最大內存限制,Redis在啟動時會把數據加載到內存中
# 當內存滿了,配合maxmemory-policy策略進行處理
# 當此方法處理后,仍然到達最大內存設置,將無法再進行寫入操作,但仍然可以進行讀取操作。
# maxmemory
# 內存容量超過maxmemory后的處理策略如下幾種策略:
# 1) volatile-lru:只對設置過期時間的key進行LRU算法刪除(默認)
# 2) allkeys-lru:刪除不經常使用的key
# 3) volatile-random:隨機刪除即將過期的key
# 4) allkeys->random:隨機刪除一個key
# 5) volatile-ttl:刪除即將過期的的key
# 6) noeviction:不移除任何key,對于寫命令返回報錯
# maxmemory-policy volatile-lru
#
# lru檢測的樣本數。
# 使用lru或ttl淘汰算法,從需要淘汰的列表中隨機選擇sample個key,選出閑置時間最長的key移除。
# maxmemory-samples 3
########################## APPEND ONLY MODE (附加模式) ###########################
# AOF持久化,指定是否在每次更新操作后進行日志記錄,默認redis是異步(快照)的把數據寫入本地磁盤
# redis默認使用的是rdb方式持久化,此方式在許多應用中已足夠用。
# 但redis如果中途宕機,會導致可能有幾分鐘的數據丟失,按照上面save條件來策略進行持久化
# Append Only File是另一種持久化方式,可提供更好的持久化特性。
# Redis會把每次寫入的數據在接收后都寫入appendonly.aof 文件
# 每次啟動時Redis都會先把這個文件的數據讀入內存里,先忽略RDB文件。
appendonly no
# 指定aof文件名,默認為appendonly.aof
# appendfilename appendonly.aof
# AOF持久化三種同步策略:
# 1) no:不同步(不執行fsync),數據不會持久化
# 2) always:每次有數據發生變化時都會寫入appendonly.aof(慢,安全)
# 3) everysec:每秒同步一次到appendonly.aof,可能會導致丟失這1s數據(折中選擇,默認值)
appendfsync everysec
# 在AOF重寫或寫入rdb文件時,會執行大量IO
# 對于everysec和always的AOF模式來說,執行fsync會造成阻塞過長時間
# yes:表示rewrite期間對新寫操作不fsync,暫時存在內存中,等rewrite完成后再寫入
# 默認為no,建議yes。Linux的默認fsync策略是30秒。可能丟失30秒數據。
no-appendfsync-on-rewrite no
# AOF自動重寫配置。當目前AOF文件大小超過上一次重寫的aof文件大小的百分之多少進行重寫
# 即當AOF文件增長到一定大小時,Redis能調用bgrewriteaof對日志文件進行重寫。
# 當前AOF文件大小是上次日志重寫得到AOF文件大小的二倍(設置為100)時,自動啟動新的日志重寫過程。
auto-aof-rewrite-percentage 100
# 設置允許重寫的最小AOF文件大小,避免了達到約定百分比但尺寸仍然很小的情況還要重寫
auto-aof-rewrite-min-size 64mb
#aof文件可能在尾部是不完整的,當redis啟動的時候,aof文件的數據被載入內存。重啟可能發生在redis所在的主機操作系統宕機后,尤其在ext4文件系統沒有加上data=ordered選項(redis宕機或者異常終止不會造成尾部不完整現象。)出現這種現象,可以選擇讓redis退出,或者導入盡可能多的數據。如果選擇的是yes,當截斷的aof文件被導入的時候,會自動發布一個log給客戶端然后load。如果是no,用戶必須手動redis-check-aof修復AOF文件才可以。
aof-load-truncated yes
############################ LUA SCRIPTING(LUA 腳本) ###########################
# 如果達到最大時間限制(毫秒),redis會記個log,然后返回error。當一個腳本超過了最大時限。
# 只有SCRIPT KILL和SHUTDOWN NOSAVE可以用。第一個可以殺沒有調write命令的東西。
# 要是已經調用了write,只能用第二個命令殺。
lua-time-limit 5000
############################ REDIS CLUSTER(Redis集群) ###########################
# 集群開關,默認是不開啟集群模式。
# cluster-enabled yes
# 集群配置文件的名稱,每個節點都有一個集群相關的配置文件,持久化保存集群的信息。
# 這個文件無需手動配置,這個配置文件有Redis生成并更新,每個Redis集群節點需要一個單獨的配置文件,# 請確保與實例運行的系統中配置文件名稱不沖突
# cluster-config-file nodes-6379.conf
# 節點互連超時的閥值。集群節點超時毫秒數
# cluster-node-timeout 15000
# 在進行故障轉移時,全部slave會請求申請為master,有些slave可能與master斷開連接一段時間了,
# 導致數據過于陳舊,這種slave不該提升為master。該參數判斷slave與master斷線的時間是否過長。
# 判斷方法是:比較slave斷開連接的時間和
# (node-timeout * slave-validity-factor) + repl-ping-slave-period
# 如果節點超時時間為三十秒, 并且slave-validity-factor為10
# 假設默認的repl-ping-slave-period是10秒,即如果超過310秒slave將不會嘗試進行故障轉移
# cluster-slave-validity-factor 10
# master的slave數量大于該值,slave才能遷移到其他孤立master上,如這個參數若被設為2,
# 那么只有當一個主節點擁有2 個可工作的從節點時,它的一個從節點會嘗試遷移。
# cluster-migration-barrier 1
# 默認情況下,集群全部的slot有節點負責,集群狀態才為ok,才能提供服務。
# 設置為no,可以在slot沒有全部分配的時候提供服務。
# 不建議打開該配置,這樣會造成分區時,小分區的master一直在接受寫請求,而造成很長時間數據不一致。
# cluster-require-full-coverage yes
############################## SLOW LOG (慢日志)#############################
# slog log是用來記錄redis運行中執行比較慢的命令耗時。
# 當命令的執行超過了指定時間,就記錄在slow log中,slog log保存在內存中,所以沒有IO操作。
# 執行時間比slowlog-log-slower-than大的請求記錄到slowlog里面,單位是微秒
# 所以1000000就是1秒。注意,負數時間會禁用慢查詢日志,而0則會強制記錄所有命令。
slowlog-log-slower-than 10000
# 慢查詢日志長度。當一個新的命令被寫進日志時,最老的那個記錄會被刪掉。
# 這個長度沒有限制。只要有足夠的內存就行。你可以通過 SLOWLOG RESET 來釋放內存。
slowlog-max-len 1024
############################ VIRTUAL MEMORY( 虛擬內存) ###########################
# 指定是否啟用虛擬內存機制,默認no,
# VM機制將數據分頁存放,由Redis將訪問量較少的頁即冷數據swap到磁盤上(內存占用多,最好關閉)
# 訪問多的頁面由磁盤自動換出到內存中
vm-enabled no
# 虛擬內存文件位置,默認值為/tmp/redis.swap,不可多個Redis實例共享
# Redis交換文件最好的存儲是SSD(固態硬盤)
vm-swap-file /tmp/redis.swap
# redis使用的最大內存上限,保護redis不會因過多使用物理內存影響性能
# 將大于vm-max-memory的數據存入虛擬內存,但無論設置多少,所有索引數據都是內存存儲的(即keys)
# 當vm-max-memory設置為0時,所有value都存在于磁盤。默認值為0
vm-max-memory 0
# Redis swap文件分成了很多的page,一個對象可以保存在多個page上面
# 但一個page上不能被多個對象共享,vm-page-size是要根據存儲的數據大小來設定的。
# 建議:
# 如果存儲很多小對象,page大小設置為32或64字節;
# 如果存儲很大的對象,則可以使用更大的page,如果不確定,就使用默認值
# 每個頁面的大小設置為32字節
vm-page-size 32
# 設置swap文件中頁面數量
# 由于頁表(一種表示頁面空閑或使用的bitmap)是存放在內存中的,在磁盤上每8個頁將消耗1byte的內存
# swap空間總容量為 vm-page-size * vm-pages
vm-pages 134217728
# 設置訪問swap文件的線程數,最后不要超過機器的核數
# 如果設置為0,那么所有對swap文件的操作都是串行的,可能會造成比較長時間的延遲,默認值為4
vm-max-threads 4
############################ ADVANCED CONFIG(高級配置) ###########################
# 哈希表中元素(條目)總個數
hash-max-zipmap-entries 512
# 哈希表中每個value的長度
hash-max-zipmap-value 64
# list元素
list-max-ziplist-entries 512
# list內某個元素大小
list-max-ziplist-value 64
# set內元素數量
set-max-intset-entries 512
# zset內元素數量
zset-max-ziplist-entries 128
# zset內某個元素大小
zset-max-ziplist-value 64
# value大小
# value大小 > hll-sparse-max-bytes使用稠密的數據結構(dense)。
# 一個比16000大的value是幾乎沒用的,建議的value大概為3000。
# 如果對CPU要求不高,對空間要求較高的,建議設置到10000左右。
hll-sparse-max-bytes 3000
# Redis將在每100毫秒時使用1毫秒的CPU時間來對redis的hash表進行重新hash,可以降低內存的使用。
# 當你的使用場景中,有非常嚴格的實時性需要,不能夠接受Redis時不時的對請求有2毫秒的延遲的話
# 把這項配置為no。如果沒有這么嚴格的實時性要求,可以設置為yes,以便能夠盡可能快的釋放內存。
# 指定是否激活重置哈希,默認為開啟
activerehashing yes
# 對客戶端輸出緩沖進行限制,可以強迫那些不從服務器讀取數據的客戶端斷開連接
# 用來強制關閉傳輸緩慢的客戶端。
# 對于normal client,第一個0表示取消hard limit,第二個0和第三個0表示取消soft limit
# normal client默認取消限制,因為如果沒有尋問,他們是不會接收數據的。
client-output-buffer-limit normal 0 0 0
# 對于slave client和 MONITER client,如果client-output-buffer一旦超過256mb
# 又或者超過64mb持續60秒,那么服務器就會立即斷開客戶端連接。
client-output-buffer-limit slave 256mb 64mb 60
# 對于pubsub client,如果client-output-buffer一旦超過32mb,又或者超過8mb持續60秒,
# 那么服務器就會立即斷開客戶端連接。
client-output-buffer-limit pubsub 32mb 8mb 60
# redis執行任務的頻率為1s除以hz。
hz 10
# 在AOF重寫時,如果打開了aof-rewrite-incremental-fsync開關,系統會每32MB執行一次fsync。
# 這對于把文件寫入磁盤是有幫助的,可以避免過大的延遲峰值。
aof-rewrite-incremental-fsync yes