1、安装 gcc-c++ 依赖包
yum install gcc-c++
2、下载安装包并解压
wget https://download.redis.io/releases/redis-6.0.9.tar.gz
tar -zxvf redis-6.0.9.tar.gz
3、编译安装
编译
cd redis-6.0.9
make
默认安装
make install
指定路径安装 ( PREFIX 必须大写)
sudo make install PREFIX=/export/App/redis6.0 CONF_PATH=/export/App/redis6.0/conf
4、拷贝配置文件到指定目录
sudo cp software/redis-6.0.9/redis.conf ./conf/
调整配置信息
#bin 127.0.0.1 //如果要远程访问就将这里注释掉
protected-mode no //保护模式
requirepass "mGo#fgdfg" //密码认证
masterauth "mGo#fgdfg" //密码认证,节点数据同步的时候用
logfile "按需设置"
port 6379 //端口6379
daemonize yes //redis后台运行
pidfile /var/run/redis_6379.pid //pidfile文件
cluster-enabled yes //开启集群 把注释#去掉
cluster-config-file nodes_6379.conf //集群的配置 配置文件首次启动自动生成6379
cluster-node-timeout 15000 //请求超时 默认15秒,可自行设置
appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志
5、拷贝 redis-cli 到 bin 目录
sudo cp redis-6.0.9/src/redis-cli bin/
6、集群节点配置
a、安装目录下创建 cluster 目录
sudo mkdir redis_cluster
b、拷贝配置文件到 6379 6380 目录下
sudo cp -r conf/ redis_cluster/6379
sudo cp -r conf/ redis_cluster/6380
c、调整 6379 目录下的下 redis.conf 配置信息
#bin 127.0.0.1 //如果要远程访问就将这里注释掉 protected-mode no //保护模式 requirepass "mGo#fgdfg" //密码认证,登录权限 masterauth "mGo#fgdfg" //密码认证,节点数据同步的时候用 port 6379 //端口6379 maxmemory 4GB daemonize yes //redis后台运行 pidfile /var/run/redis_6379.pid //pidfile文件 cluster-enabled yes //开启集群 把注释#去掉 cluster-config-file nodes_6379.conf //集群的配置 配置文件首次启动自动生成6379 cluster-node-timeout 15000 //请求超时 默认15秒,可自行设置 appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志
d、将 6379 调整后的 redis.conf 复制到 6380 并替换配置
sudo cp -r conf/ redis_cluster/6380
cd redis_cluster/6380
配置替换:sudo sed -i 's/6379/6380/g' redis.conf
e、启动节点验证
sudo bin/redis-server redis_cluster/6379/redis.conf
sudo bin/redis-server redis_cluster/6380/redis.conf
f、检查节点启用情况
ps -ef | grep redis
7、创建集群
sudo bin/redis-cli --cluster create 10.221.2.62:6379 10.221.2.62:6380 10.25.1.92:6379 10.25.1.92:6380 11.249.2.108:6379 11.249.2.108:6380 --cluster-replicas 1 -a mGo#fgdfg
ps: redis-5.0.0版本开始才支持“--cluster”
集群验证:
bin/redis-cli -c -a mGo#fgdfg // -c 设置集群模式连接
1、CentOS7上安装Redis(6.0.9)进入目录后make,编译失败提示:struct redisServer’没有名为‘sentinel_mode’的成员,In file included from server.c:30:0:server.h:1072:5: error: expected specifier-qualifier-list before '_Atomic' _Atomic unsigned int lruclock; /* Clock for LRU eviction */
问题出现原因:gcc版本问题
查看gcc版本:gcc -v
如果 gcc 的版本低于5,使用以下命令升级
sudo yum install centos-release-scl
sudo yum install devtoolset-7-gcc*
scl enable devtoolset-7 bash
2、是否只设置requirepass就可以,masterauth是否需要同步设置?
redis启用密码认证一定要requirepass和masterauth同时设置。
如果主节点设置了requirepass登录验证,在主从切换,slave在和master做数据同步的时候首先需要发送一个ping的消息给主节点判断主节点是否存活,再监听主节点的端口是否联通,发送数据同步等都会用到master的登录密码,否则无法登录,log会出现响应的报错。 也就是说slave的masterauth和master的requirepass是对应的,所以建议redis启用密码时将各个节点的masterauth和requirepass设置为相同的密码,降低运维成本。当然设置为不同也是可以的,注意slave节点masterauth和master节点requirepass的对应关系就行。
3、requreipass和master的作用?
masterauth作用:主要是针对master对应的slave节点设置的,在slave节点数据同步的时候用到。
requirepass作用:对登录权限做限制,redis每个节点的requirepass可以是独立、不同的。
4、redis 提示:(error) MOVED xxx 什么原因?
原因:一般是因为启动redis-cli时没有设置集群模式所导致。
解决: redis-cli -c -p 6379
5、关于内存设置 redis.conf
如果没有显式设置
maxmemory
配置项,默认情况下Redis不会限制内存使用,即maxmemory
的默认值为0,表示不设置最大内存限制。这意味着Redis在默认情况下可以使用系统的全部可用内存,直到系统的内存资源耗尽为止。然而,这也可能导致Redis过度使用内存并影响系统的稳定性。
因此,在生产环境中,建议明确设置
maxmemory
配置项,以控制Redis的内存使用,并确保系统有足够的内存供其他关键应用程序使用。
6、淘汰策略设置
noeviction: 默认策略,不淘汰,如果内存已满,添加数据是报错。
allkeys-lru: 在所有键中,选取最近最少使用的数据抛弃。
volatile-lru: 在设置了过期时间的所有键中,选取最近最少使用的数据抛弃。
allkeys-random: 在所有键中,随机抛弃。
volatile-random: 在设置了过期时间的所有键,随机抛弃。
volatile-ttl: 在设置了过期时间的所有键,抛弃存活时间最短的数据。