zoukankan      html  css  js  c++  java
  • Redis安装

    1.单机安装

    redis官网:http://redis.io/
    解压:tar -zxvf redis-3.0.0.tar.gz
    编译、安装
    make
    make install
    拷贝配置文件
    cp redis/redis.conf /etc/
    修改配置文件redis.conf
    daemonize yes(后台运行)
    logfile /usr/local/redis/log(日志文件)
    启动
    redis-server /etc/redis.conf [--port 6379]
    redis客户端
    redis-cli [-h 127.0.0.1] [-p 6379]
    关闭
    redis-cli shutdown

    2.redis集群简介

    redis集群是一个可以在多个节点之间进行数据共享的设施。redis集群提供了以下两个好处
    1:将数据自动切分(split)到多个节点
    2:当集群中的某一个节点故障时,redis还可以继续处理客户端的请求。
    一个 Redis 集群包含 16384 个哈希槽(hash slot),数据库中的每个数据都属于这16384个哈希槽中的一个。集群使用公式 CRC16(key) % 16384 来计算键 key 属于哪个槽。集群中的每一个节点负责处理一部分哈希槽。这样的话就可以很方便的向集群中添加或者移除节点。(假设集群中有A B C 三个节点)
    添加节点:如果要添加一个D节点到集群中,首先要把这个节点添加到集群,然后还需要将节点ABC中的某些哈希槽移动到节点D。
    移除节点:如果要移除节点A,那么只需要把节点A中的所有哈希槽转移到节点B和节点C中,然后再移除空白节点A就可以了。
    集群中的主从复制
    集群中的每个节点都有1个至N个复制品,其中一个为主节点,其余的为从节点,如果主节点下线了,集群就会把这个主节点的一个从节点设置为新的主节点,继续工作。这样集群就不会因为一个主节点的下线而无法正常工作。
    注意:如果某一个主节点和他所有的从节点都下线的话,redis集群就会停止工作了。
    redis集群不保证数据的强一致性,在特定的情况下,redis集群会丢失已经被执行过的写命令
    使用异步复制(asynchronous replication)是 Redis 集群可能会丢失写命令的其中一个原因
    网络原因,如果网络断开时间太长,redis集群就会启用新的主节点,之前发给主节点的数据就会丢失。

    3.集群安装

    下载redis3.0.0
    修改配置文件redis.conf
    daemonize yes
    port 7000
    cluster-enabled yes
    cluster-config-file nodes.conf
    cluster-node-timeout 5000
    要让集群正常运作至少需要三个主节点
    创建集群命令
    ./redis-trib.rb  create --replicas 1 192.168.1.160:7000 192.168.1.160:7001 192.168.1.160:7002 192.168.1.160:7003 192.168.1.160:7004 192.168.1.160:7005
    详细安装信息参考<<redis-3.0集群配置文档>>

    ---------------------------------------------<<redis-3.0集群配置文档>>------------------------------------------------------------

    Redis3.0集群部署文档(centos6.5系统)

    (要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下)

    192.168.1.160:7000
    192.168.1.160:7001

    192.168.1.160:7002

    192.168.1.160:7003

    192.168.1.160:7004

    192.168.1.160:7005

    1:下载redis。官网下载3.0.0版本,之前2.几的版本不支持集群模式

    下载地址:http://download.redis.io/releases/redis-3.0.0.tar.gz

    2:上传服务器,解压,编译

    tar -zxvf redis-3.0.0.tar.gz

    mv redis-3.0.0.tar.gz redis3.0

    cd /usr/local/redis3.0

    make

    make install

    3:创建集群需要的目录

    mkdir -p /usr/local/cluster

    cd /usr/local/cluster

    mkdir 7000

    mkdir 7001

    mkdir 7002

    mkdir 7003

    mkdir 7004

    mkdir 7005

    4:修改配置文件redis.conf

    cp /usr/local/redis3.0/redis.conf /usr.local/cluster

    vi redis.conf

    ##修改配置文件中的下面选项

    port 7000

    daemonize yes

    cluster-enabled yes

    cluster-config-file nodes.conf

    cluster-node-timeout 5000

    appendonly yes

    ##修改完redis.conf配置文件中的这些配置项之后把这个配置文件分别拷贝到7000/7001/7002/7003/7004/7005目录下面

    cp /usr/local/cluster/redis.conf /usr/local/cluster/7000

    cp /usr/local/cluster/redis.conf /usr/local/cluster/7001

    cp /usr/local/cluster/redis.conf /usr/local/cluster/7002

    cp /usr/local/cluster/redis.conf /usr/local/cluster/7003

    cp /usr/local/cluster/redis.conf /usr/local/cluster/7004

    cp /usr/local/cluster/redis.conf /usr/local/cluster/7005

    ##注意:拷贝完成之后要修改7001/7002/7003/7004/7005目录下面redis.conf文件中的port参数,分别改为对应的文件夹的名称

    5:分别启动这6个redis实例

    cd /usr/local/cluster/7000

    redis-server redis.conf

    cd /usr/local/cluster/7001

    redis-server redis.conf

    cd /usr/local/cluster/7002

    redis-server redis.conf

    cd /usr/local/cluster/7003

    redis-server redis.conf

    cd /usr/local/cluster/7004

    redis-server redis.conf

    cd /usr/local/cluster/7005

    redis-server redis.conf

    ##启动之后使用命令查看redis的启动情况ps -ef|grep redis

    如下图显示则说明启动成功

    clip_image002

    6:执行redis的创建集群命令创建集群

    cd /usr/local/redis3.0/src

    ./redis-trib.rb create --replicas 1 192.168.1.160:7000 192.168.1.160:7001 192.168.1.160:7002 192.168.1.160:7003 192.168.1.160:7004 192.168.1.160:7005

    6.1执行上面的命令的时候可能会报错,因为是执行的ruby的脚本,需要ruby的环境

    错误内容:/usr/bin/env: ruby: No such file or directory

    所以需要安装ruby的环境,这里推荐使用yum install ruby安装

    yum install ruby

    6.2然后再执行第6步的创建集群命令,可能还会报错,提示缺少rubygems组件,使用yum安装

    错误内容:

    ./redis-trib.rb:24:in `require': no such file to load -- rubygems (LoadError)

    from ./redis-trib.rb:24

    yum install rubygems

    6.3再次执行第6步的命令,可能还会报错,提示不能加载redis,是因为缺少redis和ruby的接口,使用gem 安装

    错误内容:

    /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- redis (LoadError)

    from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'

    from ./redis-trib.rb:25

    gem install redis

    clip_image003

    6.4 再次执行第6步的命令,正常执行

    clip_image005

    输入yes,然后配置完成。

    clip_image006

    至此redis集群即搭建成功!

    7:使用redis-cli命令进入集群环境

    redis-cli -c -p 7000

    Redis3.0集群添加节点

    1:首先把需要添加的节点启动

    cd /usr/local/cluster/

    mkdir 7006

    cp /usr/local/cluster/redis.conf /usr/local/cluster/7006/

    cd /usr/local/cluster/7006/

    vi redis.conf

    ##修改redis.conf中的port参数的值为7006

    redis-server redis.conf

    2:执行以下命令,将这个新节点添加到集群中

    cd /usr/local/redis3.0/src/

    ./redis-trib.rb add-node 192.168.1.160:7006 192.168.1.160:7000

    clip_image008

    3:执行命令redis-cli -c -p 7000 cluster nodes,查看刚才新增的节点

    clip_image010

    4:增加了新的节点之后,这个新的节点可以成为主节点或者是从节点

    4.1 把这个节点变成主节点,使用redis-trib程序,将集群中的某些哈希槽移动到新节点里面, 这个新节点就成为真正的主节点了。

    执行下面的命令对集群中的哈希槽进行移动

    cd /usr/local/redis3.0/src

    ./redis-trib.rb reshard 192.168.1.160:7000

    系统会提示我们要移动多少哈希槽,这里移动1000个

    clip_image012

    然后还需要指定把这些哈希槽转移到哪个节点上,

    clip_image014

    输入我们刚才新增的节点的ID

    f32dc088c881a6b930474fc5b52832ba2ff71899

    然后需要我们指定转移哪几个几点的哈希槽

    clip_image016

    输入all 表示从所有的主节点中随机转移,凑够1000个哈希槽

    然后再输入yes,redis集群就开始分配哈希槽了。

    至此,一个新的主节点就添加完成了,执行命令查看现在的集群中节点的状态

    redis-cli -c -p 7000 cluster nodes

    clip_image018

    4.2:把这个节点变成从节点

    前面我们已经把这个新节点添加到集群中了,现在我们要让新节点成为192.168.1.160:7001的从节点,只需要执行下面的命令就可以了,命令后面的节点ID就是192.168.1.160:7001的节点ID

    redis-cli -c -p 7006 cluster replicate 0b00721a509444db793d28448d8f02168b94bd38

    使用下面命令来确认一下192.168.1.160:7006是否已经成为192.168.1.160:7001的从节点

    redis-cli -p 7000 cluster nodes | grep slave | grep 0b00721a509444db793d28448d8f02168b94bd38

    看到下面图片中的情况就表示添加成功

    clip_image020

    Redis3.0集群删除节点

    1:如果删除的节点是主节点,这里我们删除192.168.1.160:7006节点,这个节点有1000个哈希槽

    首先要把节点中的哈希槽转移到其他节点中,执行下面的命令

    cd /usr/local/redis3.0/src

    ./redis-trib.rb reshard 192.168.1.160:7000

    系统会提示我们要移动多少哈希槽,这里移动1000个,因为192.168.1.160:7006节点有1000个哈希槽

    然后系统提示我们输入要接收这些哈希槽的节点的ID,这里使用192.168.1.160:7001的节点ID

    然后要我们选择从那些节点中转出哈希槽,这里一定要输入192.168.1.160:7006这个节点的ID,最后输入 done 表示输入完毕

    最后一步,使用下面的命令把这个节点删除

    cd /usr/local/redis3.0/src/

    ./redis-trib.rb del-node 192.168.1.160:7000 需要删除的节点ID

    2:如果节点是从节点的,直接使用下面的命令删除即可。

    cd /usr/local/redis3.0/src/

    ./redis-trib.rb del-node 192.168.1.160:7000 需要删除的节点ID

  • 相关阅读:
    wenti
    vim
    在两种情况下设备与驱动会发生匹配
    用Qt图形视图框架开发拼图游戏
    Android RecyclerView添加Header头部
    Android Glide加载图片时转换为圆形、圆角、毛玻璃等图片效果
    Java 集合深入理解(4):List<E> 接口
    你们公司有职业通路图吗
    linux系统性能监控--内存利用率
    linux系统性能监控--CPU利用率
  • 原文地址:https://www.cnblogs.com/chaoren399/p/4817333.html
Copyright © 2011-2022 走看看