亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

redis集群詳解

Redis有三種集群模式,分別是:

* 主從模式 
* Sentinel模式
 * Cluster模式

三種集群模式各有特點(diǎn),關(guān)于Redis介紹可以參考這里:NoSQL(二)——Redis

Redis官網(wǎng):https://redis.io/ ,最新版本5.0.4


主從模式

主從模式介紹

主從模式是三種模式中最簡(jiǎn)單的,在主從復(fù)制中,數(shù)據(jù)庫分為兩類:主數(shù)據(jù)庫(master)和從數(shù)據(jù)庫(slave)。

其中主從復(fù)制有如下特點(diǎn):

* 主數(shù)據(jù)庫可以進(jìn)行讀寫操作,當(dāng)讀寫操作導(dǎo)致數(shù)據(jù)變化時(shí)會(huì)自動(dòng)將數(shù)據(jù)同步給從數(shù)據(jù)庫 
  * 從數(shù)據(jù)庫一般都是只讀的,并且接收主數(shù)據(jù)庫同步過來的數(shù)據(jù) 
  * 一個(gè)master可以擁有多個(gè)slave,但是一個(gè)slave只能對(duì)應(yīng)一個(gè)master
  * slave掛了不影響其他slave的讀和master的讀和寫,重新啟動(dòng)后會(huì)將數(shù)據(jù)從master同步過來 
  * master掛了以后,不影響slave的讀,但redis不再提供寫服務(wù),master重啟后redis將重新對(duì)外提供寫服務(wù) 
  * master掛了以后,不會(huì)在slave節(jié)點(diǎn)中重新選一個(gè)master

工作機(jī)制:

當(dāng)slave啟動(dòng)后,主動(dòng)向master發(fā)送SYNC命令。master接收到SYNC命令后在后臺(tái)保存快照(RDB持久化)和緩存保存快照這段時(shí)間的命令,然后將保存的快照文件和緩存的命令發(fā)送給slave。slave接收到快照文件和命令后加載快照文件和緩存的執(zhí)行命令。

復(fù)制初始化后,master每次接收到的寫命令都會(huì)同步發(fā)送給slave,保證主從數(shù)據(jù)一致性。

安全設(shè)置:

當(dāng)master節(jié)點(diǎn)設(shè)置密碼后,

客戶端訪問master需要密碼
 啟動(dòng)slave需要密碼,在配置文件中配置即可 
客戶端訪問slave不需要密碼

缺點(diǎn):

從上面可以看出,master節(jié)點(diǎn)在主從模式中唯一,若master掛掉,則redis無法對(duì)外提供寫服務(wù)。

主從模式搭建

  • 環(huán)境準(zhǔn)備
master節(jié)點(diǎn) 192.168.30.128 slave
節(jié)點(diǎn) 192.168.30.129 slave
節(jié)點(diǎn) 192.168.30.130
  • 全部下載安裝:
# cd /software
# wget http://download.redis.io/releases/redis-5.0.4.tar.gz
# tar zxf redis-5.0.4.tar.gz && mv redis-5.0.4/ /usr/local/redis
# cd /usr/local/redis && make && make install 
# echo $? 0
  • 全部配置成服務(wù):

服務(wù)文件

# vim /usr/lib/systemd/system/redis.service[Unit]Description=Redis persistent key-value database After=network.target After=network-online.target Wants=network-online.target[Service]ExecStart=/usr/local/bin/redis-server /usr/local/redis/redis.conf --supervised systemd ExecStop=/usr/libexec/redis-shutdown Type=notify User=redis Group=redis RuntimeDirectory=redis RuntimeDirectoryMode=0755[Install]WantedBy=multi-user.target

shutdown腳本

