Redis入門

??Redis是一個(gè)key-value存儲(chǔ)系統(tǒng)。和Memcached類似到逊,它支持存儲(chǔ)的value類型相對(duì)更多铣口,包括string(字符串)、list(鏈表)觉壶、set(集合)脑题、zset(sorted set --有序集合)和hash(哈希類型)。這些數(shù)據(jù)類型都支持push/pop铜靶、add/remove及取交集并集和差集及更豐富的操作叔遂,而且這些操作都是原子性的。在此基礎(chǔ)上争剿,redis支持各種不同方式的排序掏熬。與memcached一樣,為了保證效率秒梅,數(shù)據(jù)都是緩存在內(nèi)存中。區(qū)別的是redis會(huì)周期性的把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件舌胶,并且在此基礎(chǔ)上實(shí)現(xiàn)了master-slave(主從)同步

Redis

開源捆蜀、內(nèi)存存儲(chǔ)、數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)幔嫂;可用作:數(shù)據(jù)庫(kù)辆它、緩存、消息隊(duì)列履恩;
k/v 存儲(chǔ)锰茉,分布式存儲(chǔ)系統(tǒng)
數(shù)據(jù)結(jié)構(gòu):字符串、列表(數(shù)組)切心、hashes(關(guān)聯(lián)數(shù)組)飒筑、集合、有序集合绽昏、bitmaps协屡、hyperloglogs、空間索引全谤;
內(nèi)建的復(fù)制肤晓、Lua scripting、LRU、事務(wù)补憾、持久存儲(chǔ)漫萄、高可用(Sentinel,Redis Cluster)

REmote DIctionary Server:數(shù)據(jù)結(jié)構(gòu)服務(wù)器盈匾,k/v腾务,數(shù)據(jù)結(jié)構(gòu);
    內(nèi)存存儲(chǔ):in-memroy
    持久化
    主從(sentinel)
    Cluster(shard)

數(shù)據(jù)結(jié)構(gòu)服務(wù)器:
    Strings, Lists, Hashs, Sets, Sorted Sets, Bitmaps, Hyperloglogs
    PUB/SUB

Redis是單進(jìn)程:
    但CPU并非瓶頸威酒;

持久化:
    snapshotting  快照持久
    AOF       僅追加文件

Replication:
    主/從
        主:rw
        從:read-only

程序環(huán)境:

配置文件:  /etc/redis.conf
主程序 :  /usr/bin/redis-server
端口  :  6379/tcp
客戶端 :  /usr/bin/redis-cli
Unit File: /usr/lib/systemd/system/redis.service
數(shù)據(jù)目錄    :/var/lib/redis #建議修改窑睁,在/etc/redis.conf文件中修改。
aof檢查工具:/usr/bin/redis-check-aof
rdb快照檢查工具:/usr/bin/redis-check-rdb
redis哨兵的配置:/etc/redis-sentinel.conf
redis哨兵(類似MHA):/usr/bin/redis-sentinel
檢查redis性能:/usr/bin/redis-benchmark
關(guān)閉redis:/usr/bin/redis-shutdown 
Unit File:/usr/lib/systemd/system/redis-sentinel.service

配置文件/etc/redis.conf

INCLUDES        包含其他文件
GENERAL         通用配置項(xiàng)
NETWORK         網(wǎng)絡(luò)配置項(xiàng)
SNAPSHOTTING        持久化相關(guān)配置
REPLICATION     主從同步復(fù)制相關(guān)的配置
SECURITY        安全相關(guān)配置
LIMITS          Limit相關(guān)的配置
APPEND ONLY MODE    持久化配置端葵孤,AOF
LUA SCRIPTING       lua腳本配置項(xiàng)
REDIS CLUSTER       redis集群配置端
SLOW LOG        SlowLog慢日志相關(guān)的配置
LATENCY MONITOR     延遲監(jiān)控配置選項(xiàng)
EVENT NOTIFICATION  事件通知
ADVANCED CONFIG     高級(jí)配置

通用配置項(xiàng):

daemonize   是否守護(hù)進(jìn)程運(yùn)行
supervised  是否與upstart或systemd進(jìn)行交互担钮,默認(rèn)為no
loglevel    日志級(jí)別,可選:debug較詳細(xì)尤仍、verbose信息很少箫津、notice比較詳細(xì)、warning只記錄非常重要/關(guān)鍵信息宰啦,默認(rèn)notice
pidfile     pid文件
logfile     日志文件的位置 
databases:設(shè)定數(shù)據(jù)庫(kù)數(shù)量苏遥,默認(rèn)為16個(gè),每個(gè)數(shù)據(jù)庫(kù)的名字均為整數(shù)赡模,從0開始編號(hào)田炭,默認(rèn)操作的數(shù)據(jù)庫(kù)為0;
    切換數(shù)據(jù)庫(kù)的方法:
             SELECT <dbid>

網(wǎng)絡(luò)配置項(xiàng):

bind IP     #建議綁定本機(jī)漓柑,默認(rèn)127.0.0.1
port PORT   #監(jiān)聽端口
protected-mode  #是否工作于保護(hù)模式教硫,用于避免redis實(shí)例暴露于互聯(lián)網(wǎng),有兩個(gè)判斷條件辆布,沒有指定監(jiān)聽地址瞬矩,沒有設(shè)置認(rèn)證密碼,它將會(huì)把redis監(jiān)聽到127.0.0.1的地址上锋玲。
tcp-backlog #tcp協(xié)議連接的等待隊(duì)列景用,默認(rèn)為511。
unixsocket  #監(jiān)聽的socket文件惭蹂,可選項(xiàng)
timeout     #連接的空閑超時(shí)時(shí)長(zhǎng);
tcp-keepalive   #tcp連接的保持時(shí)間伞插。

安全配置:

requirepass <PASSWORD>      #設(shè)置連接認(rèn)證密碼
rename-command <COMMAND> <NEW_CMND_NAME>#修改config命令的名字,在AOF或Replication環(huán)境中剿干,不推薦使用蜂怎;

Limits相關(guān)的配置:

maxclients      #最大并發(fā)連接數(shù),默認(rèn)為10000
maxmemory <bytes>   #redis可以使用的最大內(nèi)存置尔,建議設(shè)置杠步。
maxmemory-policy    #內(nèi)存淘汰策略,策略如下。
            volatile-lru    #把設(shè)置了過期時(shí)間的key按照LRU算法進(jìn)行淘汰幽歼。
            allkeys-lru #把設(shè)置了所有的key按照LRU算法進(jìn)行淘汰朵锣。
            volatile-random #把設(shè)置了過期時(shí)間的key進(jìn)行隨機(jī)淘汰。
            allkeys-random  #把設(shè)置了所有的key進(jìn)行隨機(jī)淘汰甸私。
            volatile-ttl    #按照Key的ttl時(shí)間進(jìn)行淘汰诚些。
            noeviction  #不啟用    
