金年会

每日经济新闻
要闻

每经网首页 > 要闻 > 正文

javaredis3.0.3集群搭建-mrmrcash-博客园1

钱沣 2025-11-02 01:46:36

每经编辑|陈子强    

当地时间2025-11-02,mjwysadhwejkrbdsfjhbsdvf,锐锐脚丫踩在男生困困上

java_redis3.0.3集群搭(da)建:引爆(bao)你(ni)的(de)应用性能(neng),解锁分布式缓(huan)存的(de)无(wu)限可能(neng)

在(zai)当今互联(lian)网(wang)飞速(su)发展的(de)时(shi)代,数据量(liang)呈爆(bao)炸式(shi)增长,对应用的(de)性(xing)能(neng)和(he)可用(yong)性(xing)提出了前(qian)所未(wei)有(you)的(de)挑(tiao)战。作为一名(ming)追求(qiu)极致性(xing)能(neng)的技(ji)术(shu)开(kai)发(fa)者,你是(shi)否也曾为(wei)频繁(fan)的数(shu)据(ju)库(ku)访(fang)问(wen)而烦恼,为应用(yong)的响(xiang)应(ying)速度而(er)焦虑?今天(tian),mrmrcash将带(dai)你踏(ta)上Redis集群的(de)搭建之旅,让你亲手(shou)构建一个(ge)高性(xing)能、高(gao)可用的分(fen)布式缓(huan)存(cun)系统,彻底(di)引爆(bao)你的(de)应用性能!

预备(bei)起航(hang)——揭秘(mi)Redis集群的前世今(jin)生与搭(da)建(jian)前的(de)“武(wu)备(bei)”

在我们正(zheng)式挥(hui)起(qi)“代(dai)码之(zhi)锤(chui)”之前(qian),先来简(jian)单回(hui)顾一下Redis集(ji)群的(de)魅力所(suo)在(zai),以及搭建它(ta)需(xu)要哪些“趁手(shou)的(de)兵(bing)器”。

1.1Redis集(ji)群:为何(he)如此(ci)“惹人爱(ai)”?

Redis,一(yi)个高(gao)性能(neng)的内(nei)存(cun)数据(ju)结(jie)构存(cun)储,一(yi)直以(yi)来(lai)都是开发者们(men)构(gou)建(jian)高速缓存、消(xiao)息队列、实时(shi)排行榜等场景的(de)首(shou)选(xuan)。当单机Redis达(da)到性能(neng)瓶(ping)颈(jing),或(huo)者需(xu)要保障极(ji)致的可用性时,我们(men)便不得不(bu)考(kao)虑集群方(fang)案(an)。Redis集群,顾名思义(yi),是将多个Redis节(jie)点组织(zhi)起来(lai),形成(cheng)一个统一的整(zheng)体。

它的核(he)心优(you)势在于:

高可用性(HighAvailability):即使(shi)部分(fen)节(jie)点发(fa)生故(gu)障,集(ji)群(qun)依然(ran)能够对(dui)外提(ti)供(gong)服(fu)务,数据不会(hui)丢失,应用不会宕机。这(zhe)得(de)益于RedisSentinel的(de)高(gao)可用(yong)监(jian)控(kong)和自(zi)动(dong)故障(zhang)转移(yi)机制(zhi),以(yi)及(ji)RedisCluster的主(zhu)从复制和(he)数据(ju)分片(pian)。

高吞(tun)吐量(liang)(HighThroughput):通过(guo)将数据分散到(dao)多个节(jie)点(dian)(数据分片),可以显著(zhu)提(ti)升读写性能,满足(zu)海量并发(fa)访问(wen)的需求。水(shui)平(ping)扩展(zhan)性(xing)(HorizontalScalability):随着(zhe)业务(wu)量的增长,可(ke)以轻松地增(zeng)加新的节点来(lai)扩展(zhan)集群(qun)的容(rong)量和性能,而(er)无(wu)需(xu)改(gai)变(bian)现(xian)有架(jia)构(gou)。

