使用 Sentinel 实现 Redis 集群高可用部署

本文详细介绍了Redis的概述、安装、基本操作、持久化机制、主从复制和Sentinel高可用部署。Redis是一款内存数据存储系统,支持多种数据结构如字符串、列表、哈希表等。通过主从复制确保数据一致性,Sentinel系统则能自动监测和处理主服务器故障,保证服务的高可用性。此外,文中还提及了Redis的用户认证、性能测试命令以及配置参数详解。

Redis 概述

  • Redis 的出现时间并不长,是 NoSQL 中的一种,基于键-值型的存储,在 2009 年第一次发布 Redis。
  • Redis 全称(Remote Dictionary Server)远程字典服务器,而这个字典服务器从本质上来讲,主要是提供数据结构的远程存储功能的,可以理解为 Redis 是一个高级的 K-V 存储和数据结构存储,因为 Redis除了能够存储 K-V 这种简单的数据之外,还能够存储,列表、字典、hash 表、等对应的数据结构。
  • Redis 支持主从模式,Redis 能够借助于 Sentinel 工具来监控主从节点,当主节点发生故障时,会自
  • 己提升另外一个从节点成为新的主节点。 sentinel [ˈsentɪnl] 哨兵
  • Redis 官网:https://redis.io 

Redis 所支持的数据类型

  • 支持存储的数据类型有、String(字符串,包含整数), List(列表), Hash(关联数组), Sets(集合), Sorted Sets(有序集合), Bitmaps(位图), HyperLoglog
  • Redis 性能评估
  • 100 万较小的键存储字符串,大概消耗 100M 内存
  • 由于 Redis 是单线程,如果服务器主机上有多个 CPU,只有一个能够使用,但并不意味着 CPU 会成为瓶颈,因为 Redis 是一个比较简单的 K-V 数据存储,CPU 通常不会成为性能瓶颈
  • 在常见的 linux 服务器上,500K(50 万)的并发,只需要一秒钟处理,如果主机硬件较好的情况下,每秒钟可以达到上百万的并发
  • Redis 与 Memcache 对比
  • Memcache 只能使用内存来缓存对象,若要持久化,需要第三方插件的支持。而 Redis 除了可以使用内存来缓存对像,还可以周期性的将数据保存到磁盘上,对数据进行永久存储。当服务器突然断电或死机后, redis 基于磁盘中的数据进行恢复。
  • Redis 是单线程服务器,只有一个线程来响应所有的请求。Memcache 是多线程的
  • Redis 支持更多的数据类型

  • 试验环境

  • 系统统一使用   CentOS 7.6   防火墙、iptables以及 SElinux 均为关闭状态
  • 192.168.2.23    c7_2_23_redis1     Master
  • 192.168.2.24    c7_2_24_redis2     Slave1
  • 192.168.2.25    c7_2_25_redis3     Slave2
  • 使用 Remi repository 源安装 redis

  • 扩展:Remi repository 是什么源?
    Remi repository 是包含最新版本 PHP 和 MySQL 包的 Linux 源,由 Remi 提供维护。有了这个源之后,使用 YUM 安装或更新 PHP、MySQL、phpMyAdmin 等服务器相关程序的时候就非常方便了。但与此同时,Remi 源也提供了目前最新版本的 Redis,可以通过该源使用 YUM 安装目前最新版本的 Redis。
  • 在安装 Remi repository 源时,需要依赖 epel 源,因此先安装 epel 源
  • 这里使用 aliyun 的源

  • 分别在3台服务器上安装 Remi repository 源

  • yum -y install  http://rpms.remirepo.net/enterprise/remi-release-7.rpm
  • 查看 源文件 
  • yum repolist all
  • 使用 remi repository 源安装 Redis
    yum --enablerepo=remi install -y redis
  • 注:/etc/yum.repos.d/remi.repo 源安装完成后,默认为disabled,使用--enablerepo=remi 选项指定使用 remi repository 源进行安装。
  • 查看 Redis 版本
    redis-cli --version

  • 启动 Redis
  • systemctl enable redis.service --now
  • redis 默认端口为 6379

  • Redis 基本操作

  • Redis 配置文件参数说明
  • Redis 配置文件存放路径:/etc/redis.conf
    vim /etc/redis.conf              #配置文件中主要参数如下
    改:69 bind 127.0.0.1
    为:69 bind 0.0.0.0         #redis 监听的地址,默认监听在 127.0.0.1 地址上,改为 0.0.0.0 地址或192.168.2.23