maxmemory-samples 5 #采用淘汰算法的選取的樣本數(shù),每次淘汰選取這里設(shè)置的值皇型,在這個(gè)值中進(jìn)行運(yùn)算诬烹。

SlowLog相關(guān)的配置:

slowlog-log-slower-than 10000   #單位是微秒;默認(rèn)0.01秒
slowlog-max-len 128     #SlowLog記錄的日志最大條目弃鸦,單位為字節(jié)绞吁;
latency-monitor-threshold 0 #設(shè)置什么時(shí)間啟用延遲監(jiān)視器。0表示一直監(jiān)聽唬格。

ADVANCED配置:

hash-max-ziplist-entries 512    #一個(gè)關(guān)聯(lián)數(shù)組的最大可以有多少個(gè)元素
hash-max-ziplist-value 64   #一個(gè)元素的最大值家破。默認(rèn)為64字節(jié)。
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
client-output-buffer-limit normal 0 0 0     #常規(guī)客戶端的緩存區(qū)大小
client-output-buffer-limit slave 256mb 64mb 60  #從服務(wù)器緩存區(qū)大小
client-output-buffer-limit pubsub 32mb 8mb 60   #訂閱隊(duì)列緩存區(qū)大小
                    #3個(gè)數(shù)字表示:硬限制购岗、軟限制汰聋、軟限制的可超時(shí)時(shí)長(zhǎng)。
aof-rewrite-incremental-fsync yes   #AOF文件是否同步寫入磁盤喊积。默認(rèn)開啟烹困,建議開啟

redis-cli 客戶端工具

用法:redis-cli [OPTIONS] [cmd [arg [arg ...]]]

選項(xiàng)

-h <hostname>   服務(wù)器主機(jī)名(默認(rèn)值:127.0.0.1)。
-p <port>       服務(wù)器端口(默認(rèn)值:6379)乾吻。
-s <socket>     服務(wù)器套接字(覆蓋主機(jī)名和端口)韭邓。
-a <password>   連接到服務(wù)器時(shí)要使用的密碼。
-r <repeat>     執(zhí)行指定的命令N次溶弟。
-i <interval>   使用-r時(shí),每個(gè)命令等待<interval> seconds瞭郑。
                可以指定次級(jí)次辜御,如-i 0.1。
-n <db>         數(shù)據(jù)庫(kù)號(hào)屈张。
-x              從STDIN讀取最后一個(gè)參數(shù)擒权。
-d <delimiter>  用于原始格式的多批量分隔符(默認(rèn)值:\ n)。
-c              啟用群集模式(遵循-ASK和-MOVED重定向)阁谆。
--raw           使用原始格式進(jìn)行回復(fù)(默認(rèn)為STDOUT不是tty)碳抄。
--no-raw        強(qiáng)制格式化輸出,即使STDOUT不是tty
--csv           CSV格式輸出场绿。
--stat          打印關(guān)于服務(wù)器的統(tǒng)計(jì)信息
--slave         模擬顯示從主機(jī)接收的命令的從站剖效。
--rdb filename  將RDB轉(zhuǎn)儲(chǔ)從遠(yuǎn)程服務(wù)器傳輸?shù)奖镜匚募?--pipe          將原始Redis協(xié)議從stdin傳輸?shù)椒?wù)器。
--pipe-timeout n在管道模式下,如果在發(fā)送所有數(shù)據(jù)后發(fā)生錯(cuò)誤璧尸,則在n秒內(nèi)收到回復(fù)咒林。默認(rèn)30
--scan          使用SCAN命令列出所有鍵。
--pattern <pat> 用于--scan來指定掃描模式爷光。
--intrinsic-latency <sec> 運(yùn)行測(cè)試來測(cè)量?jī)?nèi)部系統(tǒng)延遲
--eval <file>   使用Lua腳本在<file>發(fā)送EVAL命令垫竞。
--ldb           與--eval配合使用Redis Lua調(diào)試器。
--ldb-sync-mode 像--ldb一樣蛀序,但是使用同步Lua調(diào)試器欢瞪,在這種模式下,服務(wù)器被阻止徐裸,腳本更改不會(huì)從服務(wù)器內(nèi)存中回滾遣鼓。

切換數(shù)據(jù)庫(kù) select 切換數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)的名字是數(shù)字格式倦逐,不指定默認(rèn)0庫(kù)譬正,默認(rèn)是系統(tǒng)創(chuàng)建了16個(gè)庫(kù)

redis:k/v

key:直接ASCII字符串;
value:strings, lists, hashes, sets, sorted sets, bitmaps, hyperloglogs

幫助

"help @<group>" to get a list of commands in <group>
"help <command>" for help on <command>
"help <tab>" to get a list of possible help topics
"quit" to exit

內(nèi)鍵命令

@generic通用

Redis DEL       該命令用于在key存在是刪除 key檬姥。
Redis Dump      序列化給定key曾我,并返回被序列化的值。
Redis EXISTS        檢查給定key是否存在健民。
Redis Expire        seconds為給定key設(shè)置過期時(shí)間抒巢。
Redis Expireat      EXPIREAT的作用和EXPIRE類似,都用于為key設(shè)置過期時(shí)間秉犹。不同在于EXPIREAT命令接受的時(shí)間參數(shù)是UNIX時(shí)間戳(unix timestamp)蛉谜。
Redis PEXPIREAT     設(shè)置key的過期時(shí)間億以毫秒計(jì)。
Redis PEXPIREAT     設(shè)置key過期時(shí)間的時(shí)間戳(unix timestamp) 以毫秒計(jì)
Redis Keys      查找所有符合給定模式(pattern)的key 崇堵。
Redis Move      將當(dāng)前數(shù)據(jù)庫(kù)的key移動(dòng)到給定的數(shù)據(jù)庫(kù) db 當(dāng)中型诚。
Redis PERSIST       移除key的過期時(shí)間,key將持久保持鸳劳。
Redis Pttl      以毫秒為單位返回key的剩余的過期時(shí)間狰贯。
Redis TTL       以秒為單位,返回給定key的剩余生存時(shí)間(TTL, time to live)赏廓。
Redis RANDOMKEY     從當(dāng)前數(shù)據(jù)庫(kù)中隨機(jī)返回一個(gè) key 涵紊。
Redis Rename        修改key的名稱
Redis Renamenx      僅當(dāng)newkey不存在時(shí),將key改名為newkey 幔摸。
Redis Type      返回key所儲(chǔ)存的值的類型摸柄。

字符串 @String

Redis set(key, value)           給數(shù)據(jù)庫(kù)中名稱為key的string賦予值value 
                                      參數(shù):ex過期時(shí)間,nx如果這個(gè)鍵不存在才新建