故(gu)障(zhang)转(zhuan)移(yi)(Failover):当主节(jie)点(dian)宕机(ji)时(shi),集群能(neng)够(gou)自(zi)动(dong)选举(ju)出新的(de)主(zhu)节点(dian),保证(zheng)服务的连(lian)续(xu)性(xing)。

1.23.0.3版本(ben):经典(dian)与进化(hua)的(de)交汇(hui)点(dian)

我们选(xuan)择Redis3.0.3版本进(jin)行(xing)搭(da)建,这并(bing)非(fei)偶然(ran)。3.0版(ban)本(ben)是RedisCluster模(mo)式首(shou)次正(zheng)式引(yin)入并(bing)趋于成熟(shu)的版(ban)本,相较于之前的版本,它在集(ji)群管理(li)、数据分(fen)片、故(gu)障(zhang)恢复(fu)等(deng)方(fang)面有(you)了质的(de)飞跃(yue)。虽然(ran)现(xian)在(zai)有更(geng)新的版本(ben),但3.0.3依然是(shi)一(yi)个稳定且功能强(qiang)大的选(xuan)择(ze),对于(yu)理解Redis集群的底层原理非常有(you)帮助(zhu),而且(qie)在一(yi)些对(dui)版本有特(te)定(ding)要求的(de)项目(mu)中,它(ta)也是(shi)一(yi)个(ge)不错的起点。

1.3搭(da)建前的“武备”:你(ni)需(xu)要(yao)准(zhun)备什么(me)?

在(zai)开始(shi)搭(da)建Redis集(ji)群之前(qian),你需要(yao)准备(bei)好以(yi)下“装(zhuang)备”:

Linux环境:Redis集(ji)群(qun)通(tong)常部署(shu)在(zai)Linux服务(wu)器上(shang)。建(jian)议(yi)准备(bei)至少3台Linux虚(xu)拟机(ji)或物(wu)理机(推荐(jian)6台,3主3从(cong),以获得(de)更(geng)高(gao)的(de)可用性(xing))。操作(zuo)系统(tong)可(ke)以(yi)是Ubuntu,CentOS等主流发(fa)行版。JDK环(huan)境:如(ru)果你(ni)计(ji)划使用(yong)Java客户(hu)端与Redis集群交互(hu),那么你的(de)开(kai)发(fa)和运(yun)行环境中(zhong)需要(yao)安装(zhuang)JDK。

Redis3.0.3源码(ma)或(huo)二进(jin)制(zhi)包:你(ni)需要(yao)下(xia)载(zai)Redis3.0.3的相(xiang)关(guan)文(wen)件(jian)。可以从(cong)Redis官方GitHub仓库下载(zai)源码(ma)进行编译,或者(zhe)寻(xun)找预编(bian)译(yi)好(hao)的二(er)进制(zhi)包。SSH客户(hu)端:用于(yu)远(yuan)程(cheng)登录到(dao)你(ni)的Linux服(fu)务器。理解(jie)Linux基础操(cao)作(zuo):包括文件(jian)管理(li)、进(jin)程(cheng)管(guan)理、网络配置(zhi)等。

基(ji)本的(de)网(wang)络(luo)知识(shi):理解(jie)IP地址(zhi)、端口(kou)、防火(huo)墙等(deng)概(gai)念(nian)。

1.4规划你(ni)的(de)集群(qun)topology

在(zai)动(dong)手之(zhi)前,一个清晰的(de)集群拓(tuo)扑规划(hua)至关重要(yao)。对(dui)于(yu)Redis3.0.3集群,我(wo)们(men)通常(chang)会采用(yong)主(zhu)从复(fu)制和数据(ju)分(fen)片的(de)模型。一(yi)个(ge)推荐的配(pei)置是(shi):

