redis集群搭建和java应用接口

redis集群搭建和java应用接口

解压后编译
cd /usr/local/redis/redis-5.0.0/
make && make install
完成后启动
cd /redis/redis-5.0.0/src
./redis-server
在这里插入图片描述
这就启动了单机版的redis,关闭命令行后redis关闭,使用 ./redis-server & 后台启动
接下来要做一些简单的配置
在redis-5.0.0/下编辑redis.conf文件
vi/usr/local/redis/redis-5.0.0/redis.conf
修改一下内容
daemonize yes //redis后台运行
port 7000 //端口7000
cluster-enabled yes //开启集群 把注释#去掉/暂不开启
#bind 127.0.0.1 //注释掉
单机版搭建完成,编写java应用接口测试

  • 单机版redis测试
    搭建maven工程

    redis.clients
    jedis
    2.7.0

    编写测试类
    /**

    • jedis测试 单机版
      */
      @Test
      public void testJedisSingle(){
      Jedis jedis = new Jedis(“192.168.198.130”, 6379);
      jedis.set(“test”, “this i a test”);
      String str = jedis.get(“test”);
      System.out.println("—:"+str);
      //关闭jedis的链接
      jedis.close();
      }
  • 集群版本
    创建目录用于存放集群节点
    mkdir /usr/local/redis-cluster
    mkdir /usr/local/redis-cluster/redis01
    。。。创建六个节点文件
    在这里插入图片描述
    复制redis的src和redis.conf文件到每个节点下面
    cp /usr/local/redis/redis-5.0.0/src redis01/
    cp /usr/local/redis/redis-5.0.0/redis.conf redis01/

    分别修改端口号,开启集群(修改每个节点下的redis.conf文件)
    port 7000 //端口7001
    cluster-enabled yes //开启集群 把注释#去掉/暂不开启
    redis01 7001
    redis02 7002
    redis03 7003
    redis04 7004
    redis05 7005
    redis06 7006
    编写集群启动脚本
    cd /usr/local/redis-cluster
    touch start.sh
    vi start.sh
    内容写入:
    cd redis01/src
    ./redis-server …/redis.conf
    cd …/…/
    cd redis02/src
    ./redis-server …/redis.conf
    cd …/…/
    cd redis03/src
    ./redis-server …/redis.conf
    cd …/…/
    cd redis04/src
    ./redis-server …/redis.conf
    cd …/…/
    cd redis05/src
    ./redis-server …/redis.conf
    cd …/…/
    cd redis06/src
    ./redis-server …/redis.conf
    cd …
    添加执行权限
    chmod +x start.sh
    执行启动命令
    ./start.sh
    在这里插入图片描述
    全部节点已经启动成功
    比redis5.0.0低的版本需要ruby脚本工具,5.0.0以后不在需要
    执行以下命令创建集群
    redis-cli --cluster create 47.107.92.79:7001 47.107.92.79:7002 47.107.92.79:7003 47.107.92.79:7004 47.107.92.79:7005 47.107.92.79:7006 --cluster-replicas 1
    redis5.0.0以前的版本可使用以下命令,前提是安装好ruby依赖
    /usr/local/redis-5.0.0/src/redis-trib.rb create --replicas 1 47.107.92.79:7001 47.107.92.79:7002 47.107.92.79:7003 47.107.92.79:7004 47.107.92.79:7005 47.107.92.79:7006
    在这里插入图片描述
    集群已经搭建成功
    测试集群:
    cd /usr/local/redis-cluster/redis01/src
    ./redis-cli -p -c 7001
    注意:一定要加上-c,不然节点之间是无法自动跳转的!如下图可以看到,存储的数据(key-value)是均匀分配到不同的节点的
    在这里插入图片描述
    集群测试

public static void main(String[] args) throws InterruptedException {
        final BaseRedis baseRedis = new BaseRedis();
        baseRedis.initPool();
        for (int i = 0; i < 20; i++) {
            JedisCluster jedisCluster = baseRedis.getJedisCluster();
            jedisCluster.set(String.valueOf(i), String.valueOf(i));
            System.out.println("set " + i + ". value:" + jedisCluster.get(String.valueOf(i)));
            TimeUnit.MILLISECONDS.sleep(500);
        }
    }

在这里插入图片描述
注意:遇到以下问题的解决方案

  • 重启集群
    在这里插入图片描述
    这个一般是由于重启redis集群引起的问题
    解决方法:
    删除每个节点文件下的dump.rdb nodes.conf文件,记住要关闭集群后删除再重启集群
    dump.rdb是由Redis服务器自动生成的 默认情况下 每隔一段时间redis服务器程序会自动对数据库做一次遍历,把内存快照写在一个叫做“dump.rdb”的文件里,这个持久化机制叫做SNAPSHOT。有了SNAPSHOT后,如果服务器宕机,重新启动redis服务器程序时redis会自动加载dump.rdb,将数据库状态恢复到上一次做SNAPSHOT时的状态。
    为了方便编写删除临时文件的脚本
    cd /usr/redis-cluster
    touch deltempfiles.sh
    vi deltempfiles.sh
cd redis01/src
rm -rf dump.rdb
rm -rf node.conf
cd ../../
cd redis02/src
rm -rf dump.rdb
rm -rf node.conf
cd ../../
cd redis03/src
rm -rf dump.rdb
rm -rf node.conf
cd ../../
cd redis04/src
rm -rf dump.rdb
rm -rf node.conf
cd ../../
cd redis05/src
rm -rf dump.rdb
rm -rf node.conf
cd ../../
cd redis06/src
rm -rf dump.rdb
rm -rf node.conf

  • 端口未开放
    在这里插入图片描述
    启动集群输入yes处于等待状态
    原因:
    redis集群不仅需要开通redis客户端连接的端口,而且需要开通集群总线端口
    集群总线端口为redis客户端连接的端口 + 10000
    如redis端口为6379
    则集群总线端口为16379
    故,所有服务器的点需要开通redis的客户端连接端口和集群总线端口
    注意:iptables 放开,如果有安全组,也要放开这两个端口
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值