Redis Get               獲取指定 key 的值既忆。
Redis Getrange              返回 key 中字符串值的子字符
Redis Getset                將給定 key 的值設(shè)為 value 驱负,并返回 key 的舊值(old value)嗦玖。
Redis Getbit                對(duì) key 所儲(chǔ)存的字符串值,獲取指定偏移量上的位(bit)电媳。
Redis Mget              獲取所有(一個(gè)或多個(gè))給定 key 的值踏揣。
Redis Setbit                對(duì) key 所儲(chǔ)存的字符串值,設(shè)置或清除指定偏移量上的位(bit)匾乓。
Redis Setex                 將值 value 關(guān)聯(lián)到 key 捞稿,并將 key 的過期時(shí)間設(shè)為 seconds 以秒為單位)。
Redis Setnx                 只有在 key 不存在時(shí)設(shè)置 key 的值拼缝。
Redis Setrange              用 value 參數(shù)覆寫給定 key 所儲(chǔ)存的字符串值娱局,從偏移量 offset 開始。
Redis Strlen                返回 key 所儲(chǔ)存的字符串值的長(zhǎng)度咧七。
Redis Mset              同時(shí)設(shè)置一個(gè)或多個(gè) key-value 對(duì)衰齐。
Redis Msetnx                同時(shí)設(shè)置一個(gè)或多個(gè) key-value 對(duì),當(dāng)且僅當(dāng)所有給定 key 都不存在继阻。
Redis Psetex                這個(gè)命令和 SETEX 命令相似耻涛,但它以毫秒為單位設(shè)置 key 的生存時(shí)間,而不是像 SETEX 命令那樣瘟檩,以秒為單位抹缕。
Redis Incr              將 key 中儲(chǔ)存的數(shù)字值增一。
Redis Incrby                將 key 所儲(chǔ)存的值加上給定的增量值(increment) 墨辛。
Redis Incrbyfloat           將 key 所儲(chǔ)存的值加上給定的浮點(diǎn)增量值(increment) 卓研。
Redis Decr              將 key 中儲(chǔ)存的數(shù)字值減一。
Redis Decrby                key 所儲(chǔ)存的值減去給定的減量值(decrement) 睹簇。
Redis Append                如果 key 已經(jīng)存在并且是一個(gè)字符串奏赘, APPEND 命令將 value 追加到 key 原來的值的末尾。
Redis INCRBYFLOAT       基于浮點(diǎn)型
Redis incrby(key, integer)  名稱為key的string增加integer
Redis decrby(key, integer)  名稱為key的string減少integer
Redis append(key, value)    名稱為key的string的值附加value
Redis substr(key, start, end)   返回名稱為key的string的value的子串

Redis 哈希(Hash)

Redis Hdel      刪除一個(gè)或多個(gè)哈希表字段
Redis hexists(key, field)名稱為key的hash中是否存在鍵為field的域
Redis Hget      獲取存儲(chǔ)在哈希表中指定字段的值/td>
Redis hgetall(key)  返回名稱為key的hash中所有的鍵(field)及其對(duì)應(yīng)的value
Redis hincrby(key,field,integer)將名稱為key的hash中field的value增加integer
Redis Hincrbyfloat  為哈希表 key 中的指定字段的浮點(diǎn)數(shù)值加上增量 increment 太惠。
Redis hkeys(key)    返回名稱為key的hash中所有鍵
Redis Hlen      獲取哈希表中字段的數(shù)量
Redis Hmget         獲取所有給定字段的值
Redis Hmset         同時(shí)將多個(gè) field-value (域-值)對(duì)設(shè)置到哈希表 key 中磨淌。
Redis Hset      將哈希表 key 中的字段 field 的值設(shè)為 value 。
Redis Hsetnx        只有在字段 field 不存在時(shí)凿渊,設(shè)置哈希表字段的值伦糯。
Redis hvals(key)    返回名稱為key的hash中所有鍵對(duì)應(yīng)的value

Redis 列表 @list

Redis Blpop             移出并獲取列表的第一個(gè)元素, 如果列表沒有元素會(huì)阻塞列表直到等待超時(shí)或發(fā)現(xiàn)可彈出元素為止嗽元。
Redis Brpop             移出并獲取列表的最后一個(gè)元素, 如果列表沒有元素會(huì)阻塞列表直到等待超時(shí)或發(fā)現(xiàn)可彈出元素為止喂击。
Redis Brpoplpush            從列表中彈出一個(gè)值剂癌,將彈出的元素插入到另外一個(gè)列表中并返回它; 如果列表沒有元素會(huì)阻塞列表直到等待超時(shí)或發(fā)現(xiàn)可彈出元素為止翰绊。
Redis Lindex                通過索引獲取列表中的元素
Redis Linsert               在列表的元素前或者后插入元素
Redis Llen              獲取列表長(zhǎng)度
Redis lpop(key)         返回并刪除名稱為key的list中的首元素
Redis lpush(key, value)     在名稱為key的list頭添加一個(gè)值為value的 元素
Redis Lpushx                將一個(gè)或多個(gè)值插入到已存在的列表頭部
Redis lrange(key,start,end) 返回名稱為key的list中start至end之間的元素
Redis lrem(key,count,value) 刪除count個(gè)key的list中值為value的元素
Redis Lset              通過索引設(shè)置列表元素的值
Redis Ltrim                 對(duì)一個(gè)列表進(jìn)行修剪(trim)佩谷,就是說旁壮,讓列表只保留指定區(qū)間內(nèi)的元素,不在指定區(qū)間之內(nèi)的元素都將被刪除谐檀。
Redis rpop(key)             返回并刪除名稱為key的list中的尾元素
Redis rpoplpush(srckey,dstkey)  返回并刪除名稱為srckey的list的尾元素抡谐,并將該元素添加到名稱為dstkey的list的頭部
Redis rpush(key, value)     在名稱為key的list尾添加一個(gè)值為value的元素
Redis Rpushx                為已存在的列表添加值

無序集合@set

Redis Sadd      向集合添加一個(gè)或多個(gè)成員
Redis Scard     獲取集合的成員數(shù)
Redis Sdiff         返回給定所有集合的差集
Redis Sdiffstore    返回給定所有集合的差集并存儲(chǔ)在 destination 中
Redis Sinter        返回給定所有集合的交集
Redis Sinterstore   返回給定所有集合的交集并存儲(chǔ)在 destination 中
Redis Sismember     判斷 member 元素是否是集合 key 的成員
Redis Smembers      返回集合中的所有成員
Redis Smove         將 member 元素從 source 集合移動(dòng)到 destination 集合
Redis spop(key)     隨機(jī)返回并刪除名稱為key的set中一個(gè)元素
Redis Srandmember   返回集合中一個(gè)或多個(gè)隨機(jī)數(shù)
Redis srem(key,member)  刪除名稱為key的set中的元素member
Redis Sunion        返回所有給定集合的并集
Redis Sunionstore   所有給定集合的并集存儲(chǔ)在 destination 集合中
Redis Sscan     迭代集合中的元素

Redis 有序集合(sorted set)