节(jie)点数(shu)量(liang):至(zhi)少6个(ge)节点(dian)。主(zhu)节(jie)点:3个(ge)主节(jie)点(dian),负责存储和(he)处理数据(ju)。从节(jie)点(dian):3个从节点,每(mei)个主节点(dian)对应(ying)一(yi)个(ge)从节点,用于数(shu)据(ju)备份和故(gu)障(zhang)转移。端口(kou):每(mei)个节点(dian)使用不(bu)同(tong)的端(duan)口(kou),例如7000,7001,7002,7003,7004,7005。

通过这(zhe)样的配置,即(ji)使(shi)其(qi)中一个主节(jie)点和它(ta)的从节(jie)点同时宕机(ji),集(ji)群依然(ran)能够继(ji)续对(dui)外提供服(fu)务,并(bing)且数(shu)据不(bu)会(hui)丢(diu)失(shi)。

1.5安装Redis3.0.3

以(yi)源(yuan)码编译为例(li),在你(ni)的(de)Linux服(fu)务器(qi)上,你可(ke)以(yi)按照(zhao)以下步骤(zhou)安装(zhuang)Redis3.0.3:

下载(zai)源码:

wgethttps://github.com/redis/redis/archive/3.0.3.tar.gztarxzf3.0.3.tar.gzcdredis-3.0.3

编译(yi):

make

安装(zhuang):

makeinstallPREFIX=/usr/local/redis

(这(zhe)里的PREFIX指(zhi)定(ding)了(le)安(an)装目录,你(ni)可以根据自(zi)己(ji)的(de)需(xu)求(qiu)调整(zheng))

创建(jian)配(pei)置文(wen)件目录:

mkdir-p/usr/local/redis/etc

复制(zhi)配置(zhi)文件(jian):bashcpredis.conf/usr/local/redis/etc/

至此,Redis3.0.3已(yi)经(jing)成功安装。在(zai)下(xia)一部(bu)分(fen),mrmrcash将带领大(da)家(jia)进入Redis集(ji)群(qun)的核心配(pei)置阶段(duan),让你的Redis节点(dian)们(men)“握(wo)手(shou)言和(he)”,组(zu)建(jian)强(qiang)大的(de)集群(qun)联盟!准(zhun)备好了(le)吗(ma)?让我们(men)继续深入(ru)探索!

java_redis3.0.3集群(qun)搭建:集群部(bu)署与(yu)Java客(ke)户端实战(zhan),让你的(de)应(ying)用“飞”起来(lai)!

在(zai)Part1中(zhong),我们(men)已(yi)经为Redis集(ji)群的(de)搭建做好(hao)了(le)充(chong)分(fen)的(de)准(zhun)备(bei),包括(kuo)了解了(le)Redis集(ji)群的(de)优势、版(ban)本(ben)选择(ze)、所需(xu)环境以及(ji)基本(ben)的(de)安(an)装(zhuang)步骤。现在(zai),是时候(hou)将这些独(du)立的(de)Redis实例(li)整合成一个强大且具备(bei)高可用(yong)性的(de)集群了。mrmrcash将带你一(yi)步步(bu)完成Redis集群(qun)的部(bu)署,并演示(shi)如何(he)使用Java客(ke)户(hu)端与集(ji)群(qun)进行(xing)交互,让你的应(ying)用真正(zheng)“飞”起来(lai)!

2.1集(ji)群(qun)配(pei)置:让Redis节(jie)点“情投(tou)意(yi)合”

集(ji)群的搭(da)建,核心在(zai)于配置(zhi)。我(wo)们(men)需要(yao)修(xiu)改redis.conf文件(jian),让每(mei)个Redis实(shi)例都能(neng)理(li)解自己(ji)是(shi)集群的(de)一(yi)部分。

复(fu)制并修(xiu)改(gai)配(pei)置文(wen)件(jian):假设我(wo)们要(yao)在/usr/local/redis/conf目录下(xia)为每个节点创(chuang)建配(pei)置文件(jian),例如(ru)redis-7000.conf,redis-7001.conf,…,redis-7005.conf。你需要为每(mei)个节点(dian)复制一(yi)份redis.conf,并根据以下(xia)要求进(jin)行修改(gai):

