Redis集群搭建教程

Redis集群搭建教程

(一) 安装Redis

(1) Linux编译安装Redis

  1. 安装gcc(Ubuntu)

    $sudo apt-get install build-essential
  2. 下载,提取,编译redis

    $wget http://download.redis.io/releases/redis-4.0.9.tar.gz
    $tar xzf redis-4.0.9.tar.gz
    $cd redis-4.0.9
    $make
  3. 进入redis-4.0.9/src目录下进行安装

    $make install
  4. 建立两个文件夹放reids命令和配置文件

    $mkdir -p /usr/local/reids/bin
    $mkdir -p /usr/local/reids/etc
  5. 将reids命令文件移到/usr/local/reids/bin

    $mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-server redis-cli /usr/local/redis/bin
  6. 将redis配置文件复制到/usr/local/redis/etc

    $cp ../redis.conf /usr/local/redis/etc/
  7. 修改配置文件,设置为后台启动

    将/usr/local/redis/etc/reids.conf中的daemonize的值从no改为yes

  8. 启动redis并指定配置文件

    $/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
  9. 查看redis是否启动成功

    $ps -ef|grep redis
  10. 查看是否有redis服务或者查看端口

    $netstat -tunpl|grep 6379
  11. 关闭redis

    • $pkill redis-server
    • $kill pid
    • $redis-cli shutdown

(2) Ubuntu直接安装Reids

$sudo apt-get update
$sudo apt-get install redis-server

(二) Redis伪集群搭建

redis集群需要至少要三个master节点,我们这里搭建创建一个具有3个master节点和3个slave节点的集群.

  1. 在/usr/local下创建文件夹redis-cluster,然后在其下面分别创建6个文件夾

    $mkdir -p /usr/local/redis-cluster
    $cd /usr/local/redis-cluster
    $mkdir 6381 6382 6383 6384 6385 6386
  2. 将之前的redis.conf配置文件复制到6381下,并修改以下内容:

    • daemonize yes
    • port 6381 (对应端口)
    • bind 192.168.1.114 (绑定当前机器ip)
    • dir /usr/local/reids-cluster/6381/ (指定数据文件存放位置)
    • cluster-enabled yes (启动集群模式)
    • cluster-config-file nodes-6381.conf (文件命名最好和port对应上)
    • cluster-node-timeout 5000
    • appendonly yes
  3. 重复第2步,将6381/redis.conf配置文件复制到其余目录下,注意修改端口号

    
    #vim中使用批量替换
    
    :%s/原字符串/替换字符串/g
  4. 安装redis-trib

    利用Redis Cluster命令行实用程序(redis-trib),向节点写入一些配置来创建我们的集群.redis-trib是一个Ruby程序,需要安装redis gem才能运行.

    $sudo apt-get install ruby
    $sudo apt-get install rubygems-integration
    $sudo gem install redis
  5. 分别启动6个reids实例,并检查是否启动成功

    $/usr/local/redis/bin/redis-server /usr/local/redis-cluster/638*/redis.conf
    $ps -ef|grep redis
  6. 进入redis-4.0.9/src目录下运行redis-trib.rb,创建群集

    ./redis-trib.rb create --replicas 1 192.168.1.114:6381 192.168.1.114:6382 192.168.1.114:6383 192.168.1.114:6384 192.168.1.114:6385 192.168.1.114:6386

    create 创建一个新的集群

    –replicas 1 意味每个主节点有一个从节点

    6384是6381的从节点,…,6386是6383的从节点

    运行命令后,Redis-trib会为你提供一个配置。输入yes即可接受建议的配置。

    成功则会出现:[OK] All 16384 slots covered

  7. 验证集群

    $ redis-cli -c -h 192.168.1.114 -p 6381(-c表示集群模式)
    redis 192.168.1.114:6381> set foo bar
    -> Redirected to slot [12182] located at 192.168.1.114:6383
    OK
    redis 192.168.1.114:7002> set hello world
    -> Redirected to slot [866] located at 192.168.1.114:6381
    OK
    redis 192.168.1.114:6381> get foo
    -> Redirected to slot [12182] located at 192.168.1.114:6383
    "bar"
    redis 192.168.1.114:6381> get hello
    -> Redirected to slot [866] located at 192.168.1.114:6381
    "world"
    redis 192.168.1.114:6381> cluster info(查看集群信息)
    redis 192.168.1.114:6381> cluster nodes(查看节点列表)

(三) java操作redis集群

  1. 加入依赖

    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>2.9.0</version>
    </dependency>
  2. java访问redis集群

    public static void main(String[] args) throws IOException {
        Set<HostAndPort> jedisClusterNode = new HashSet<>();
        jedisClusterNode.add(new HastAndPost("192.168.1.114",6381));
        jedisClusterNode.add(new HastAndPost("192.168.1.114",6382));
        jedisClusterNode.add(new HastAndPost("192.168.1.114",6383));
        jedisClusterNode.add(new HastAndPost("192.168.1.114",6384));
        jedisClusterNode.add(new HastAndPost("192.168.1.114",6385));
        jedisClusterNode.add(new HastAndPost("192.168.1.114",6386));
    
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxTotal(100);
        config.setMaxIdle(10);
        config.setTestOnBorrow(true);
    
        JedisCluster jedisCluster = new JedisCluster(jedisClusterNode,6000,10,config);
        System.out.println(jedisCluster.set("foo","bar"));
        System.out.println(jedisCluster.set("hello","world"));
        System.out.println(jedisCluster.get("foo"));
        System.out.println(jedisCluster.get("hello"));
        jedisCluster.close();
    }

官方教程:https://redis.io/topics/cluster-tutorial

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值