Redis Zadd      向有序集合添加一個(gè)或多個(gè)成員,或者更新已存在成員的分?jǐn)?shù)
Redis Zcard     獲取有序集合的成員數(shù)
Redis Zcount        計(jì)算在有序集合中指定區(qū)間分?jǐn)?shù)的成員數(shù)
Redis Zincrby       有序集合中對(duì)指定成員的分?jǐn)?shù)加上增量 increment
Redis Zinterstore   計(jì)算給定的一個(gè)或多個(gè)有序集的交集并將結(jié)果集存儲(chǔ)在新的有序集合 key 中
Redis Zlexcount     在有序集合中計(jì)算指定字典區(qū)間內(nèi)成員數(shù)量
Redis Zrange        顯示指定索引范圍內(nèi)的數(shù)據(jù)桐猬,索引自動(dòng)分配麦撵,索引從0開始,但是顯示時(shí)從1開始溃肪。
Redis Zrangebylex   通過字典區(qū)間返回有序集合的成員
Redis Zrangebyscore     通過分?jǐn)?shù)返回有序集合指定區(qū)間內(nèi)的成員
Redis Zrank         返回有序集合中指定成員的索引
Redis Zrem      移除有序集合中的一個(gè)或多個(gè)成員
Redis Zremrangebylex    移除有序集合中給定的字典區(qū)間的所有成員
Redis Zremrangebyrank   移除有序集合中給定的排名區(qū)間的所有成員
Redis Zremrangebyscore  移除有序集合中給定的分?jǐn)?shù)區(qū)間的所有成員
Redis Zrevrange     返回有序集中指定區(qū)間內(nèi)的成員免胃,通過索引,分?jǐn)?shù)從高到底
Redis Zrevrangebyscore  返回有序集中指定分?jǐn)?shù)區(qū)間內(nèi)的成員惫撰,分?jǐn)?shù)從高到低排序
Redis Zrevrank      返回有序集合中指定成員的排名羔沙,有序集成員按分?jǐn)?shù)值遞減(從大到小)排序
Redis Zscore        返回有序集中,成員的分?jǐn)?shù)值
Redis Zunionstore   計(jì)算給定的一個(gè)或多個(gè)有序集的并集厨钻,并存儲(chǔ)在新的 key 中
Redis Zscan         迭代有序集合中的元素(包括元素成員和元素分值)

Redis HyperLogLog

Redis Pfadd         添加指定元素到 HyperLogLog 中扼雏。
Redis Pfcount       返回給定 HyperLogLog 的基數(shù)估算值。
Redis Pgmerge       將多個(gè) HyperLogLog 合并為一個(gè) HyperLogLog

Redis 發(fā)布訂閱 @pubsub

Redis Psubscribe    訂閱一個(gè)或多個(gè)符合給定模式的頻道夯膀。
Redis Pubsub        查看訂閱與發(fā)布系統(tǒng)狀態(tài)诗充。
Redis Publish       將信息發(fā)送到指定的頻道。
Redis Punsubscribe  指示客戶端退訂所有給定模式棍郎。
Redis Subscribe     訂閱給定的一個(gè)或多個(gè)頻道的信息其障。例如 subscribe msg chat_room
Redis Unsubscribe   指示客戶端退訂給定的頻道。
Redis pubsub channels   列出當(dāng)前的活躍頻道 例如PUBSUB CHANNELS news.i*
Redis pubsub numsub 返回給定頻道的訂閱者數(shù)量 例如PUBSUB NUMSUB news.it news.internet news.sport news.music
Redis pubsub numpat 返回客戶端訂閱的所有模式的數(shù)量總和       

Redis 事務(wù) @transactions

Redis Discard       取消事務(wù)涂佃,放棄執(zhí)行事務(wù)塊內(nèi)的所有命令励翼。
Redis Exec      執(zhí)行所有事務(wù)塊內(nèi)的命令。
Redis Multi         標(biāo)記一個(gè)事務(wù)塊的開始辜荠。
Redis Unwatch       取消 WATCH 命令對(duì)所有 key 的監(jiān)視汽抚。
Redis Watch         監(jiān)視一個(gè)(或多個(gè))key ,如果在事務(wù)執(zhí)行之前這個(gè)(或這些)key被其他命令所改動(dòng)伯病,那么事務(wù)將被打斷造烁。

Redis 腳本

Redis Eval      執(zhí)行 Lua 腳本。
Redis Evalsha       執(zhí)行 Lua 腳本午笛。
Redis Script Exists     查看指定的腳本是否已經(jīng)被保存在緩存當(dāng)中惭蟋。
Redis Script Flush  從腳本緩存中移除所有腳本。
Redis Script kill   殺死當(dāng)前正在運(yùn)行的 Lua 腳本药磺。
Redis Script Load   將腳本 script 添加到腳本緩存中告组,但并不立即執(zhí)行這個(gè)腳本。

Redis 連接

Redis Auth      驗(yàn)證密碼是否正確
Redis Echo      打印字符串
Redis Ping      查看服務(wù)是否運(yùn)行
Redis Quit      關(guān)閉當(dāng)前連接
Redis Select        切換到指定的數(shù)據(jù)庫(kù)

Redis 服務(wù)器 @server

Redis Bgrewriteaof  異步執(zhí)行一個(gè) AOF(AppendOnly File) 文件重寫操作
Redis Bgsave        在后臺(tái)異步保存當(dāng)前數(shù)據(jù)庫(kù)的數(shù)據(jù)到磁盤
Redis Client Kill   關(guān)閉客戶端連接
Redis Client List   獲取連接到服務(wù)器的客戶端連接列表
Redis Client Getname    獲取連接的名稱
Redis Client Pause  在指定時(shí)間內(nèi)終止運(yùn)行來自客戶端的命令
Redis Client Setname    設(shè)置當(dāng)前連接的名稱
Redis Cluster Slots     獲取集群節(jié)點(diǎn)的映射數(shù)組
Redis Command       獲取 Redis 命令詳情數(shù)組
Redis Command Count     獲取 Redis 命令總數(shù)
Redis Command Getkeys   獲取給定命令的所有鍵
Redis Time      返回當(dāng)前服務(wù)器時(shí)間
Redis Command Info  獲取指定 Redis 命令描述的數(shù)組
Redis Config Get    獲取指定配置參數(shù)的值
Redis Config Resetstat  重置 INFO 命令中的某些統(tǒng)計(jì)數(shù)據(jù)
Redis Dbsize        返回當(dāng)前數(shù)據(jù)庫(kù)的 key 的數(shù)量
Redis Debug Object  獲取 key 的調(diào)試信息
Redis Debug Segfault    讓 Redis 服務(wù)崩潰
Redis Flushall      刪除所有數(shù)據(jù)庫(kù)的所有key
Redis Flushdb       刪除當(dāng)前數(shù)據(jù)庫(kù)的所有key
Redis Info      獲取Redis服務(wù)器的各種信息和統(tǒng)計(jì)數(shù)值
Redis Lastsave      返回最近一次 Redis 成功將數(shù)據(jù)保存到磁盤上的時(shí)間癌佩,以 UNIX 時(shí)間戳格式表示
Redis Monitor       實(shí)時(shí)打印出 Redis 服務(wù)器接收到的命令
Redis Role      返回主從實(shí)例所屬的角色
Redis save      將數(shù)據(jù)同步保存到磁盤
Redis bgsave        將數(shù)據(jù)異步保存到磁盤
Redis Shutdown      將數(shù)據(jù)集同步保存到磁盤木缝,然后關(guān)閉服務(wù)器
Redis Slaveof       將當(dāng)前服務(wù)器轉(zhuǎn)變?yōu)橹付ǚ?wù)器的從屬服務(wù)器(slave server)
Redis Showlog       管理 redis 的慢日志
Redis Sync      用于復(fù)制功能(replication)的內(nèi)部命令
Redis lastsave      返回上次成功將數(shù)據(jù)保存到磁盤的Unix時(shí)戳
Redis config resetstat重置info命令中的某些統(tǒng)計(jì)數(shù)據(jù)
Redis config get    獲取配置文件信息
Redis config set    動(dòng)態(tài)地調(diào)整Redis服務(wù)器的配置(configuration)而無須重啟便锨,可以修改的配置參數(shù)可以使用命令 CONFIG GET * 來列出
Redis config rewrite    Redis服務(wù)器時(shí)所指定的 redis.conf 文件進(jìn)行改寫