# vim /usr/libexec/redis-shutdown#!/bin/bash## WrApper to close properly redis and sentineltest x"$REDIS_DEBUG" != x && set -x


   REDIS_CLI=/usr/local/bin/redis-cli# Retrieve service nameSERVICE_NAME="$1"if [ -z "$SERVICE_NAME" ]; then
   SERVICE_NAME=redisfi# Get the proper config file based on service nameCONFIG_FILE="/usr/local/redis/$SERVICE_NAME.conf"# Use awk to retrieve host, port from config fileHOST=`awk '/^[[:blank:]]*bind/ { print $2 }' $CONFIG_FILE | tail -n1`PORT=`awk '/^[[:blank:]]*port/ { print $2 }' $CONFIG_FILE | tail -n1`PASS=`awk '/^[[:blank:]]*requirepass/ { print $2 }' $CONFIG_FILE | tail -n1`SOCK=`awk '/^[[:blank:]]*unixsockets/ { print $2 }' $CONFIG_FILE | tail -n1`# Just in case, use default host, portHOST=${HOST:-127.0.0.1}if [ "$SERVICE_NAME" = redis ]; then
    PORT=${PORT:-6379}else
    PORT=${PORT:-26739}fi# Setup additional parameters# e.g password-protected redis instances[ -z "$PASS"  ] || ADDITIONAL_PARAMS="-a $PASS"# shutdown the service properlyif [ -e "$SOCK" ] ; then
        $REDIS_CLI -s $SOCK $ADDITIONAL_PARAMS shutdownelse
        $REDIS_CLI -h $HOST -p $PORT $ADDITIONAL_PARAMS shutdownfi123456789101112131415161718192021222324252627282930313233343536373839404142
# chmod +x /usr/libexec/redis-shutdown# useradd -s /sbin/nologin redis# chown -R redis:redis /usr/local/redis# chown -R reids:redis /data/redis# yum install -y bash-completion && source /etc/profile                 #命令補(bǔ)全# systemctl daemon-reload# systemctl enable redis
  • 修改配置:

192.168.30.128

# mkdir -p /data/redis # vim /usr/local/redis/redis.conf bind 192.168.30.128 
#監(jiān)聽ip,多個(gè)ip用空格分隔 daemonize yes 
#允許后臺(tái)啟動(dòng) logfile "/usr/local/redis/redis.log"
#日志路徑 dir /data/redis #數(shù)據(jù)庫備份文件存放目錄 masterauth 123456 
#slave連接master密碼,master可省略 requirepass 123456 #設(shè)置master連接密碼,slave可省略 appendonly yes 
#在/data/redis/目錄生成appendonly.aof文件,將每一次寫操作請(qǐng)求都追加到appendonly.aof 文件中
# echo 'vm.overcommit_memory=1' >> /etc/sysctl.conf # sysctl -p

192.168.30.129

# mkdir -p /data/redis 
# vim /usr/local/redis/redis.conf bind 192.168.30.129 daemonize yes logfile "/usr/local/redis/redis.log" dir /data/redis replicaof 192.168.30.128 6379 masterauth 123456 requirepass 123456 appendonly yes 
# echo 'vm.overcommit_memory=1' >> /etc/sysctl.conf
# sysctl -p

192.168.30.130

# mkdir -p /data/redis
# vim /usr/local/redis/redis.conf bind 192.168.30.130 daemonize yes logfile "/usr/local/redis/redis.log" dir /data/redis replicaof 192.168.30.128 6379 masterauth 123456 requirepass 123456 appendonly yes 
# echo 'vm.overcommit_memory=1' >> /etc/sysctl.conf 
# sysctl -p
  • 全部啟動(dòng)redis:
# systemctl start redis
  • 查看集群狀態(tài):
# redis-cli -h 192.168.30.128 -a 123456 Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. 192.168.30.128:6379> info replication 
# Replication role:master connected_slaves:2 slave0:ip=192.168.30.129,port=6379,state=online,offset=168,lag=1 slave1:ip=192.168.30.130,port=6379,state=online,offset=168,lag=1 master_replid:fb4941e02d5032ad74c6e2383211fc58963dbe90 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:168 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:168
# redis-cli -h 192.168.30.129 -a 123456 info replication Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. # Replication role:slave master_host:192.168.30.128 master_port:6379 master_link_status:up master_last_io_seconds_ago:1 master_sync_in_progress:0 slave_repl_offset:196 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:fb4941e02d5032ad74c6e2383211fc58963dbe90 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:196 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:196

數(shù)據(jù)演示

192.168.30.128:6379> keys *
(empty list or set)

192.168.30.128:6379> set key1 100
OK

192.168.30.128:6379> set key2 lzx
OK

192.168.30.128:6379> keys *
1) "key1"
2) "key2"
123456789101112
# redis-cli -h 192.168.30.129 -a 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.

192.168.30.129:6379> keys *
1) "key2"
2) "key1"

