目录


reids集群模式介绍

开始安装

主机规划

前期准备

配置文件-6379端口

配置文件-6380端口

补充

Redis占用内存大小配置

Redis的内存淘汰


reids集群模式介绍

怎样连接redis集群 redis 连接集群_怎样连接redis集群

 

1. 所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。
2. 节点的fail是通过集群中超过半数的节点检测失效时才生效。
3. 客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可
4. redis cluster 为了保证数据的高可用性,加入了主从模式,一个主节点对应一个或多个从节点,主节点
    提供数据存取,从节点则是从主节点拉取数据备份,当这个主节点挂掉后,就会有这个从节点选取一个
    来充当主节点,从而保证集群不会挂掉。
5.redis-cluster把所有的物理节点映射到[0-16384]slot上(不一定是平均分配),cluster 负责维护 node<->slot<->value。
6.Redis集群预分好16384个桶,当需要在 Redis 集群中放置一个 key-value 时,根据 CRC16(key)
    mod 16384的值,决定将一个key放到哪个桶中 

开始安装

主机规划

此教程是redis集群模式,使用了三台机器进行部署,如下是主机规划。

主机数量: 3台
配合: 1核1G
系统: centos:7
版本: CentOS Linux release 7.8.2003 (Core)
内核版本: 3.10.0-1127.el7.x86_64
防火墙: 关闭
selinux:关闭(setenforce 0)


IP规划
序号    服务类型    规划IP            备注(端口)

1      redis-1    192.168.241.5     6379
2      redis-1    192.168.241.5     6380
3      redis-2    192.168.241.6     6379
4      redis-2    192.168.241.6     6380
5      redis-3    192.168.241.123     6379
6      redis-3    192.168.241.123     6380


 


前期准备