清空數(shù)據(jù)庫(kù):

FLUSHDB:Remove all keys from the current database      清空當(dāng)前數(shù)據(jù)庫(kù);
         FLUSHALL:Remove all keys from all databases   清空所有數(shù)據(jù)庫(kù)我碟;

配置參數(shù)可運(yùn)行是修改放案,redis可以把內(nèi)存中的設(shè)置覆蓋到配置文件。

Redis的持久化:Redis是工作在內(nèi)存中的矫俺。

RDB:snapshotting(快照),

二進(jìn)制格式吱殉;按事先定制的策略,周期性地將數(shù)據(jù)從內(nèi)存同步至磁盤恳守;數(shù)據(jù)文件默認(rèn)為dump.rdb考婴;Redis默認(rèn)使用。

客戶端也可以顯式使用SAVE或BGSAVE命令來手動(dòng)啟動(dòng)快照保存機(jī)制催烘;
    SAVE  :同步沥阱,即在主線程中保存快照,此時(shí)會(huì)阻塞所有客戶端請(qǐng)求伊群;
    GSAVE:異步考杉,Redis啟動(dòng)一個(gè)子進(jìn)程在后臺(tái)中創(chuàng)建快照保存數(shù)據(jù);

配置RDB:

[root@centos7.3 ~]#vim /etc/redis.conf        #編輯配置文件舰始,找到 SNAPSHOTTING 配置段

save 900 1      #在900秒內(nèi)有1個(gè)key發(fā)生變化崇棠,就進(jìn)行快照。
save 300 10     #在300秒內(nèi)有10個(gè)key發(fā)生變化丸卷,就進(jìn)行快照枕稀。
save 60 10000       #在60秒內(nèi)有10000個(gè)key發(fā)生變化,就進(jìn)行快照谜嫉。

三個(gè)策略滿足其中任意一個(gè)均會(huì)觸發(fā)SNAPSHOTTING操作萎坷;900s內(nèi)至少有一個(gè)key有變化,300s內(nèi)至少有10個(gè)key有變化沐兰,60s內(nèi)至少有1W個(gè)key發(fā)生變化哆档;

stop-writes-on-bgsave-error yes     #dump操作出現(xiàn)錯(cuò)誤時(shí),是否禁止新的寫入操作請(qǐng)求住闯;
rdbcompression yes              #快照文件是否進(jìn)行壓縮瓜浸,默認(rèn)開啟
rdbchecksum yes                 #是否對(duì)快照文件進(jìn)行校驗(yàn),默認(rèn)開啟
dbfilename dump.rdb             #指定rdb文件名
dir /var/lib/redis              #rdb文件的存儲(chǔ)路徑

注:上述配置參數(shù)也可以在命令行工具中進(jìn)行修改

AOF:Append Only File, fsync 可以實(shí)現(xiàn)時(shí)間點(diǎn)恢復(fù)比原。

記錄每次寫操作至指定的文件尾部實(shí)現(xiàn)的持久化插佛;
當(dāng)redis重啟時(shí),可通過重新執(zhí)行文件中的命令在內(nèi)存中重建出數(shù)據(jù)庫(kù)量窘;
BGREWRITEAOF:AOF文件重寫雇寇;將同一個(gè)Key的多個(gè)可合并的指令進(jìn)行合并重寫。
不會(huì)讀取正在使用AOF文件,而是通過將內(nèi)存中的數(shù)據(jù)以命令的方式保存至臨時(shí)文件中谢床,完成之后替換原來的AOF文件;

AOF相關(guān)的配置

[root@centos7.3 ~]#vim /etc/redis.conf      #編輯配置文件的APPEND ONLY MODE配置段

appendonly no                       #是否啟用AOF功能
appendfilename "appendonly.aof"         #AOF文件路徑厘线,默認(rèn)在相對(duì)路徑下识腿,redis的工作目錄
appendfsync                     #從內(nèi)存同步到磁盤的規(guī)則,可選參數(shù)如下
                    no      #redis不執(zhí)行主動(dòng)同步操作造壮,而內(nèi)核決定何時(shí)進(jìn)行同步渡讼;
                    everysec    #每秒一次;
                    always      #每語(yǔ)句一次耳璧;
no-appendfsync-on-rewrite no            #是否在后臺(tái)執(zhí)行aof文件重寫期間不調(diào)用fsync進(jìn)行同步成箫,默認(rèn)為no,表示調(diào)用旨枯;
auto-aof-rewrite-percentage 100         #觸發(fā)AOF文件的規(guī)則
auto-aof-rewrite-min-size 64mb
    #上述兩個(gè)條件同時(shí)滿足時(shí)蹬昌,方會(huì)觸發(fā)重寫AOF;與上次aof文件大小相比攀隔,其增長(zhǎng)量超過100%皂贩,且大小不少于64MB; 

aof-load-truncated yes              #是否允許在服務(wù)崩潰再啟動(dòng)后清除AOF文件。

注意:AOF文件在Redis重啟后會(huì)清理原來的AOF文件昆汹。持久機(jī)制本身不能取代備份明刷,應(yīng)該制訂備份策略,對(duì)redis庫(kù)定期備份满粗。

RDB與AOF同時(shí)啟用:

        (1) BGSAVE和BGREWRITEAOF不會(huì)同時(shí)進(jìn)行辈末;
        (2) Redis服務(wù)器啟動(dòng)時(shí)用持久化的數(shù)據(jù)文件恢復(fù)數(shù)據(jù),會(huì)優(yōu)先使用AOF映皆;

主從復(fù)制:

特點(diǎn):