192.168.30.129:6379> CONFIG GET dir
1) "dir"
2) "/data/redis"

192.168.30.129:6379> CONFIG GET dbfilename
1) "dbfilename"
2) "dump.rdb"

192.168.30.129:6379> get key1
"100"

192.168.30.129:6379> get key2
"lzx"

192.168.30.129:6379> set key3 aaa
(error) READONLY You can't write against a read only replica.
1234567891011121314151617181920212223
# redis-cli -h 192.168.30.130 -a 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.

192.168.30.130:6379> keys *
1) "key2"
2) "key1"

192.168.30.130:6379> CONFIG GET dir
1) "dir"
2) "/data/redis"

192.168.30.130:6379> CONFIG GET dbfilename
1) "dbfilename"
2) "dump.rdb"

192.168.30.130:6379> get key1
"100"

192.168.30.130:6379> get key2
"lzx"

192.168.30.130:6379> set key3 aaa
(error) READONLY You can't write against a read only replica.

可以看到,在master節(jié)點(diǎn)寫入的數(shù)據(jù),很快就同步到slave節(jié)點(diǎn)上,而且在slave節(jié)點(diǎn)上無法寫入數(shù)據(jù)。

Sentinel模式

Sentinel模式介紹

主從模式的弊端就是不具備高可用性,當(dāng)master掛掉以后,Redis將不能再對(duì)外提供寫入操作,因此sentinel應(yīng)運(yùn)而生。

sentinel中文含義為哨兵,顧名思義,它的作用就是監(jiān)控redis集群的運(yùn)行狀況,特點(diǎn)如下

功能作用

  1. 監(jiān)控(monitoring):Sentinel 會(huì)不斷地檢查你的主服務(wù)器和從服務(wù)器是否運(yùn)作正常。
  2. 提醒(Notifation):當(dāng)被監(jiān)控的某個(gè) Redis 服務(wù)器出現(xiàn)問題時(shí), Sentinel 可以通過 API 向管理員或者其他應(yīng)用程序發(fā)送通知。
  3. 自動(dòng)故障轉(zhuǎn)移(Automatic failover):當(dāng)一個(gè)主服務(wù)器不能正常工作時(shí), Sentinel 會(huì)開始一次自動(dòng)故障遷移操作, 它會(huì)將失效主服務(wù)器的其中一個(gè)從服務(wù)器升級(jí)為新的主服務(wù)器, 并讓失效主服務(wù)器的其他從服務(wù)器改為復(fù)制新的主服務(wù)器; 當(dāng)客戶端試圖連接失效的主服務(wù)器時(shí), 集群也會(huì)向客戶端返回新主服務(wù)器的地址, 使得集群可以使用新主服務(wù)器代替失效服務(wù)器。

 

部署

  同樣,我們還是將每個(gè)哨兵部署在一個(gè)單獨(dú)的容器中。

  sentinel配置文件

  redis-sentinel1:https://github.com/Johnson19900110/johnsondock/blob/master/redis-sentinel/config/sentinel.conf
  redis-sentinel2:https://github.com/Johnson19900110/johnsondock/blob/master/redis-sentinel/config/sentinel-slave1.conf
  redis-sentinel3:https://github.com/Johnson19900110/johnsondock/blob/master/redis-sentinel/config/sentinel-slave2.conf

  這三個(gè)配置文件一模一樣,都是監(jiān)聽master的。要不你把這個(gè)配置文件copy到容器中,要不你就創(chuàng)建三份,分別掛載到容器中,這里選擇了后面一種方法。

  這里介紹幾個(gè)基本的配置

    sentinel monitor mymaster redis 6379 2 監(jiān)聽的master的容器別名為redis,端口是6379,最后面的2是當(dāng)大于等于2個(gè)哨兵認(rèn)為master主觀下線后(無論這個(gè)值為多少,至少得有一半以上的哨兵判定master主觀下線后,master才會(huì)被客觀下線),master才會(huì)被客觀下線,這是sentinel重新從slave中選舉一個(gè)來當(dāng)master。

    sentinel auth-pass mymaster 123456 如果master配置了密碼,則此項(xiàng)必須配置,否則sentinel會(huì)將master標(biāo)記問主觀下線(sdown)。

 

  Docker-composer配置文件