ps ( #为注释 $为操作命令)


 #做的三主三从 把三台机都按照这个步骤做一遍
#安装所需插件

$ yum -y install wget gcc gcc-c++ make tar openssl openssl-devel cmake
#使用6.2.4的版本 直接从网上拉取
$wget http://download.redis.io/releases/redis-6.2.4.tar.gz
#解压安装 
$tar zxf redis-6.2.4.tar.gz  
#放置执行文件
$cd redis-6.2.4/src/ 
$cp redis-trib.rb /usr/local/bin
#安装

$cd /root/redis-6.2.4

#部署第一个redis  安装路径可以自己定义
$make PREFIX=/usr/local/redis1 install  

#部署第二个redis
$make MALLOC=libc PREFIX=/usr/local/redis2 install
#安装redis2的时候可能会出现一个错误 再次执行下就可以
$make MALLOC=libc PREFIX=/usr/local/redis2 install

#拷贝reids-cli到/usr/local/bin下

$cp /redis-6.2.4/src/redis-cli    /usr/local/bin/

配置文件-6379端口

配置文件-6379

从安装包里面的redis.conf模板修改 如下是行数 挨个修改即可

$cp /root/redis-6.2.4/redis.conf /usr/local/redis1
 $vim /usr/local/redis1/redis.conf  
     bind 0.0.0.0 // 测试环节,任何地址都可连接 75行
     port 6379 // 修改成对应的端口号  98行
     daemonize yes // 后台运行 257行
     pidfile /var/run/redis_6379.pid // pid文件 289行
     logfile "/usr/local/redis1/logs/redis.log" // 日志 302行
     requirepass 123456 //483行加入 连接到节点密码
     masterauth 123456 //484行  节点之间的互访访问的密码
     appendonly yes // 开启 aop 备份 1252行
     appendfsync always // 每写一条 备份 一次 1282行
     cluster-enabled yes // 开启 Redis Cluster 1385行
     cluster-config-file nodes-6379.conf // 记录集群信息,不用手动维护,Redis Cluster 会自动维护 1393行
     cluster-node-timeout 15000 // Cluster 超时时间 1399行
     cluster-require-full-coverage no // 只要有结点宕机导致16384个槽没全被覆盖,整个集群就全部停止服务,所以一定要改为no 1485行

#日志路径得手动创建否则会启动失败
$ mkdir /usr/local/redis1/logs
$touch  /usr/local/redis1/logs/redis.log
#启动
$cd /usr/local/redis1/
$nohup ./bin/redis-server redis.conf &

配置文件-6380端口

配置文件-6380

直接复制redis1的配置文件 修改下即可

$cp /usr/local/redis1/redis.conf  /usr/local/redis2/redis.conf
$vim /usr/local/redis2/redis.conf  
     bind 0.0.0.0 // 测试环节,任何地址都可连接 75
     port 6380 // 修改成对应的端口号 98
     daemonize yes // 后台运行 257
     pidfile /usr/local/redis2/redis_6380.pid // pid文件 289
     logfile "/usr/local/redis2/logs/redis.log" // 日志 302
     requirepass 123456 //483行加入 连接到节点密码
     masterauth 123456 //484行  节点之间的互访访问的密码
     appendonly yes // 开启 aop 备份  1252
     appendfsync always // 每写一条 备份 一次 1281
     cluster-enabled yes // 开启 Redis Cluster 1358
     cluster-config-file nodes-6380.conf // 记录集群信息,不用手动维护,Redis Cluster 会自动维护 1393
     cluster-node-timeout 15000 // Cluster 超时时间 1399
     cluster-require-full-coverage no // 只要有结点宕机导致16384个槽没全被覆盖,整个集群就全部停止服务,所以一定要改为no   1458


#日志路径得手动创建否则会启动失败
$ mkdir /usr/local/redis1/logs
$touch  /usr/local/redis1/logs/redis.log
#启动
$cd /usr/local/redis2/
$./bin/redis-server redis.conf
查看进程是否存在
$ ps -ef | grep redis
查看端口是否存在
$ ss -ntlp | grep 6379 
$ ss -ntlp | grep 6380

 

怎样连接redis集群 redis 连接集群_redis_02

 

怎样连接redis集群 redis 连接集群_java_03

 

#开始使用 Redis 自带集群管理工具创建集群
#创建集群,--cluster-replicas 1指定从库数量1,创建顺序三主-三从。即主-主-主-从-从-从。
#如果redis设置了密码,则创建集群时需要添加密码信息 -a 密码:

redis-cli --cluster create  ip+端口   ip+端口    ip+端口   ip+端口   ip+端口   ip+端口   --cluster-replicas 1 -a 123456

#看到如 [OK] All 16384 slots covered. 的提示说明集群创建成功。
#可以进入redis里面查看 随便进入一个都可以查看到集群信息

怎样连接redis集群 redis 连接集群_数据库_04

 

怎样连接redis集群 redis 连接集群_redis_05

 

 

 至此集群安装完毕...  


补充

Redis占用内存大小配置

我们知道Redis是基于内存的key-value数据库,因为系统的内存大小有限,所以我们在使用Redis的时候可以配置Redis能使用的最大的内存大小。

1、通过配置文件配置

通过在Redis安装目录下面的redis.conf配置文件中添加以下配置设置内存大小 //设置Redis最大占用内存大小为100M maxmemory 100mb redis的配置文件不一定使用的是安装目录下面的redis.conf文件,启动redis服务的时候是可以传一个参数指定redis的配置文件的

2、通过命令修改

#Redis支持运行时通过命令动态修改内存大小 //设置Redis最大占用内存大小为100M 127.0.0.1:6379> config set maxmemory 100mb //获取设置的Redis能使用的最大内存大小 127.0.0.1:6379> config get maxmemory 1) "maxmemory" 2) "0" #如果不设置最大内存大小或者设置最大内存大小为0,在64位操作系统下不限制内存大小,在32位操作系统下最多使用3GB内存

Redis的内存淘汰

既然可以设置Redis最大占用内存大小,那么配置的内存就有用完的时候。那在内存用完的时候,还继续往Redis里面添加数据不就没内存可用了吗?

实际上Redis定义了几种策略用来处理这种情况:

noeviction(默认策略):对于写请求不再提供服务,直接返回错误(DEL请求和部分特殊请求除外)
allkeys-lru:从所有key中使用LRU算法进行淘汰
volatile-lru:从设置了过期时间的key中使用LRU算法进行淘汰
allkeys-random:从所有key中随机淘汰数据
volatile-random:从设置了过期时间的key中随机淘汰
volatile-ttl:在设置了过期时间的key中,根据key的过期时间进行淘汰,越早过期的越优先被淘汰
当使用volatile-lru、volatile-random、volatile-ttl这三种策略时,如果没有key可以被淘汰,则和noeviction一样返回错误
 #获取当前内存淘汰策略:
127.0.0.1:6379> config get maxmemory-policy
 1) "maxmemory-policy"
 2) "noeviction" #1.通过配置文件设置淘汰策略(修改redis.conf文件):
maxmemory-policy allkeys-lru
#2.通过命令修改淘汰策略:
127.0.0.1:6379> config set maxmemory-policy allkeys-lru