一個(gè)Master可以有多個(gè)slave主機(jī)挤聘,支持鏈?zhǔn)綇?fù)制;
Master以非阻塞方式同步數(shù)據(jù)至slave主機(jī)劫扒;

配置環(huán)境

主服務(wù)器:192.168.166.130
從服務(wù)器1:192.168.166.132
從服務(wù)器2:192.168.166.133
[root@CentOS7.3 ~]#vim /etc/redis.conf 
bind 192.168.166.130          #改為可對(duì)外提供服務(wù)的IP地址
# requirepass admin123  #設(shè)置一個(gè)連接密碼
[root@CentOS7.3 ~]#systemctl start redis
[root@CentOS7.3 ~]#ss -ntl
State       Recv-Q Send-Q      Local Address:Port                     Peer Address:Port              
LISTEN      0      128       192.168.166.130:6379                                *:*                  
LISTEN      0      128                     *:111                                 *:*                  
LISTEN      0      128                     *:22                                  *:*                 
LISTEN      0      128                    :::22                                 :::*                  
LISTEN      0      128                   ::1:631                                :::*    

把另外的兩臺(tái)從服務(wù)器也做同樣的修改檬洞,這里就不予演示了。

配置從服務(wù)器

第一臺(tái)

[root@centos7.3-1 ~]#redis-cli -h 192.168.166.132 -a test1
192.168.166.132:6379> SLAVEOF 192.168.166.130 6379           #指定主服務(wù)器地址IP和端口
OK
192.168.166.132:6379> CONFIG SET masterauth admin123         #指定主服務(wù)器的認(rèn)證密碼
OK

主服務(wù)器

[root@CentOS7.3 ~]#redis-cli -h 192.168.166.130 -a admin123
192.168.166.130:6379> info replication          #查看從服務(wù)器的狀態(tài)
# Replication
role:master
connected_slaves:1                              #slave節(jié)點(diǎn)的數(shù)量
slave0:ip=192.168.166.132,port=6379,state=online,offset=997,lag=1   #slave節(jié)點(diǎn)的信息
master_repl_offset:997
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:996
192.168.166.130:6379> SET name master       #創(chuàng)建一個(gè)key沟饥,鍵名name添怔,值為master
OK

第二臺(tái)

192.168.166.132:6379> get name          #查看name
"master"                                #值為master

通過修改配置文件進(jìn)行配置

[root@centos7.3-2 ~]#vim /etc/redis.conf      #修改配置文件,找到 REPLICATION配置段 

slaveof 192.168.166.130 6379            #添加maste的IP地址和端口
masterauth admin123                     #添加認(rèn)證密碼

再次查看主服務(wù)器

192.168.166.130:6379> info replication
# Replication
role:master
connected_slaves:2                  #slave節(jié)點(diǎn)數(shù)變成了2臺(tái)
slave0:ip=192.168.166.132,port=6379,state=online,offset=2523,lag=1
slave1:ip=192.168.166.133,port=6379,state=online,offset=2523,lag=1  #第二臺(tái)slave節(jié)點(diǎn)的信息
master_repl_offset:2523
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:2522

主從服務(wù)其他配置

slave-serve-stale-data yes      #是否使用不新鮮的內(nèi)容給用戶提供服務(wù)
slave-read-only yes             #從節(jié)點(diǎn)是否為只讀
repl-diskless-sync no           #復(fù)制策略贤旷,參數(shù):no, Disk-backed, Diskless广料,參數(shù)信息如下
        #新的從節(jié)點(diǎn)或某較長(zhǎng)時(shí)間未能與主節(jié)點(diǎn)進(jìn)行同步的從節(jié)點(diǎn)重新與主節(jié)點(diǎn)通信,需要做“full synchronization"幼驶,此時(shí)其同步方式有兩種style:
            Disk-backend:主節(jié)點(diǎn)新創(chuàng)建快照文件于磁盤中艾杏,而后將其發(fā)送給從節(jié)點(diǎn);
            Diskless:主節(jié)點(diǎn)新創(chuàng)建快照后直接通過網(wǎng)絡(luò)套接字文件發(fā)送給從節(jié)點(diǎn)盅藻;為了實(shí)現(xiàn)并行復(fù)制购桑,通常需要在復(fù)制啟動(dòng)前延遲一個(gè)時(shí)間段畅铭;

repl-diskless-sync-delay 5  #復(fù)制啟動(dòng)前延遲一個(gè)時(shí)間段
repl-ping-slave-period 10   #探測(cè)的間隔時(shí)間
repl-timeout 60                 #從節(jié)點(diǎn)的超時(shí)時(shí)間
repl-disable-tcp-nodelay no #是否禁止tcp-nodelay,tcp-nodelay表示等數(shù)據(jù)累計(jì)到一定大小再傳輸勃蜘。
repl-backlog-size 1mb       #復(fù)制的后援隊(duì)列的長(zhǎng)度
repl-backlog-ttl 3600       
slave-priority 100              #復(fù)制集群中硕噩,主節(jié)點(diǎn)故障時(shí),sentinel應(yīng)用場(chǎng)景中的主節(jié)點(diǎn)選舉時(shí)使用的優(yōu)先級(jí)缭贡;數(shù)字越小優(yōu)先級(jí)越高
                                #但0表示不參與選舉炉擅,但是可以投票; 
min-slaves-to-write 3           #主節(jié)點(diǎn)僅允許其能夠通信的從節(jié)點(diǎn)數(shù)量大于等于此處的值時(shí)接受寫操作阳惹;
min-slaves-max-lag 10           #從節(jié)點(diǎn)延遲時(shí)長(zhǎng)超出此處指定的時(shí)長(zhǎng)時(shí)谍失,主節(jié)點(diǎn)會(huì)拒絕寫入操作;
slave-announce-ip 5.5.5.5   #從服務(wù)器宣告自己的ip地址
slave-announce-port 1234    #端口

sentinel:

主要完成三個(gè)功能:監(jiān)控莹汤、通知快鱼、自動(dòng)故障轉(zhuǎn)移

當(dāng)主節(jié)點(diǎn)故障后使用流言協(xié)議、投票協(xié)議來選舉新的master節(jié)點(diǎn)体啰,sentinel最少需要3個(gè)節(jié)點(diǎn)攒巍。

配置文件:/etc/redis-sentinel.conf

程序文件:/usr/bin/redis-sentinel

默認(rèn)端口:26379

配置環(huán)境:使用4臺(tái)主機(jī),一臺(tái)主3臺(tái)從荒勇,在4臺(tái)主機(jī)上面都配置sentinel柒莉,4臺(tái)服務(wù)器的redis連接密碼需要配置為相同的。

配置項(xiàng):

