• 高性能高并发网站架构,教你搭建Redis5缓存集群


    一、Redis集群介绍

    Redis真的是一个优秀的技术,它是一种key-value形式的NoSQL内存数据库,由ANSI C编写,遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 Redis最大的特性是它会将所有数据都放在内存中,所以读写速度性能非常好。Redis是基于内存进行操作的,性能较高,可以很好的在一定程度上解决网站一瞬间的并发量,例如商品抢购秒杀等活动。

    网站承受高并发访问压力的同时,还需要从海量数据中查询出满足条件的数据,需要快速响应,前端发送请求、后端和mysql数据库交互,进行sql查询操作,读写比较慢,这时候引入Redis ,把从mysql 的数据缓存到Redis 中,下次读取时候性能就会提高;当然,它也支持将内存中的数据以快照和日志的形式持久化到硬盘,这样即使在断电、机器故障等异常情况发生时数据也不会丢失,Redis能从硬盘中恢复快照数据到内存中。

    Redis 发布了稳定版本的 5.0 版本,放弃 Ruby的集群方式,改用 C语言编写的 redis-cli的方式,是集群的构建方式复杂度大大降低。Redis-Cluster集群采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接。

    为了保证数据的高可用性,加入了主从模式,一个主节点对应一个或多个从节点,主节点提供数据存取,从节点则是从主节点拉取数据备份,当这个主节点挂掉后,就会有这个从节点选取一个来充当主节点,从而保证集群不会挂掉。

    redis-cluster投票:容错,投票过程是集群中所有master参与,如果半数以上master节点与master节点通信超过(cluster-node-timeout),认为当前master节点挂掉。

    集群中至少应该有奇数个节点,所以至少有三个节点,每个节点至少有一个备份节点,所以下面使用6节点(主节点、备份节点由redis-cluster集群确定)。6个节点分布在一台机器上,采用三主三从的模式。实际应用中,最好用多台机器,比如说6个节点分布到3台机器上,redis在建立集群时为自动的将主从节点进行不同机器的分配。

    二、单机redis模式

    下载源码redis5.0并解压编译

    ​wget http://download.redis.io/releases/redis-5.0.0.tar.gz
    tar xzf redis-5.0.0.tar.gz
    cd redis-5.0.0
    make

    redis前端启动需要改成后台启动.

    修改redis.conf文件,将daemonize no -> daemonize yes
    vim redis.conf
    启动redis
    /www/server/redis/src/redis-server /www/server/redis/redis.conf
    查看redis是否在运行 
    ps aux|grep redis

      

    现在是单机redis模式完成。

    三、redis集群模式:

    1.创建6个Redis配置文件

    cd /usr/local/
    mkdir redis_cluster  //创建集群目录
    cd redis_cluster
    mkdir 7000 7001 7002 7003 7004 7005//分别代表6个节点    
    其对应端口 7000 7001 7002 70037004 7005
    

    2.复制配置文件到各个目录

    cp /www/server/redis/redis.conf  /usr/local/redis_cluster/7000/
    cp /www/server/redis/redis.conf  /usr/local/redis_cluster/7001/
    cp /www/server/redis/redis.conf  /usr/local/redis_cluster/7002/
    cp /www/server/redis/redis.conf  /usr/local/redis_cluster/7003/
    cp /www/server/redis/redis.conf  /usr/local/redis_cluster/7004/
    cp /www/server/redis/redis.conf  /usr/local/redis_cluster/7005/ 

     3.分别修改配置文件

    vim /usr/local/redis_cluster/7000/redis.conf
    vim /usr/local/redis_cluster/7001/redis.conf
    vim /usr/local/redis_cluster/7002/redis.conf
    vim /usr/local/redis_cluster/7003/redis.conf
    vim /usr/local/redis_cluster/7004/redis.conf
    vim /usr/local/redis_cluster/7005/redis.conf

     如下

    port 7000 #端口
    cluster-enabled yes #启用集群模式
    cluster-config-file nodes_7000.conf #集群的配置 配置文件首次启动自动生成
    cluster-node-timeout 5000 #超时时间 5秒
    appendonly yes #aof日志开启 它会每次写操作都记录一条日志
    daemonize yes #后台运行
    protected-mode no #非保护模式
    pidfile  /var/run/redis_7000.pid
    //下面可以不写
    #若设置密码,master和slave需同时配置下面两个参数:
    masterauth "jijiji" #连接master的密码
    requirepass "jijiji" #自己的密码 

    cluster-config-file,port,pidfile对应数字

    4.启动节点

    cd /www/server/redis/src/
    ./redis-server /usr/local/redis_cluster/7000/redis.conf
    ./redis-server /usr/local/redis_cluster/7001/redis.conf
    ./redis-server /usr/local/redis_cluster/7002/redis.conf
    ./redis-server /usr/local/redis_cluster/7003/redis.conf
    ./redis-server /usr/local/redis_cluster/7004/redis.conf
    ./redis-server /usr/local/redis_cluster/7005/redis.conf

     查看redis运行

    ps aux|grep redis

     

    5.启动集群

    /www/server/redis/src/redis-cli --cluster create 127.0.0.1:7000 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  --cluster-replicas 1
    

     这里使用的命令是create,因为我们要创建一个新的集群。 该选项--cluster-replicas 1意味着我们希望每个创建的主服务器都有一个从服。 

     

    输入yes

    至此,Reids5 集群搭建完成。

    6.检查Reids5集群状态

    可以执行redis-cli --cluster check host:port检查集群状态slots详细分配。 

    redis-cli --cluster info 127.0.0.1:7000

    7.停止Reids5集群

    (1).因为Redis可以妥善处理SIGTERM信号,所以直接kill -9也是可以的,可以同时kill多个,然后再依次启动。

    kill -9 PID PID PID

    (2).redis5 提供了关闭集群的工具,修改文件: /www/server/redis/utils/create-cluster/create-cluster

    端口PROT设置为6999,NODES为6,工具会生成 7000-7005 六个节点 用于操作。

    修改后,执行如下命令关闭集群:

    /www/server/redis/utils/create-cluster/create-cluster stop  

    重新启动集群:

    /www/server/redis/utils/create-cluster/create-cluster start 

    8.帮助信息

    执行redis-cli --cluster help,查看更多帮助信息

    redis-cli --cluster help
    

      

  • 相关阅读:
    面试题:增强一个对象的方法的三种方式
    Spring笔记01_下载_概述_监听器
    mybatis笔记02
    mybatis笔记01
    muduo学习笔记(二)Reactor关键结构
    Muduo学习笔记(一) 什么都不做的EventLoop
    一个linux下简单的纯C++实现Http请求类(GET,POST,上传,下载)
    一个轻巧高效的多线程c++stream风格异步日志(二)
    一个轻巧高效的多线程c++stream风格异步日志(一)
    C++智能指针,指针容器原理及简单实现(auto_ptr,scoped_ptr,ptr_vector).
  • 原文地址:https://www.cnblogs.com/hiit/p/11105237.html
Copyright © 2020-2023  润新知