redis若是提供緩存服務,能夠關閉全部持久化存儲,如此一來redis重啓後全部數據會丟失
開啓rdb或aof持久化存儲,能把redis中的數據持久化到磁盤中。
rdb和aof對性能都有影響,因此建議持久化的操做在從庫上進行前端
#與rdb相關的配置文件信息
dir /data/redis/ #dir爲rdb存儲的路徑
dbfilename dump.rdb #rdb存儲文件的名字
save 60 10000 #60s改變10000key,觸發rdb存儲
save 300 10 #300s改變10個key,觸發rdb存儲
save 900 1 #900s改變1個key觸發rdb存儲
rdbcompression no #rdb壓縮最好關閉,影響cpu
提示:默認狀況下rdb持久化存儲是開啓的python
redis-cli config set save "" #關閉rdb存儲mysql
redis-cli config rewrite #配置保存linux
redis-cli config set save "180 1 120 10 60 10000" #開啓rdbc++
redis-cli config rewrite #配置保存redis
for line in `seq -w 10000`;do redis-cli set key_${line} value1_${line};done
算法
cat /data/redis/redis.logsql
1224:M 31 Dec 23:51:32.345 # CONFIG REWRITE executed with success.
1224:M 31 Dec 23:52:04.342 # CONFIG REWRITE executed with success.
1224:M 31 Dec 23:53:23.603 * 1 changes in 180 seconds. Saving...
#發生了1萬條數據改變180秒內,觸發rdb存儲
1224:M 31 Dec 23:53:23.613 * Background saving started by pid 1246
1246:C 31 Dec 23:53:23.636 * DB saved on disk
1246:C 31 Dec 23:53:23.637 * RDB: 6 MB of memory used by copy-on-write
1224:M 31 Dec 23:53:23.713 * Background saving terminated with success
redis-cli info數據庫
redis-cli info memoryvim
used_memory:848480 --->數據佔用內存大小
used_memory_human:828.59K --->人性化的方式顯示數據佔用內存大小
used_memory_rss:2179072 --->數據和進程佔用大小
used_memory_rss_human:2.08M --->人性化的方式顯示數據和進程佔用大小
used_memory_peak:849456
used_memory_peak_human:829.55K
used_memory_peak_perc:99.89%
used_memory_overhead:836222
used_memory_startup:786592
used_memory_dataset:12258
used_memory_dataset_perc:19.81%
total_system_memory:1021906944
total_system_memory_human:974.57M
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
mem_fragmentation_ratio:2.57 --->redis碎片率(頻繁的寫入刪除,就會產生碎片,刪的越多碎片就會越高),1-2之間表明沒有內存碎片,小於1說明已經佔用虛擬緩存,分配的內存不夠用了
mem_allocator:jemalloc-4.0.3
active_defrag_running:0
lazyfree_pending_objects:0
redis-cli save #會阻塞前端客戶數據輸入
redis-cli bgsave #後臺啓動新進程進行rdb存儲(不影響前端輸入)
cat /data/redis/redis.log
1224:M 31 Dec 23:57:31.841 * DB saved on disk #save觸發的日誌信息
1224:M 31 Dec 23:57:39.821 * Background saving started by pid 11243 #bgsave觸發的信息
11243:C 31 Dec 23:57:39.920 * DB saved on disk #bgsave觸發的信息
11243:C 31 Dec 23:57:39.920 * RDB: 8 MB of memory used by copy-on-write #bgsave觸發的信息
1224:M 31 Dec 23:57:39.985 * Background saving terminated with success #bgsave觸發的信息
redis的appendonly(aof)持久化存儲會把用戶每次的操做都記錄到文件中(相似mysqlbinlog)
redis-cli config set appendonly yes #開啓
redis-cli config rewrite
redis-cli config get appendonly #查詢狀態
redis-cli config set appendonly no #關閉
redis-cli config rewrite
du -sh /data/redis/appendonly.aof
du -sh /data/redis/dump.rdb
for line in `seq -w 100`;do redis-cli set key_${line} value_${line};done
redis-cli config set appendonly yes #開啓
redis-cli config rewrite
du -sh /data/redis/appendonly.aof
du -sh /data/redis/dump.rdb
BGREWRITEAOF
執行一個AOF文件重寫操做。重寫會建立一個當前AOF文件的體積優化版本
即便BGREWRITEAOF執行失敗,也不會有任何數據丟失,由於舊的AOF文件在BGREWRITEAOF成功以前不會被修改。
重寫操做只會在沒有其餘持久化工做在後臺執行時被觸發。
從Redis2.4開始,AOF重寫由Redis自行觸發,BGREWRITEAOF僅僅用於手動觸發重寫操做。
> /data/redis/appendonly.aof
du -sh /data/redis/appendonly.aof
redis-cli bgrewriteaof #手動觸發AOF重寫
du -sh /data/redis/appendonly.aof #redis裏全部數據被重寫入aof
> /data/redis/appendonly.aof
du -sh /data/redis/appendonly.aof
redis-cli set yunjisuan benet
du -sh /data/redis/appendonly.aof
cat /data/redis/appendonly.aof
*2
$6
SELECT #select 0 表示切換到db0
$1
0
*3
$3
set #執行set yunjisuan benet
$9
yunjisuan
$5
benet
redis-cli del yunjisuan benet
cat /data/redis/appendonly.aof
*2
$6
SELECT
$1
0
*3
$3
set
$9
yunjisuan
$5
benet
*3
$3
del #執行del yunjisuan benet
$9
yunjisuan
$5
benet
咱們發現雖然咱們向redis添加了一個key,又刪除了這個key。redis數據庫從本質上來講並無新增任何數據。可是aof文件仍舊把操做都給記錄了。這樣就會致使aof文件最終會很是大。因此aof文件的優化,就是讓aof文件進行重寫,只記錄數據的增量部分。如此aof文件就小不少了。
redis-cli config get auto-aof-rewrite*
auto-aof-rewrite-percentage 100 #默認100%,也就是aof增長一倍後考慮rewrite,兩個條件要同時知足
auto-aof-rewrite-min-size 64mb #默認64mb,也就是aof達到64M後考慮rewirte,兩個條件要同時知足
redis-cli config get auto-aof-rewrite*
1) "auto-aof-rewrite-percentage"
2) "100"
3) "auto-aof-rewrite-min-size"
4) "67108864" #64MB(單位字節)
redis-cli config set auto-aof-rewrite-min-size 100000
redis-cli config get auto-aof-rewrite*
redis-cli config rewrite
> /data/redisappendonly.aof
du -sh /data/redis/appendonly.aof
for line in `seq -w 1000`;do redis-cli set key2_${line} value2_${line};done
du -sh /data/redis/appendonly.aof
for line in `seq -w 1000`;do redis-cli del key2_${line} value2_${line};done
du -sh appendonly.aof
du -sh appendonly.aof
du -sh appendonly.aof
[root@redis01 ~]# du -sh /data/redis/appendonly.aof
128K /data/redis/appendonly.aof
[root@redis01 ~]# du -sh /data/redis/appendonly.aof
128K /data/redis/appendonly.aof
[root@redis01 ~]# du -sh /data/redis/appendonly.aof
128K /data/redis/appendonly.aof
[root@redis01 ~]# du -sh /data/redis/appendonly.aof
92K /data/redis/appendonly.aof #自動觸發了aof重寫機制
redis-cli flushall #手動清空redis裏全部數據
redis-cli set name yunjisuan
redis-cli ttl name
(integer) -1 #-1表明key永久有效redis-cli expire name 10 #設定key 10s有效
(integer) 1redis-cli ttl name #查看key存活剩餘時間
(integer) 8redis-cli ttl name
(integer) 6redis-cli ttl name
(integer) 2redis-cli ttl name
(integer) -2redis-cli get name #key已經被過時清除了
(nil)
redis-cli config get maxmemory
1) "maxmemory"
2) "0" #默認對內存無限制
redis-cli config set maxmemory 1M #限制1M
redis-cli config get maxmemory
1) "maxmemory"
2) "1000000"
volatile-lru:
使用LRU算法刪除鍵(key須要設置過時時間)
volatile-random:
隨機刪除鍵(key須要設置過時時間)
volatile-ttl:
刪除ttl最小的鍵(key須要設置過時時間)
allkeys-lru:
使用LRU算法刪除鍵(全部key)
allkeys-random:
隨機刪除鍵(全部key)
noeviction:
不進行任何的操做,只返回錯誤,默認
redis-cli config get maxmemory-policy #內存清理算法
1) "maxmemory-policy"
2) "noeviction" #默認noeviction
for line in `seq -w 2000`;do redis-cli set key_${line} value_${line};done
測試會發現報錯
(error) OOM command not allowed when used memory > 'maxmemory'.
redis-cli config get maxmemory-policy
redis-cli config set maxmemory-policy volatile-lru
redis-cli config get maxmemory-policy
redis-cli config rewrite
redis-cli get key_0011
redis-cli expire key_0011 3600
redis-cli ttl key_0011
redis-cli get key_0011
說明:由上述測試能夠發現
volatile-lru算法
當內存到了最大值之後,會優先刪除有過時時間的key。
FLUSHALL和FLUSHDB會清除redis的數據,比較危險
KEYS在鍵過多的時候使用會阻塞業務請求
rename-command FLUSHALL "" #將命令更名成空
rename-command FLUSHDB "" #將命令更名成空
rename-command KEYS "" #將命令更名成空
echo 'rename-command FLUSHALL ""' >> /usr/local/redis/conf/redis.conf
echo 'rename-command FLUSHDB ""' >> /usr/local/redis/conf/redis.conf
echo 'rename-command KEYS ""' >> /usr/local/redis/conf/redis.conf
tail -3 /usr/local/redis/conf/redis.conf
redis-cli shutdown
redis-server /usr/local/redis/conf/redis.conf
netstat -antup | grep redis
redis-cli flushall
redis-cli flushdb
redis-cli
127.0.0.1:6379> keys *
(error) ERR unknown command `keys`, with args beginning with: `*`,
在工做中redis主庫不開啓任何持久化,rdb和aof確定是全關閉的,任何影響主庫性能全都關閉。
持久化都是在從上作。
主機名 | IP | 用途 |
---|---|---|
redis01 | 192.168.200.70 | redis-master |
redis02 | 192.168.200.102 | redis-slaveA |
redis03 | 192.168.200.103 | redis-slaveB |
cat /etc/redhat-release
uname -r
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sestatus
yum -y install wget gcc gcc-c++ make tar openssl openssl-devel cmake
tar xf redis-4.0.11.tar.gz -C /usr/src/
cd /usr/src/redis-4.0.11/
make
make MALLOC=jemalloc
make PREFIX=/usr/local/redis install
cd /usr/local/redis/
ls
mkdir -p /usr/local/redis/conf
cp /usr/src/redis-4.0.11/redis.conf /usr/local/redis/conf/
cp /usr/src/redis-4.0.11/sentinel.conf /usr/local/redis/conf/
ln -s /usr/local/redis/bin/* /usr/local/bin/
which redis-server
cd /usr/local/redis
cp conf/redis.conf{,.bak}
egrep -v "^$|^#" conf/redis.conf.bak > conf/redis.conf
mkdir -p /data/redis/ #建立redis數據目錄
cat -n conf/redis.conf | sed -n '1p;3p;4p;7p;9p;11p;21p'
1 bind 127.0.0.1
3 port 6379
4 tcp-backlog 511
7 daemonize no
9 pidfile /var/run/redis_6379.pid
11 logfile ""
21 dir ./
vim conf/redis.conf
cat -n conf/redis.conf | sed -n '1p;3p;4p;7p;9p;11p'
1 bind 0.0.0.0 #監聽地址
3 port 6379 #監聽端口
4 tcp-backlog 1024 #tcp鏈接數
7 daemonize yes #是否後臺啓動
9 pidfile /data/redis/redis.pid #pid存放目錄
11 logfile "/data/redis/redis.log" #日誌存放目錄
21 dir /data/redis/ #工做目錄
echo "* - nofile 10240" >> /etc/security/limits.conf
echo "net.core.somaxconn = 10240" >> /etc/sysctl.conf
echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf
sysctl -p
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local
echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' >> /etc/rc.local
redis-server /usr/local/redis/conf/redis.conf
netstat -antup | grep redis
redis的主從同步,不用修改master任何配置
只須要在redis-slave上指定master的IP地址便可
redis-cli shutdown
echo "SLAVEOF 192.168.200.70 6379" >> /usr/local/redis/conf/redis.conf
> /data/redis/redis.log
redis-server /usr/local/redis/conf/redis.conf
netstat -antup | grep redis
cat /data/redis/redis.log
18341:C 11 Aug 13:56:54.895 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
18341:C 11 Aug 13:56:54.895 # Redis version=4.0.11, bits=64, commit=00000000, modified=0, pid=18341, just started
18341:C 11 Aug 13:56:54.895 # Configuration loaded
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 4.0.11 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 18342
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
18342:S 11 Aug 13:56:54.897 # Server initialized #服務器初始化
18342:S 11 Aug 13:56:54.897 * DB loaded from disk: 0.000 seconds #數據從磁盤加載0秒
18342:S 11 Aug 13:56:54.897 * Ready to accept connections #準備接受鏈接
18342:S 11 Aug 13:56:54.897 * Connecting to MASTER 192.168.200.165:6379 #連接到主192.168.200.165:6379
18342:S 11 Aug 13:56:54.897 * MASTER <-> SLAVE sync started #主從同步開始
18342:S 11 Aug 13:56:54.897 * Non blocking connect for SYNC fired the event. #非阻塞同步鏈接觸發事件
18342:S 11 Aug 13:56:54.898 * Master replied to PING, replication can continue... #主應答,複製能夠繼續
18342:S 11 Aug 13:56:54.898 * Partial resynchronization not possible (no cached master) #部分同步不能(本機無緩存的主文件)
18342:S 11 Aug 13:56:54.899 * Full resync from master: e3adc85bd644e66bd1ee17b49c25e5e0491084d5:0 #進行全同步
18342:S 11 Aug 13:56:54.917 * MASTER <-> SLAVE sync: receiving 43606 bytes from master #從主接收43606字節
18342:S 11 Aug 13:56:54.917 * MASTER <-> SLAVE sync: Flushing old data #刷新舊數據
18342:S 11 Aug 13:56:54.917 * MASTER <-> SLAVE sync: Loading DB in memory #加載數據到內存
18342:S 11 Aug 13:56:54.918 * MASTER <-> SLAVE sync: Finished with success #同步完成
cat /data/redis/redis.log
#從192.168.200.163:6379請求同步
26003:M 11 Aug 14:14:55.342 * Slave 192.168.200.163:6379 asks for synchronization
#從192.168.200.163:6379請求完整的從新同步
26003:M 11 Aug 14:14:55.342 * Full resync requested by slave 192.168.200.163:6379
#master啓動bgsave與目標的磁盤進行同步
26003:M 11 Aug 14:14:55.342 * Starting BGSAVE for SYNC with target: disk
#後臺保存rdb的進程的pid號爲26128
26003:M 11 Aug 14:14:55.342 * Background saving started by pid 26128
#rdb文件已經保存到了磁盤
26128:C 11 Aug 14:14:55.344 * DB saved on disk
#rdb寫時複製使用了0MB的內存
26128:C 11 Aug 14:14:55.344 * RDB: 0 MB of memory used by copy-on-write
#後臺保存成功
26003:M 11 Aug 14:14:55.414 * Background saving terminated with success
#與從192.168.200.163:6379同步成功
26003:M 11 Aug 14:14:55.415 * Synchronization with slave 192.168.200.163:6379 succeeded
> /data/redis/redis.log
> /data/redis/redis.log
redis-cli shutdown
redis-server /usr/local/redis/conf/redis.conf
netstat -antup | grep redis
cat /data/redis/redis.log
18342:S 11 Aug 14:23:27.678 # User requested shutdown...
18342:S 11 Aug 14:23:27.678 * Saving the final RDB snapshot before exiting.
18342:S 11 Aug 14:23:27.681 * DB saved on disk
18342:S 11 Aug 14:23:27.681 * Removing the pid file.
18342:S 11 Aug 14:23:27.681 # Redis is now ready to exit, bye bye...
18417:C 11 Aug 14:24:41.432 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
18417:C 11 Aug 14:24:41.432 # Redis version=4.0.11, bits=64, commit=00000000, modified=0, pid=18417, just started
18417:C 11 Aug 14:24:41.432 # Configuration loaded
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 4.0.11 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 18418
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
#服務器初始化
18418:S 11 Aug 14:24:41.434 # Server initialized
#從磁盤加載舊數據用時0.001秒
18418:S 11 Aug 14:24:41.434 * DB loaded from disk: 0.001 seconds
#因爲以前是一個從庫,利用主的參數合成一個主的緩存,這樣就能夠和主僅僅進行一部分的數據同步
18418:S 11 Aug 14:24:41.434 * Before turning into a slave, using my master parameters to synthesize a cached master: I may be able to synchronize with the new master with just a partial transfer.
#準備接受鏈接
18418:S 11 Aug 14:24:41.434 * Ready to accept connections
#鏈接到master192.168.200.165:6379
18418:S 11 Aug 14:24:41.435 * Connecting to MASTER 192.168.200.165:6379
#主從同步開始
18418:S 11 Aug 14:24:41.435 * MASTER <-> SLAVE sync started
#非阻塞同步鏈接觸發事件
18418:S 11 Aug 14:24:41.435 * Non blocking connect for SYNC fired the event.
#master應答,複製能夠繼續
18418:S 11 Aug 14:24:41.435 * Master replied to PING, replication can continue...
#嘗試進行部分同步(要求646f44ea31d2b057e919e08493f94e97e92007f2:911)
18418:S 11 Aug 14:24:41.435 * Trying a partial resynchronization (request 646f44ea31d2b057e919e08493f94e97e92007f2:911).
#成功進行部分同步
18418:S 11 Aug 14:24:41.436 * Successful partial resynchronization with master.
#master應答接受一個部分同步的請求
18418:S 11 Aug 14:24:41.436 * MASTER <-> SLAVE sync: Master accepted a Partial Resynchronization.
cat /data/redis/redis.log
#一個從庫192.168.200.164:6379請求進行同步
26003:M 11 Aug 14:24:41.424 * Slave 192.168.200.164:6379 asks for synchronization
#一個部分同步的請求來自192.168.200.164:6379,master已經接受請求,從偏移量爲911處開始發送98字節的剩餘數據
26003:M 11 Aug 14:24:41.424 * Partial resynchronization request from 192.168.200.164:6379 accepted. Sending 98 bytes of backlog starting from offset 911.
> /data/redis/redis.log
redis-cli slaveof no one
cat /data/redis/redis.log
#將第二次複製的ID設置爲646f44ea31d2b057e919e08493f94e97e92007f2,有效偏移量:3571。新的複製ID爲efb9d2d393bb0bb4570a2f3144e7b2fbfc60b892
18418:M 11 Aug 14:55:15.723 # Setting secondary replication ID to 646f44ea31d2b057e919e08493f94e97e92007f2, valid up to offset: 3571. New replication ID is efb9d2d393bb0bb4570a2f3144e7b2fbfc60b892
#與主庫失去聯繫
18418:M 11 Aug 14:55:15.723 # Connection with master lost.
#主從狀態緩存斷開
18418:M 11 Aug 14:55:15.723 * Caching the disconnected master state.
#丟棄以前緩存的主的狀態
18418:M 11 Aug 14:55:15.723 * Discarding previously cached master state.
#主模式啓用
18418:M 11 Aug 14:55:15.723 * MASTER MODE enabled (user request from 'id=4 addr=127.0.0.1:39500 fd=8 name= age=0 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=slaveof')
> /data/redis/redis.log
redis-cli slaveof 192.168.200.70 6379
cat /data/redis/redis.log
18418:S 11 Aug 15:02:40.330 * Before turning into a slave, using my master parameters to synthesize a cached master: I may be able to synchronize with the new master with just a partial transfer.
18418:S 11 Aug 15:02:40.330 * SLAVE OF 192.168.200.165:6379 enabled (user request from 'id=5 addr=127.0.0.1:39502 fd=7 name= age=0 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=slaveof')
18418:S 11 Aug 15:02:40.928 * Connecting to MASTER 192.168.200.165:6379
18418:S 11 Aug 15:02:40.928 * MASTER <-> SLAVE sync started
18418:S 11 Aug 15:02:40.928 * Non blocking connect for SYNC fired the event.
18418:S 11 Aug 15:02:40.929 * Master replied to PING, replication can continue...
18418:S 11 Aug 15:02:40.929 * Trying a partial resynchronization (request efb9d2d393bb0bb4570a2f3144e7b2fbfc60b892:3571).
18418:S 11 Aug 15:02:40.929 * Full resync from master: 646f44ea31d2b057e919e08493f94e97e92007f2:4186
18418:S 11 Aug 15:02:40.929 * Discarding previously cached master state.
18418:S 11 Aug 15:02:40.967 * MASTER <-> SLAVE sync: receiving 43607 bytes from master
18418:S 11 Aug 15:02:40.968 * MASTER <-> SLAVE sync: Flushing old data
18418:S 11 Aug 15:02:40.968 * MASTER <-> SLAVE sync: Loading DB in memory
18418:S 11 Aug 15:02:40.970 * MASTER <-> SLAVE sync: Finished with success
redis-cli config get requirepass
redis-cli config set requirepass 'yunjisuan'
redis-cli config get requirepass
redis-cli -a yunjisuan config get requirepass
redis-cli -a yunjisuan config rewrite
cat /data/redis/redis.log
#主從同步須要進行端口驗證請求
18418:S 11 Aug 15:08:40.440 * (Non critical) Master does not understand REPLCONF listening-port: -NOAUTH Authentication required.
18418:S 11 Aug 15:08:40.440 * (Non critical) Master does not
understand REPLCONF capa: -NOAUTH Authentication required.
#部分同步不能,沒有主的緩存
18418:S 11 Aug 15:08:40.440 * Partial resynchronization not possible (no cached master)
#從主發來的意外回覆:須要身份驗證
18418:S 11 Aug 15:08:40.441 # Unexpected reply to PSYNC from master: -NOAUTH Authentication required.
#進行同步重試
18418:S 11 Aug 15:08:40.441 * Retrying with SYNC...
#主從複製終止:須要身份驗證
18418:S 11 Aug 15:08:40.441 # MASTER aborted replication with an error: NOAUTH Authentication required.
redis-cli config get masterauth
redis-cli config set masterauth "yunjisuan"
redis-cli config get masterauth
redis-cli config rewrite
tail -1 /usr/local/redis/conf/redis.conf
cat /data/redis/redis.log
18418:S 11 Aug 15:14:07.854 * Connecting to MASTER 192.168.200.165:6379
18418:S 11 Aug 15:14:07.854 * MASTER <-> SLAVE sync started
18418:S 11 Aug 15:14:07.855 * Non blocking connect for SYNC fired the event.
18418:S 11 Aug 15:14:07.856 * Master replied to PING, replication can continue...
18418:S 11 Aug 15:14:07.858 * Partial resynchronization not possible (no cached master)
18418:S 11 Aug 15:14:07.860 * Full resync from master: 646f44ea31d2b057e919e08493f94e97e92007f2:4648
18418:S 11 Aug 15:14:07.886 * MASTER <-> SLAVE sync: receiving 43607 bytes from master
18418:S 11 Aug 15:14:07.888 * MASTER <-> SLAVE sync: Flushing old data
18418:S 11 Aug 15:14:07.889 * MASTER <-> SLAVE sync: Loading DB in memory
18418:S 11 Aug 15:14:07.893 * MASTER <-> SLAVE sync: Finished with success
18418:S 11 Aug 15:14:18.778 # CONFIG REWRITE executed with success.
yum -y install epel-release
yum -y install python2-pip
pip install redis
python
Python 2.7.5 (default, Apr 11 2018, 07:36:10)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import redis
>>> r = redis.Redis(host='127.0.0.1',port=6379,password='yunjisuan',db=0)
>>> r.set('key_test','value_test')
True
>>> value = r.get('key_test')
>>> print (value)
value_test
>>> exit()
redis-cli -a yunjisuan get key_test
Warning: Using a password with '-a' option on the command line interface may not be safe.
"value_test"