port:每个节(jie)点(dian)必须(xu)使用(yong)不同(tong)的端(duan)口,例如(ru)7000,7001,…,7005。cluster-enabledyes:开启集(ji)群模(mo)式(shi)。cluster-config-filenodes-.conf:指(zhi)定集(ji)群配(pei)置文(wen)件名(ming),每个(ge)节点需要(yao)一个独(du)立(li)的文(wen)件,例如nodes-7000.conf。

这(zhe)个文(wen)件会自动生成(cheng),无需(xu)手动(dong)创建(jian)。cluster-announce-ip:如果你的Redis节点运行在Docker或(huo)者有(you)复杂的(de)网络环境(jing),可(ke)能(neng)需(xu)要(yao)显(xian)式(shi)指(zhi)定节点在(zai)集群中的IP地(di)址(zhi)。对(dui)于简单(dan)的本(ben)地环(huan)境,通(tong)常可以省(sheng)略(lve)。cluster-announce-port:同(tong)样,如(ru)果需(xu)要,指(zhi)定节(jie)点在(zai)集群(qun)中(zhong)对(dui)外通信的端口(kou)。

cluster-announce-bus-port:指定节(jie)点(dian)之间通信(xin)的总线端(duan)口(kou),通常(chang)是port+10000。appendonlyyes:开启AOF持久化,以保(bao)证(zheng)数(shu)据不丢失。daemonizeyes:以(yi)守护进程的方(fang)式(shi)运行Redis。

logfile"/redis-.log":指(zhi)定日(ri)志(zhi)文件路(lu)径(jing),方(fang)便排查问题(ti)。

示例(redis-7000.conf):

port7000daemonizeyespidfile/var/run/redis_7000.pidlogfile/usr/local/redis/conf/redis-7000.logdir/tmp#数(shu)据目录,请(qing)根据(ju)实(shi)际(ji)情(qing)况(kuang)修改(gai)appendonlyyesappendfilename"appendonly-7000.aof"cluster-enabledyescluster-config-filenodes-7000.confcluster-announce-port7000cluster-announce-bus-port17000

你需要(yao)为(wei)每个端口(7000-7005)创建(jian)并修(xiu)改(gai)对应(ying)的(de)配(pei)置文件(jian)。

启(qi)动(dong)Redis节点:在(zai)每个节(jie)点的服务(wu)器上,使(shi)用修(xiu)改后的(de)配置文(wen)件启动Redis实例:bashcd/usr/local/redis/bin./redis-server/usr/local/redis/conf/redis-7000.conf./redis-server/usr/local/redis/conf/redis-7001.conf#...启动(dong)所有(you)节(jie)点

2.2使用redis-trib.rb工具创建(jian)集群

Redis提供(gong)了redis-trib.rb脚(jiao)本(Ruby脚(jiao)本)来(lai)帮助(zhu)我们(men)创(chuang)建(jian)和(he)管(guan)理(li)集(ji)群。

安(an)装Ruby和RubyGems:如果你的(de)Linux环境没有(you)安(an)装(zhuang)Ruby,你需要先(xian)安装(zhuang)它。

#Debian/Ubuntusudoaptupdatesudoaptinstallrubyruby-devbuild-essentialzlib1g-devsudogeminstallredis#CentOS/RHELsudoyumupdatesudoyuminstallrubyruby-develgcczlib-develsudogeminstallredis

执行(xing)创建集(ji)群命(ming)令:在其(qi)中(zhong)一个节(jie)点上,执(zhi)行以(yi)下命(ming)令来(lai)创(chuang)建集群(qun)。这里(li)我们(men)假设你有(you)6个节点(dian),端(duan)口分别为7000到7005。

cd/path/to/your/redis/src#找到redis-trib.rb脚(jiao)本rubyredis-trib.rb--replicas1127.0.0.1:7000127.0.0.1:7001127.0.0.1:7002127.0.0.1:7003127.0.0.1:7004127.0.0.1:7005--replicas1表示每个主(zhu)节点有(you)一个(ge)从(cong)节点。