bind                    #sentinel綁定的地址
port 26379              #sentinel服務(wù)的端口
dir /tmp                #sentinel存放臨時(shí)文件的目錄
sentinel monitor <master-name> <ip> <redis-port> <quorum>       #指定主節(jié)點(diǎn)
sentinel auth-pass <master-name> <password>                     #指定認(rèn)證密碼
        #<quorum>表示sentinel集群的quorum機(jī)制沽翔,即至少有quorum個(gè)sentinel節(jié)點(diǎn)同時(shí)判定主節(jié)點(diǎn)故障時(shí)兢孝,才認(rèn)為其真的故障;

sentinel down-after-milliseconds <master-name> <milliseconds>       #監(jiān)控到指定的集群的主節(jié)點(diǎn)異常狀態(tài)持續(xù)多久方才將標(biāo)記為“故障”仅偎;
sentinel parallel-syncs <master-name> <numslaves>                   #指在failover過程中跨蟹,能夠被sentinel并行配置的從節(jié)點(diǎn)的數(shù)量;
sentinel failover-timeout <master-name> <milliseconds>  #默認(rèn)為3分鐘橘沥,單位為毫秒
        #sentinel必須在此指定的時(shí)長(zhǎng)內(nèi)完成故障轉(zhuǎn)移操作窗轩,否則,將視為故障轉(zhuǎn)移操作失敗
sentinel notification-script <master-name> <script-path>            #通知腳本座咆,此腳本被自動(dòng)傳遞多個(gè)參數(shù)痢艺;
logfile /var/log/redis/sentinel.log             #日志

配置示例

[root@centos7.3 ~]#vim /etc/redis-sentinel.conf 
bind 192.168.166.130
port 26379

dir /tmp
sentinel monitor mymaster 192.168.166.130 6379 3
sentinel auth-pass  mymaster admin123
sentinel down-after-milliseconds mymaster 5000
sentinel parallel-syncs mymaster 3
sentinel failover-timeout mymaster 60000



[root@CentOS7.3 ~]#systemctl start redis-sentinel.service 
[root@CentOS7.3 ~]#ss -ntl
State       Recv-Q Send-Q      Local Address:Port                     Peer Address:Port              
LISTEN      0      128             127.0.0.1:26379                               *:*                  
LISTEN      0      128       192.168.166.130:6379                                *:*                  
LISTEN      0      128                     *:22                                  *:*                  
LISTEN      0      128                    :::22                                 :::*
其他的幾臺(tái)服務(wù)器配置同樣的內(nèi)容
注:在sentinel中要配置bind指定地址或認(rèn)證密碼,防止觸發(fā)安全機(jī)制介陶。

設(shè)置從服務(wù)器

[root@centos7.3-1 ~]#redis-cli -a admin123          
127.0.0.1:6379> SLAVEOF 192.168.166.130 6379            #設(shè)置主服務(wù)器的地址和端口
OK
127.0.0.1:6379> CONFIG SET masterauth admin123          #設(shè)置主服務(wù)器的認(rèn)證密碼
OK

其他兩臺(tái)做同樣的設(shè)置
[root@CentOS7.3 ~]#tail -f /var/log/redis/sentinel.log      #查看主服務(wù)器的sentinel日志
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

3157:X 20 Sep 21:02:29.987 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
3157:X 20 Sep 21:02:29.988 # Sentinel ID is b3fa8d852c0bfdd699ebb4b33e56ed4f2d17bf7e
3157:X 20 Sep 21:02:29.988 # +monitor master mymaster 192.168.166.130 6379 quorum 3
3157:X 20 Sep 21:05:40.725 * +slave slave 192.168.166.132:6379 192.168.166.132 6379 @ mymaster 192.168.166.130 6379
3157:X 20 Sep 21:05:45.763 # +sdown slave 192.168.166.132:6379 192.168.166.132 6379 @ mymaster 192.168.166.130 6379
3157:X 20 Sep 21:06:00.833 * +slave slave 192.168.166.136:6379 192.168.166.136 6379 @ mymaster 192.168.166.130 6379
3157:X 20 Sep 21:06:00.835 * +slave slave 192.168.166.133:6379 192.168.166.133 6379 @ mymaster 192.168.166.130 6379
3157:X 20 Sep 21:06:05.841 # +sdown slave 192.168.166.136:6379 192.168.166.136 6379 @ mymaster 192.168.166.130 6379
3157:X 20 Sep 21:06:05.841 # +sdown slave 192.168.166.133:6379 192.168.166.133 6379 @ mymaster 192.168.166.130 6379
# 三臺(tái)從服務(wù)器全部被識(shí)別上線
[root@CentOS7.3 ~]#redis-cli -p 26379           #登陸主服務(wù)器的sentinel
127.0.0.1:26379> sentinel masters               #查看主節(jié)點(diǎn)的信息
1)  1) "name"
    2) "mymaster"
    3) "ip"
    4) "192.168.166.130"                        #主節(jié)點(diǎn)的IP
    5) "port"
    6) "6379"                                   #主節(jié)點(diǎn)的服務(wù)端口
    7) "runid"
    8) "29c83931b3c6c71cc7dc084878b4beef5f9dd308"
    9) "flags"
   10) "master"
   11) "link-pending-commands"
   12) "0"
   13) "link-refcount"
   14) "1"
   15) "last-ping-sent"
   16) "0"
   17) "last-ok-ping-reply"
   18) "1000"
   19) "last-ping-reply"
   20) "1000"
   21) "down-after-milliseconds"
   22) "5000"
   23) "info-refresh"
   24) "3141"
   25) "role-reported"
   26) "master"
   27) "role-reported-time"
   28) "746198"
   29) "config-epoch"
   30) "0"
   31) "num-slaves"
   32) "3"
   33) "num-other-sentinels"
   34) "0"
   35) "quorum"
   36) "3"
   37) "failover-timeout"
   38) "60000"
   39) "parallel-syncs"
   40) "3"
127.0.0.1:26379> sentinel slaves mymaster           #查看從節(jié)點(diǎn)的信息
1)  1) "name"
    2) "192.168.166.136:6379"                       #第一臺(tái)節(jié)點(diǎn)
    3) "ip"
    4) "192.168.166.136"
    5) "port"
    6) "6379"
    7) "runid"
    8) ""
    9) "flags"
   10) "s_down,slave,disconnected"
   11) "link-pending-commands"
   12) "0"
   13) "link-refcount"
   14) "1"
   15) "last-ping-sent"
   16) "568371"
   17) "last-ok-ping-reply"
   18) "568371"
   19) "last-ping-reply"
   20) "568371"
   21) "s-down-time"
   22) "563363"
   23) "down-after-milliseconds"
   24) "5000"
   25) "info-refresh"
   26) "1505913329204"
   27) "role-reported"
   28) "slave"
   29) "role-reported-time"
   30) "568371"
   31) "master-link-down-time"
   32) "0"
   33) "master-link-status"
   34) "err"
   35) "master-host"
   36) "?"
   37) "master-port"
   38) "0"
   39) "slave-priority"
   40) "100"
   41) "slave-repl-offset"
   42) "0"