### REDIS-SENTINEL ################################################
  # master
  redis-sentinel:
    image: johnson19900110/redis-sentinel:latest
    restart: always  #如果master未開啟數(shù)據(jù)持久化,此項(xiàng)應(yīng)該刪除
    volumes:
      - ./redis-sentinel/config/sentinel.conf:/usr/local/etc/redis/redis-sentinel.conf
    networks:
      - backend
    depends_on:
      - redis

  # redis sentinel slave 1
  redis-sentinel-slave1:
    image: johnson19900110/redis-sentinel:latest
    restart: always
    volumes:
      - ./redis-sentinel/config/sentinel-slave1.conf:/usr/local/etc/redis/redis-sentinel.conf
    networks:
      - backend
    depends_on:
      - redis-slave1
      - redis-sentinel

  # redis sentinel slave 2
  redis-sentinel-slave2:
    image: johnson19900110/redis-sentinel:latest
    restart: always
    volumes:
      - ./redis-sentinel/config/sentinel-slave2.conf:/usr/local/etc/redis/redis-sentinel.conf
    networks:
      - backend
    depends_on:
      - redis-slave2
      - redis-sentinel-slave1

  

  啟動(dòng)容器

docker-compose up -d redis-sentinel-slave2

執(zhí)行以上命令后,就啟動(dòng)了三個(gè)哨兵模式的容器

Redis集群做法的難點(diǎn),百萬并發(fā)客戶端「實(shí)戰(zhàn)」

 

這是我們進(jìn)入容器,查看是否redis-sentinel是否在工作。

Redis集群做法的難點(diǎn),百萬并發(fā)客戶端「實(shí)戰(zhàn)」

 

我們可看到,已經(jīng)與master建立連接,通過status=ok可以知道,master正在正常工作,并且有2個(gè)從節(jié)點(diǎn)和3個(gè)哨兵節(jié)點(diǎn)。現(xiàn)在你再打開sentinel的配置文件,會(huì)發(fā)現(xiàn)發(fā)生了改變。

Redis集群做法的難點(diǎn),百萬并發(fā)客戶端「實(shí)戰(zhàn)」

 

conf文件被重寫了,并且哨兵模式會(huì)自動(dòng)檢測(cè)到master的兩個(gè)slave和另外兩個(gè)sentinel。

 

故障演示

  1、使master宕機(jī),只需要關(guān)閉master的容器即可。

Redis集群做法的難點(diǎn),百萬并發(fā)客戶端「實(shí)戰(zhàn)」

 

如果此時(shí)再去三個(gè)哨兵節(jié)點(diǎn)里用info sentinel查看信息。

Redis集群做法的難點(diǎn),百萬并發(fā)客戶端「實(shí)戰(zhàn)」

 

會(huì)發(fā)現(xiàn)這時(shí)候master節(jié)點(diǎn)的address信息變了,這就說明哨兵模式起作用了。但他這里還是顯示新的master有兩個(gè)slave。是因?yàn)樵璵aster節(jié)點(diǎn)宕機(jī)了,一旦它重啟,sentinel就會(huì)把它變成新的master節(jié)點(diǎn)的slave節(jié)點(diǎn)。我們可以去172.18.0.6這個(gè)容器中看下。

Redis集群做法的難點(diǎn),百萬并發(fā)客戶端「實(shí)戰(zhàn)」

 

可以用以上docker命令查看容器的IP地址。進(jìn)入容器后,還是在redis-cli下用info replication查看信息。

Redis集群做法的難點(diǎn),百萬并發(fā)客戶端「實(shí)戰(zhàn)」

 

我們可以看到這個(gè)slave變成了新的master,另外一個(gè)slave也變成了新master節(jié)點(diǎn)的slave。如果你查看redis節(jié)點(diǎn)的配置文件,會(huì)發(fā)現(xiàn)也被重寫了。 這是我們?cè)僦貑⒃璵aster節(jié)點(diǎn)試試(注意:當(dāng)他重啟成功后,就變成了slave節(jié)點(diǎn),所以要打開持久化配置)。

Redis集群做法的難點(diǎn),百萬并發(fā)客戶端「實(shí)戰(zhàn)」

 

當(dāng)容器重啟成功后,我們?cè)偃バ碌膍aster節(jié)點(diǎn)中使用info replication查看下。