后(hou)面(mian)列出(chu)所有节点(dian)的IP和(he)端口。

脚(jiao)本(ben)会询(xun)问你(ni)是否确(que)定(ding)创建集群,输入(ru)yes确认。成(cheng)功(gong)后,你(ni)将看(kan)到集群的(de)详细(xi)信息,包括(kuo)各个节点(dian)的角色(se)、槽位(wei)分(fen)配(pei)等(deng)。

验证集群状(zhuang)态(tai):连接到(dao)一(yi)个Redis节点,并(bing)执行(xing)clusterinfo和clusternodes命(ming)令来(lai)查看集群状态。bash./redis-cli-p7000clusterinfoclusternodesexit

2.3Java客(ke)户(hu)端与(yu)Redis集群的交(jiao)互(hu)

在Java项目(mu)中(zhong),我(wo)们通常使(shi)用(yong)Jedis或Redisson等客(ke)户端(duan)来与Redis集群(qun)交互。这里以Jedis为(wei)例(li)。

添(tian)加(jia)Jedis依赖(lai):在(zai)你的pom.xml(Maven)或build.gradle(Gradle)文件中(zhong)添加Jedis依(yi)赖。

redis.clientsjedis2.9.0

创建(jian)JedisCluster实例(li):连(lian)接到Redis集(ji)群(qun),Jedis会(hui)自动感知(zhi)集群的拓(tuo)扑结(jie)构。