2)  1) "name"
    2) "192.168.166.133:6379"                       #第二臺(tái)節(jié)點(diǎn)
    3) "ip"
    4) "192.168.166.133"
    5) "port"
    6) "6379"
    7) "runid"
    8) ""
    9) "flags"
   10) "s_down,slave,disconnected"
   11) "link-pending-commands"
   12) "0"
   13) "link-refcount"
   14) "1"
   15) "last-ping-sent"
   16) "568369"
   17) "last-ok-ping-reply"
   18) "568369"
   19) "last-ping-reply"
   20) "568369"
   21) "s-down-time"
   22) "563363"
   23) "down-after-milliseconds"
   24) "5000"
   25) "info-refresh"
   26) "1505913329204"
   27) "role-reported"
   28) "slave"
   29) "role-reported-time"
   30) "568369"
   31) "master-link-down-time"
   32) "0"
   33) "master-link-status"
   34) "err"
   35) "master-host"
   36) "?"
   37) "master-port"
   38) "0"
   39) "slave-priority"
   40) "100"
   41) "slave-repl-offset"
   42) "0"
3)  1) "name"
    2) "192.168.166.132:6379"                   #第三臺(tái)節(jié)點(diǎn)
    3) "ip"
    4) "192.168.166.132"
    5) "port"
    6) "6379"
    7) "runid"
    8) ""
    9) "flags"
   10) "s_down,slave,disconnected"
   11) "link-pending-commands"
   12) "0"
   13) "link-refcount"
   14) "1"
   15) "last-ping-sent"
   16) "588479"
   17) "last-ok-ping-reply"
   18) "588479"
   19) "last-ping-reply"
   20) "588479"
   21) "s-down-time"
   22) "583441"
   23) "down-after-milliseconds"
   24) "5000"
   25) "info-refresh"
   26) "1505913329204"
   27) "role-reported"
   28) "slave"
   29) "role-reported-time"
   30) "588479"
   31) "master-link-down-time"
   32) "0"
   33) "master-link-status"
   34) "err"
   35) "master-host"
   36) "?"
   37) "master-port"
   38) "0"
   39) "slave-priority"
   40) "100"
   41) "slave-repl-offset"
   42) "0"
127.0.0.1:26379> sentinel get-master-addr-by-name  mymaster     #這條命令可以查看當(dāng)前誰是主節(jié)點(diǎn)
1) "192.168.166.130"
2) "6379"

在主節(jié)點(diǎn)上面創(chuàng)建要一個(gè)鍵堤舒,然后在從節(jié)點(diǎn)上面查看有沒有同步

[root@CentOS7.3 ~]#redis-cli -h 192.168.166.130 -a admin123
192.168.166.130:6379> set test1 master
OK
[root@centos7.3-1 ~]#redis-cli -h 192.168.166.132 -a admin123
192.168.166.132:6379> get test1
"master"
[root@centos7.3-2 ~]#redis-cli  -h 192.168.166.133 -a admin123
192.168.166.133:6379> get  test1
"master
[root@centos7.3-2 etc]#redis-cli  -h 192.168.166.136 -a admin123
192.168.166.136:6379> get test1
"master"

切換主節(jié)點(diǎn)

192.168.166.130:26379> sentinel failover mymaster             #使failover命令并指定主節(jié)點(diǎn)的名稱  
OK
192.168.166.130:26379> sentinel get-master-addr-by-name mymaster
1) "192.168.166.136"                    #主節(jié)點(diǎn)已經(jīng)切換為192.168.166.136
2) "6379"

模擬故障

[root@centos7.3-2 etc]#systemctl stop redis             #關(guān)閉192.168.166.136的redis服務(wù)
[root@centos7.3-2 etc]#redis-cli -h 192.168.166.136 -p 26379
192.168.166.136:26379> sentinel get-master-addr-by-name mymaster        #查看當(dāng)前主節(jié)點(diǎn)
1) "192.168.166.133"                #主節(jié)點(diǎn)已經(jīng)切換
2) "6379"

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市哺呜,隨后出現(xiàn)的幾起案子舌缤,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件国撵,死亡現(xiàn)場(chǎng)離奇詭異陵吸,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)介牙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門走越,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人耻瑟,你說我怎么就攤上這事∩退郑” “怎么了喳整?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)裸扶。 經(jīng)常有香客問我框都,道長(zhǎng),這世上最難降的妖魔是什么呵晨? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任魏保,我火速辦了婚禮,結(jié)果婚禮上摸屠,老公的妹妹穿的比我還像新娘谓罗。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著棵里,像睡著了一般勒叠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上淑蔚,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼炊汹。 笑死,一個(gè)胖子當(dāng)著我的面吹牛逃顶,可吹牛的內(nèi)容都是我干的讨便。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼口蝠,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼器钟!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起妙蔗,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤傲霸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體昙啄,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡穆役,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了梳凛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片耿币。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖韧拒,靈堂內(nèi)的尸體忽然破棺而出淹接,到底是詐尸還是另有隱情,我是刑警寧澤叛溢,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布塑悼,位于F島的核電站,受9級(jí)特大地震影響楷掉,放射性物質(zhì)發(fā)生泄漏厢蒜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一烹植、第九天 我趴在偏房一處隱蔽的房頂上張望斑鸦。 院中可真熱鬧,春花似錦草雕、人聲如沸巷屿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)攒庵。三九已至,卻和暖如春败晴,著一層夾襖步出監(jiān)牢的瞬間浓冒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國(guó)打工尖坤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留稳懒,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓慢味,卻偏偏與公主長(zhǎng)得像场梆,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子纯路,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 1.1 資料 或油,最好的入門小冊(cè)子,可以先于一切文檔之前看驰唬,免費(fèi)顶岸。 作者Antirez的博客腔彰,Antirez維護(hù)的R...
    JefferyLcm閱讀 17,050評(píng)論 1 51
  • Redis雜談 Redis是近年來發(fā)展迅速的內(nèi)存數(shù)據(jù)庫(kù),網(wǎng)上也已經(jīng)有多Redis的文章辖佣。但不管是英文還是中文霹抛,多數(shù)...
    迷失于重逢閱讀 1,549評(píng)論 0 14
  • 本文將從Redis的基本特性入手杯拐,通過講述Redis的數(shù)據(jù)結(jié)構(gòu)和主要命令對(duì)Redis的基本能力進(jìn)行直觀介紹。之后概...
    kelgon閱讀 61,158評(píng)論 23 625
  • 你可記得那些日子的艷陽(yáng)世蔗?你可記得教官英武的臉龐端逼?你可記得當(dāng)初的抱怨?你可記得萬事大吉的瞬間污淋? 我只說我裳食,像經(jīng)歷了一...
    逸黎閱讀 220評(píng)論 0 5
  • 這是選擇23:30睡,07:30起的第18/100芙沥,上圖: 照常12:31睡,23點(diǎn)開始看《風(fēng)雨哈佛路》浊吏,主要因?yàn)?..
    澤陽(yáng)9閱讀 249評(píng)論 1 1