java集群_redis集群及java的实现

本文介绍了如何配置和启动Redis集群,包括创建目录、复制配置文件、修改端口、启动Redis实例等步骤。在遇到问题如Node非空错误时,通过删除相关文件解决了问题。此外,展示了使用Java连接Redis集群的示例代码,并提供了Spring配置Redis集群的片段。
摘要由CSDN通过智能技术生成

根据redis安装的第一个redis开始的

1.在redis.conf的目录下创建redis-cluster目录 mkdir redis-cluster

2.进入redis-cluster ,创建几个集群6001-6006

mkdir 6001   mkdir 6001  mkdir 6003   mkdir 6004   mkdir 6005  mkdir 6006

3.然后再创建data包

mkdir -p 6001/data 6002/data 6003/data 6004/data 6005/data 6006/data

4.复制redis.conf,到6001-6006里面去

cp redis.conf ./redis-cluster/6001 ....cp redis.conf ./redis-cluster/6006

5.修改每个redis.conf,把6001改成相应端口

port 6001(每个节点的端口号)

daemonize yes

bind 192.168.119.131(绑定当前机器 IP)

dir /usr/local/redis-cluster/6001/data/(数据文件存放位置)

pidfile /var/run/redis_6001.pid(pid 6001和port要对应)

cluster-enabled yes(启动集群模式)

cluster-config-file nodes6001.conf(6001和port要对应)

cluster-node-timeout 15000

appendonly yes

全部修改:%s/6001/6002/g

6.查看启动是否成功  ps -el | grep redis

netstat -tlnp | grep redis

7.由于 Redis 集群需要使用 ruby 命令,所以我们需要安装 ruby 和相关接口

yum install ruby

yum install rubygems

gem install redis

7.1,有时安装gem install redis 会报  redis requires Ruby version >= 2.2.2

查了查资料,CentOS7 yum库中ruby的版本支持到 2.0.0,可gem 安装redis需要最低是2.2.2,自己编译的ruby源码,再执行还是报错

解决办法

7.1.1

1.安装RVM:

gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3

curl -L get.rvm.io | bash -s stable

find / -name rvm -print

/usr/local/rvm /usr/local/rvm/src/rvm /usr/local/rvm/src/rvm/bin/rvm /usr/local/rvm/src/rvm/lib/rvm /usr/local/rvm/src/rvm/scripts/rvm /usr/local/rvm/bin/rvm /usr/local/rvm/lib/rvm /usr/local/rvm/scripts/rvm

source /usr/local/rvm/scripts/rvm

2.查看rvm库中已知的ruby版本

rvm list known

3.安装一个ruby版本

rvminstall2.3.3

Using /usr/local/rvm/gems/ruby-2.3.3

4.使用一个ruby版本

rvm use 2.3.3

Using /usr/local/rvm/gems/ruby-2.3.3 [5].设置默认版本

rvmuse2.3.3 --default

查看ruby版本:

ruby --version

ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-linux]

安装redis: gem install redis

8. 192.168.31.245 是虚拟机地址   7000是指端口号

./redis-trib.rb  create  --replicas  1  192.168.88.134:6001 192.168.88.134:6002  192.168.88.134:6003 192.168.88.134:6004  192.168.88.134:6005  192.168.88.134:6006

8.1  redis集群报错Node is not empty。有可能报这个错

1434219-20180709113636004-671764123.png

如果改了端口号,要注意,我只是改了上面添加了,下面的没有去掉,然后就一直这样了

047aa9102e88c4be344281e446eb3daf.png

想了一会发现这三个文件appendonly.aof dump.rdb nodes.conf是之前执行ip127.0.0.1时生成的,在我改为真机ip后在执行并没有生效。

de31c5dead3e2117a22579339d1865cc.png

这里解释一下dump.rdb文件:

dump.rdb是由Redis服务器自动生成的 默认情况下 每隔一段时间redis服务器程序会自动对数据库做一次遍历,把内存快照写在一个叫做“dump.rdb”的文件里,这个持久化机制叫做SNAPSHOT。有了SNAPSHOT后,如果服务器宕机,重新启动redis服务器程序时redis会自动加载dump.rdb,将数据库状态恢复到上一次做SNAPSHOT时的状态。

知道原因后就好办了,解决办法:

1)将每个节点下aof、rdb、nodes.conf本地备份文件删除; 2)172.168.63.201:7001> flushdb #清空当前数据库(可省略) 3)之后再执行脚本,成功执行;

输入 yes 即可,然后出现如下内容,说明安装成功

0b703871c2aa0037eefc8a6f142b6e19.png

然后再启动,集群就算完成,注意redis要在3.0.0版本以后才能用,

java连接redis集群

public static void main(String[] args) {

JedisPoolConfig poolConfig = new JedisPoolConfig();

// 最大连接数

poolConfig.setMaxTotal(1);

// 最大空闲数

poolConfig.setMaxIdle(1);

// 最大允许等待时间,如果超过这个时间还未获取到连接,则会报JedisException异常:

// Could not get a resource from the pool

poolConfig.setMaxWaitMillis(1000);

Set nodes = new LinkedHashSet();

nodes.add(new HostAndPort("192.168.83.128", 6379));

nodes.add(new HostAndPort("192.168.83.128", 6380));

nodes.add(new HostAndPort("192.168.83.128", 6381));

nodes.add(new HostAndPort("192.168.83.128", 6382));

nodes.add(new HostAndPort("192.168.83.128", 6383));

nodes.add(new HostAndPort("192.168.83.128", 6384));

JedisCluster cluster = new JedisCluster(nodes, poolConfig);

String name = cluster.get("name");

System.out.println(name);

cluster.set("age", "18");

System.out.println(cluster.get("age"));

try {

cluster.close();

} catch (IOException e) {

e.printStackTrace();

}

}

spring 配置redis集群

127.0.0.1:26379

集群验证过的

xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:mvc="http://www.springframework.org/schema/mvc"

xsi:schemaLocation="

http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-3.2.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-3.2.xsd

http://www.springframework.org/schema/mvc

http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">

base-package="org.springframework.web.filter.DelegatingFilterProxy" />

class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration">

class="org.springframework.data.redis.connection.RedisClusterConfiguration">

class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值