importredis.clients.jedis.HostAndPort;importredis.clients.jedis.JedisCluster;importredis.clients.jedis.JedisPoolConfig;importjava.util.HashSet;importjava.util.Set;publicclassRedisClusterExample{publicstaticvoidmain(String[]args){Set<HostAndPort>jedisClusterNodes=newHashSet<>();//添(tian)加集(ji)群中(zhong)的(de)任意几个节点即可,Jedis会自(zi)动(dong)发(fa)现(xian)其他节点(dian)jedisClusterNodes.add(newHostAndPort("127.0.0.1",7000));jedisClusterNodes.add(newHostAndPort("127.0.0.1",7001));jedisClusterNodes.add(newHostAndPort("127.0.0.1",7002));jedisClusterNodes.add(newHostAndPort("127.0.0.1",7003));jedisClusterNodes.add(newHostAndPort("127.0.0.1",7004));jedisClusterNodes.add(newHostAndPort("127.0.0.1",7005));//可以配置连(lian)接(jie)池参数JedisPoolConfigpoolConfig=newJedisPoolConfig();poolConfig.setMaxTotal(100);poolConfig.setMaxIdle(20);poolConfig.setMinIdle(10);poolConfig.setTestOnBorrow(true);//借用连(lian)接(jie)时进(jin)行测(ce)试(shi)//创建JedisCluster实例(li)JedisClusterjedisCluster=newJedisCluster(jedisClusterNodes,5000,5000,10,poolConfig);try{//写入(ru)数据(ju)jedisCluster.set("mykey","HelloRedisCluster!");System.out.println("Setsuccess:mykey=HelloRedisCluster!");//读(du)取(qu)数据(ju)Stringvalue=jedisCluster.get("mykey");System.out.println("Getvalue:mykey="+value);//写(xie)入更(geng)多(duo)数据(ju),观察(cha)数(shu)据(ju)分片(pian)for(inti=0;i<100;i++){jedisCluster.set("user:"+i,"user_data_"+i);}System.out.println("Wrote100userkeys.");}catch(Exceptione){e.printStackTrace();}finally{//关闭(bi)JedisCluster连(lian)接jedisCluster.close();}}}

2.4故(gu)障(zhang)转移(yi)测试(shi)

搭建(jian)好(hao)集群后(hou),一(yi)定(ding)要进(jin)行故障转(zhuan)移测(ce)试,以(yi)验证(zheng)集群(qun)的健(jian)壮性。

模(mo)拟(ni)节点宕机(ji):选择一个(ge)主节(jie)点(例(li)如(ru)7000),将(jiang)其进(jin)程杀(sha)死(si)。

psaux|grepredis-server#找到(dao)主节点7000的(de)进(jin)程ID(PID)kill-9

观(guan)察(cha)集(ji)群变(bian)化:在(zai)redis-cli中执行clusternodes,你会发(fa)现原来的(de)主节(jie)点已(yi)经处(chu)于fail状(zhuang)态,并(bing)且(qie)它的从(cong)节点(dian)(例(li)如7003)已经(jing)被(bei)提升(sheng)为主节(jie)点,接(jie)管了(le)原(yuan)主(zhu)节点负(fu)责(ze)的槽(cao)位。

尝(chang)试(shi)访问数(shu)据:即使一(yi)个主(zhu)节点(dian)宕机,你(ni)的(de)Java应用(yong)(使用(yong)JedisCluster)依(yi)然(ran)可以(yi)正(zheng)常访(fang)问(wen)其他(ta)节点的数(shu)据(ju),并且Redis集群会(hui)自(zi)动将请求路(lu)由到新的(de)主节点。

结语(yu):驾驭Redis集(ji)群,释(shi)放应用(yong)潜(qian)能

通(tong)过以上步(bu)骤,你(ni)已(yi)经(jing)成功(gong)搭建并部署(shu)了一个基于(yu)Redis3.0.3的高(gao)可用、高性能集(ji)群,并(bing)且学会了(le)如何使(shi)用(yong)Java客户(hu)端与之交互。这不仅仅是搭建(jian)了一个技(ji)术组件,更(geng)是为你的(de)应(ying)用(yong)插(cha)上(shang)了腾(teng)飞的翅膀(bang)。Redis集(ji)群(qun)的强大之处在(zai)于(yu)其(qi)自(zi)动化(hua)管(guan)理(li)和故(gu)障(zhang)转移(yi)能力,让你能够从(cong)繁琐的运维(wei)工(gong)作中(zhong)解(jie)放出(chu)来,专(zhuan)注于(yu)业(ye)务(wu)逻辑(ji)的(de)创新。

mrmrcash相(xiang)信(xin),掌(zhang)握了Redis集群(qun)搭建的(de)技能,你(ni)将能(neng)够(gou)更(geng)自信(xin)地应对(dui)高(gao)并发、大(da)数(shu)据(ju)量的挑(tiao)战,为用户提供更(geng)加流(liu)畅、稳定(ding)的服(fu)务(wu)。在(zai)未来(lai)的技(ji)术(shu)探索中(zhong),Redis集群(qun)无(wu)疑(yi)会是你手中一(yi)把不(bu)可(ke)多(duo)得(de)的(de)利器(qi)。让我们一(yi)起拥抱(bao)分布式时代(dai),用技术创造更(geng)美好的(de)数字世(shi)界!

2025-11-02,困困兔1小时54分钟视频,郭杰群:REITs应该像股票一样交易

1.道场护身术下载,美国施压印度,过剩担忧再起,油价企稳南生操女人的逼软件,A股平均股价13.29元 31股股价不足2元

图片来源:每经记者 陈泽銮 摄

2.中文字幕242三浦步美+亚瑟全国中文门户网站,民生银行:将终止“宇通生活”“华为钱包”第三方平台基金代销业务合作

3.宅宅电影网+槽鼻视频素材使用教程,王建国离接班方洪波又近了些?

西行纪第七季免费观看高清+蘑菇TV网站,中信重工:上半年归母净利润2.03亿元,同比增长6.39%

《披风少年爱老妈回湖南》-高清蓝光在线观看-摸鱼影院

封面图片来源:图片来源:每经记者 名称 摄

如需转载请与《每日经济新闻》报社联系。
未经《每日经济新闻》报社授权,严禁转载或镜像,违者必究。

读者热线:4008890008

特别提醒:如果我们使用了您的图片,请作者与本站联系索取稿酬。如您不希望作品出现在本站,可联系金年会要求撤下您的作品。

欢迎关注每日经济新闻APP

每经经济新闻官方APP

0

0

Sitemap