redis安装和redis集群配置

来源:互联网 发布:mac压缩包打不开 编辑:程序博客网 时间:2024/06/05 09:25

redis介绍

  1. 什么是redis
    Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库. 他通过提供多种数据类型来适应不同场景下的存储需求, 目前Redis键值数据类型有
    字符串类型, 散列类型, 列表类型, 集合类型, 有序集合类型

  2. redis的应用场景
    缓存(数据查询, 短连接, 新闻内容, 商品内容等)
    分布式集群架构中的session分离
    聊天室的在线好友列表
    任务列表
    应用排行榜
    网站访问统计
    数据过期处理(可以精确到毫秒)

  3. redis的安装
    redis是C语言开发, 建议在linux上运行, 这里使用Centos7作为安装环境, 安装redis需要先将官网下的源码进行编译, 编译依赖gcc环境, 如果没有gcc环境 需要安装gcc: yum install gcc-c++
    这里使用的是redis-4.0.2
    将redis-4.0.0.tar.gz拷贝到/usr/local下(不一定要放在/usr/local下)
    ①解压源码
    tar -zxvf redis-4.0.2.tar.gz
    ②进入解压后的目录进行编译
    cd /usr/local/redis-4.0.2
    make
    ③安装到指定目录, 如/usr/local/redis
    cd /usr/local/redis-4.0.2
    make install PREFIX=/usr/local/redis
    ⑤拷贝配置文件到安装目录下
    进入源码目录, 里面有一份配置文件redis.conf, 然后将其拷贝到安装路径下
    cd /usr/local/redis-4.0.2
    cp redis.conf /usr/local/redis/bin
    cd /usr/local/redis/bin
    输入 ll 查看
    这里写图片描述
    这里写图片描述
    redis-sentinel是redis集群管理工具可实现高可用

  4. redis启动
    ①直接运行bin/redis-server将以前端模式启动,前端模式启动的缺点是ssh命令窗口关闭则redis-server程序结束,不推荐使用此方法, 如下图:
    这里写图片描述
    ②后端模式启动
    修改redis.conf配置文件, daemonize yes 以后端模式启动
    执行如下命令启动redis:
    cd /usr/local/redis/bin
    ./redis-servcer redis.conf
    输入ps aux|grep redis
    这里写图片描述
    redis默认使用6379端口

  5. 到这里redis基本配置好了
    这里写图片描述

redis集群

1.redis-cluster架构图
这里写图片描述
架构细节
(1)所有的redis节点彼此互联(PING-PONG机制),
内部使用二进制协议优化传输速度和带宽
(2)节点的fail是通过集群中超过半数的节点检测失效时才生效
(3)客户端与redis节点直连, 不需要中间proxy层, 客户端不需要连接集群所有节点, 连接集群中任何一个可用节点即可
(4)redis-cluster把所有的物理节点映射到[0-16383]slot上, cluster负责维护

Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点

2.redis-cluster投票: 容错
这里写图片描述
(1)领着投票过程是集群中所有master参与, 如果半数以上master节点与master节点通信超过(cluster-node-timeout), 认为当前master节点挂掉
(2):什么时候整个集群不可用(cluster_state:fail)?
a:如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成集群的slot映射[0-16383]不完成时进入fail状态.
b:如果集群超过半数以上master挂掉,无论是否有slave集群进入fail状态.
ps:当集群不可用时,所有对集群的操作做都不可用,收到((error) CLUSTERDOWN The cluster is down
错误
下面开始搭建集群环境

3.ruby环境
redis集群管理工具redis-trib.rb依赖ruby环境, 首先需要安装ruby环境
安装ruby
yum install ruby
安装ruby和redis的接口程序
gem install redis

这时候可能会报错 如下图
这里写图片描述
决解方法如下
yum install curl
然后输入查看 ruby最新版本
source /usr/local/rvm/scripts/rvm
rvm list known
这里写图片描述
最新版本是2.4.1
接着输入 rvm install 2.4.1进行安装
安装完成后
rvm use 2.4.1
rvm remove 2.0.0
gem install redis
这里写图片描述

4.集群搭建
这里创建6个redis实例, 端口号从7001 - 7006

①在/usr/local下创建redis-cluster目录
cd /usr/local
mkdir redis-cluster
cd redis
cp -r bin ../redis-cluster/redis01
cd ../redis-cluster
cd redis01
rm -f dump.rdb
然后修改redis.conf
vim redis.conf
这是第一个端口号就修改为7001
这里写图片描述
接着开启cluster-enabled 默认是被注释了
这里写图片描述

②接着复制
cp -r redis01/ redis02
cp -r redis01/ redis03
cp -r redis01/ redis04
cp -r redis01/ redis05
cp -r redis01/ redis06
依次打开修改下面的redis.conf的端口号改为7002 7003…7006

③将redis源码目录src下的redis-trib.rb拷贝到redis-cluster目录下
cd /usr/local/redis
cp *.rb /usr/local/redis-cluster/
cd /usr/local/redis-cluster
ll
这里写图片描述

④创建一个脚本方便开启redis
cd /usr/local/redis-cluster
vim startall.sh
编辑内容为
这里写图片描述
输入./startall.sh运行
这时候可能会提示权限不够
输入chmod +x startall.sh
这里写图片描述

⑤执行创建集群命令
127.0.0.1换为端口所在的ip, 我这里是127.0.0.1
可以输入ps axu|grep redis查看
./redis-trib.rb create –replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006
这里写图片描述

⑥测试集群 -p 任意节点都可以, 主从节点都可以
-c代表集群
redis01/redis-cli -h 127.0.0.1 -p 7002 -c
这里写图片描述

⑧集群的关闭
cd /usr/local/redis-cluster
创建一个脚本
vim shutdown.sh
内容是
这里写图片描述
chmod +x shutdown.sh
关闭集群
./shutdown.sh

原创粉丝点击