Redis集群做法的難點(diǎn),百萬并發(fā)客戶端「實(shí)戰(zhàn)」

 

正如我們所料,它成為了新的master的slave節(jié)點(diǎn)。如果你查看原master的配置文件,會(huì)發(fā)現(xiàn)多了

Redis集群做法的難點(diǎn),百萬并發(fā)客戶端「實(shí)戰(zhàn)」

 

最后,因?yàn)樾碌膍aster節(jié)點(diǎn)是slave節(jié)點(diǎn)升級(jí)的,所以他的持久化配置還是存在的,如果你想要關(guān)掉它,只需要進(jìn)入redis-cli,然后執(zhí)行

Redis集群做法的難點(diǎn),百萬并發(fā)客戶端「實(shí)戰(zhàn)」

 

至此,一次redis的master節(jié)點(diǎn)故障轉(zhuǎn)移就演示完成了。這次演示實(shí)現(xiàn)了redis的監(jiān)控自動(dòng)故障轉(zhuǎn)移特性。

提醒特性是使用的訂閱功能,需要后端代碼開發(fā)配合的。

Cluster模式

部署

  • 這里使用ruby部署redis cluster,首先下載安裝,只需要在一臺(tái)服務(wù)器上安裝即可
    yum install rubyyum install rubygems
  • 下載ruby運(yùn)行需要的包,這里是redis-3.3.5.gem,安裝
    gem install redis-3.3.5.gem
  • 拷貝redis/src/redis-trib.rb 到redis安裝目的,我這里是/data/service/bin/
  • 這里需要6臺(tái)服務(wù)器,為了方便,每一臺(tái)服務(wù)器上起2個(gè)服務(wù),端口分別是6379,6380
  • 修改每一個(gè)redis.conf(6臺(tái)都需要),注釋掉cluster-enabled yes
  • 請(qǐng)啟動(dòng)每一個(gè)redis服務(wù)
創(chuàng)建啟動(dòng)集群的啟動(dòng)腳本,內(nèi)容如下:
/redis-trib.rb create --replicas 1 192.168.25.128:7001 192.168.25.128:7002 192.168.25.128:7003 192.168.25.128:7004 192.168.25.128:7005 192.168.25.128:7006
執(zhí)行此腳本Creating cluster
Connecting to node 192.168.25.128:7001: OK
Connecting to node 192.168.25.128:7002: OK
Connecting to node 192.168.25.128:7003: OK
Connecting to node 192.168.25.128:7004: OK
Connecting to node 192.168.25.128:7005: OK
Connecting to node 192.168.25.128:7006: OKPerforming hash slots allocation on 6 nodes…
Using 3 masters:
192.168.25.128:7001
192.168.25.128:7002
192.168.25.128:7003
Adding replica 192.168.25.128:7004 to 192.168.25.128:7001
Adding replica 192.168.25.128:7005 to 192.168.25.128:7002
Adding replica 192.168.25.128:7006 to 192.168.25.128:7003
M: 2e48ae301e9c32b04a7d4d92e15e98e78de8c1f3 192.168.25.128:7001
slots:0-5460 (5461 slots) master
M: 8cd93a9a943b4ef851af6a03edd699a6061ace01 192.168.25.128:7002
slots:5461-10922 (5462 slots) master
M: 2935007902d83f20b1253d7f43dae32aab9744e6 192.168.25.128:7003
slots:10923-16383 (5461 slots) master
S: 74f9d9706f848471583929fc8bbde3c8e99e211b 192.168.25.128:7004
replicates 2e48ae301e9c32b04a7d4d92e15e98e78de8c1f3
S: 42cc9e25ebb19dda92591364c1df4b3a518b795b 192.168.25.128:7005
replicates 8cd93a9a943b4ef851af6a03edd699a6061ace01
S: 8b1b11d509d29659c2831e7a9f6469c060dfcd39 192.168.25.128:7006
replicates 2935007902d83f20b1253d7f43dae32aab9744e6
Can I set the above configuration? (type ‘yes’ to accept): yesNodes configuration updated
。。。。。。。。。。省略。。。。。。
test it!
注意:
可能遇到到問題
1、xxx is not Empty,請(qǐng)停著個(gè)xxx的節(jié)點(diǎn),刪除bin目錄下的dump.rdb,notes.conf,note6380.conf,必要時(shí)刪除/var/run/redis.pid
2、cannot connect to xxxx,你著redis配置密碼了,在ruby的client里面寫上你配置的密碼,具體怎么找這個(gè)文件,find命令
3、執(zhí)行集群?jiǎn)?dòng)基本一直卡在:Waiting for the cluster to join …,請(qǐng)?jiān)谀惴?wù)器上開啟16379和16380端口,反正就是10000+你redis的端口