以下内容,保持不变,大家可以了解一下,每个配置的含意:
protected-mode yes    #参数是为了禁止外网访问 redis,如果启用了,则只能够通过 lookback ip(127.0.0.1)访问 Redis。
port 6379                     #默认监听端口:6379。
tcp-backlog 511          #指定 tcp-backlog 的长度。backlog 是一个等待队列。当有大量请求需要redis 处理时,redist 有可能处理不过来,需要等待的请求队列会通过 backlog 来缓存。backlog 的数量决定了可以缓存的队列数。
unixsocket /tmp/redis.sock         #指定使用 sock 文件通信及 sock 文件位置,如果服务端和客户都在同一台主机上,建议打开此项,基于 sock 方式通信可以直接在内存中交换,数据不用再经过 TCP/TP 协议栈进行封装、拆封。
unixsocketperm 700       #定义 sock 文件的访问权限。
timeout 0                        #表示当客户端连接成功后,空闲(非活跃、或没有任何数据交互)多长时间则连接超时,0 表示不启用此功能。
tcp-keepalive 300          #定义是否启用 tcp-keepalive 功能。长链接功能。
daemonize no               #如果需要在后台运行,把该项改为 yes。如果使用 redis 服务脚本启动,即使daemonize 为 no,也会运行为一个守护进程。
supervised no               #定义是 upstart 还是 systemd 接管 redis 进程。默认无监督互动,不需要修改。
loglevel notice               #定义日志级别。
logfile /var/log/redis/redis.log      #定义日志文件。
databases 16                             #定义 redis 默认有多少个 databases,但是在分布式中,只能使用一个。
# masterauth <master-password>     #如果连接主数据库时需要密码验证,在这里指定密码。默认不启用。
# 限制同时连接的客户端数量。超过数量将不再接受新的请求并返回错误信息。
# maxclients 10000          #设置同时连接 redis 客户端的最大数量。  

  • 登录 Redis
  • redis-cli 
  • 选项:
  • -h <hostname> 指定主机 IP -p <port> 指定端口 socket 文件进行通信。
  • redis-cli -h 127.0.0.1                     #连接 redis,默认不启用密码认证。
  • 127.0.0.1:6379> exit                    #退出连接。
  • 或:
  • redis-cli                             #使用 redis-cli 直接连接,默认连接是 127.0.0.1 IP。 
  • Redis 字符串(String)操作
    键的命名规则遵循
    1.可以使用 ASCII 字符
    2.键的长度不要过长,键的长度越长则消耗的空间越多
    3.在同一个库中(名称空间),键的名称不得重复,如果复制键的名称,实际上是修改键中的值
    4.在不同的库中(名称空间),键的多种名称可以重复
    5.键可以实现自动过期
  • 设置键 system 的值为 centos
  • 127.0.0.1:6379> set system centos
    OK
    127.0.0.1:6379> get system
    "centos"

  • 定义一个键 name 值为 zhangsan,并设置过期时间为 60 秒。
    127.0.0.1:6379> set name zhangsan EX 60

  • 开启 redis 用户认证服务
    vim /etc/redis.conf
    改:507 # requirepass foobared   #启用此项,并指定密码即可。
    为:507 requirepass 123456        #指定密码为 123456。

    systemctl restart redis                   #重启服务。
  • edis-cli
    127.0.0.1:6379> get name
    (error)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值