三、原理

原理圖如下

Redis集群做法的難點(diǎn),百萬并發(fā)客戶端「實(shí)戰(zhàn)」

 

eids cluster模式最小得6個(gè)服務(wù),每個(gè)服務(wù)之間通過ping-pong機(jī)制實(shí)現(xiàn)相互感知(注意:此模式?jīng)]有單獨(dú)的哨兵監(jiān)控,集群內(nèi)部完全自制)。redis集群數(shù)據(jù)存儲(chǔ)類似于hashmap,其將數(shù)據(jù)劃成16484個(gè)片區(qū)(又叫插槽,每個(gè)槽可以放n多個(gè)數(shù)據(jù)),通過對(duì)key進(jìn)行一定的算法與16384取模,得到其在16384中間的一個(gè)片區(qū)中。如上圖姑且認(rèn)為1-4;2-5;3-6,兩兩結(jié)對(duì),前者為master負(fù)責(zé)寫(其實(shí)也具備讀能力),后者slave負(fù)責(zé)讀,而且是只讀,防止數(shù)據(jù)出現(xiàn)不一致,同時(shí)slave從master同步數(shù)據(jù)。按照上述配對(duì),1-4主從將只負(fù)責(zé)0-5500片區(qū)的讀寫;2~5主從只負(fù)責(zé)5501-11000片區(qū)的讀寫;3-6主從負(fù)責(zé)11001-16383片區(qū)的讀寫,從而實(shí)現(xiàn)了分?jǐn)偭俗x寫的壓力。

三、容災(zāi)恢復(fù)

  • 主節(jié)點(diǎn)(如1)宕機(jī),從節(jié)點(diǎn)(如4)將上位成master
  • 主節(jié)點(diǎn)又活了,角色反轉(zhuǎn)為slave
  • 主從成對(duì)的宕機(jī),redis cluster將重新在剩下的節(jié)點(diǎn)上分配16384個(gè)片區(qū)(通過配置:cluster-require-full-coverage)

四、JAVA如何使用

public void jedisCluster() throws Exception { // 這里建議能把所有節(jié)點(diǎn)都寫上就寫上,防止單點(diǎn)連接失敗 Set<HostAndPort> nodes = new HashSet<>(); nodes.add(new HostAndPort(yourIp, 7001)); nodes.add(new HostAndPort(yourIp, 7002)); nodes.add(new HostAndPort(yourIp, 7003)); nodes.add(new HostAndPort(yourIp, 7004)); nodes.add(new HostAndPort(yourIp, 7005)); nodes.add(new HostAndPort(yourIp, 7006)); JedisCluster jedisCluster = new JedisCluster(nodes); jedisCluster.set("k1", "100"); String result = jedisCluster.get("k1"); System.out.println(result); jedisCluster.close();

探討cluster模式存在的問題

  • 多鍵操作不支持(如mset k1 v1 k2 v2;k1,k2可能不在一個(gè)服務(wù)器上)
  • 由于多鍵操作不支持直接導(dǎo)致redis事物不支持
  • 由于多鍵操作不支持直接導(dǎo)致redis可能不支持luna腳本(未測(cè)試),那些希望通過redis搭配

 

總結(jié);文章內(nèi)容僅代表個(gè)人觀點(diǎn),如有不正之處,歡迎批評(píng)指正,謝謝大家。

luna腳本實(shí)現(xiàn)搶購秒殺方案的可能需要在測(cè)試一下,有空本人在測(cè)試一下。

有一起學(xué)習(xí)的可以后臺(tái)私信“資料”領(lǐng)取視頻資料 各大廠面試題內(nèi)容包括C/C++,linux,Nginx,golang,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,ffmpeg,流媒體, 音視頻,CDN,P2P,K8S,Docker,Golang,TCP/IP,協(xié)程,嵌入式,ARM,DPDK等等。。。

分享到:
標(biāo)簽:集群 Redis
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定