一、下载并指定源码目录
cd ~
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
tar xf redis-5.0.5
mkdir -p /usr/local/redis/redis5
mv redis-5.0.5 /usr/local/redis/redis5
cd /usr/local/redis/redis5
二、编译安装
yum install gcc
make
make install
三、直接运行
cd src
./redis-server
四、配置环境变量
vi /etc/profile
export REDIS_HOME=/opt/darren/redis5
export PATH=$PATH:$REDIS_HOME/bin
source /etc/profile
五、以服务的形式运行redis
cd /usr/local/redis/redis5/utils
./install_server.sh
- 选择端口号
- 配置文件
- 日志文件
- 数据目录
- 可执行程序的路径
复制配置文件/etc/init.d/redis_6379 -> 安装服务 -> 开启启动 -> 运行级别 -> 启动redis
六、启动两个从节点并同步6379
1、按照步骤五安装6380、6381
2、停止6379、6380、6381
service redis_6379 stop
service redis_6380 stop
service redis_6381 stop
3、复制配置文件到指定目录
cp /etc/redis/* ~/test
4、启动一主两从
redis-server 6379.conf
redis-server 6380.conf --replicaof 127.0.0.1 6379
redis-server 6381.conf --replicaof 127.0.0.1 6379
七、sentinel配置
1、从redis根目录下复制sentinel配置文件到指定目录
cp /usr/local/redis/redis5/sentinel.conf 26379.conf
2、修改配置文件
#哨兵的端口
port 26379
#mymaster 主的逻辑名称(一套哨兵可以监控多个集群)
#192.168.244.8 主的IP
#2 投票的权重值
sentinel monitor mymaster 192.168.244.8 6379 2
#后台启动
daemonize yes
#pid文件
pidfile /var/run/redis_sentinel_26379.pid
3、复制三个哨兵并修改端口
#哨兵的端口
port 26380
#mymaster 主的逻辑名称(一套哨兵可以监控多个集群)
#192.168.244.8 主的IP
#2 投票的权重值
sentinel monitor mymaster 192.168.244.8 6379 2
#后台启动
daemonize yes
#pid文件
pidfile /var/run/redis_sentinel_26380.pid
#哨兵的端口
port 26381
#mymaster 主的逻辑名称(一套哨兵可以监控多个集群)
#192.168.244.8 主的IP
#2 投票的权重值
sentinel monitor mymaster 192.168.244.8 6379 2
#后台启动
daemonize yes
#pid文件
pidfile /var/run/redis_sentinel_26381.pid
4、启动哨兵
- 对于 redis-sentinel 程序, 你可以用以下命令来启动 Sentinel 系统:
redis-sentinel /path/to/sentinel.conf
- 对于 redis-server 程序, 你可以用以下命令来启动一个运行在 Sentinel 模式下的 Redis 服务器:
redis-server /path/to/sentinel.conf --sentinel
redis-server 26379.conf --sentinel
redis-server 26380.conf --sentinel
redis-server 26381.conf --sentinel
八、查看结果
ps -ef | grep redis
九、哨兵开机启动
1、复制配置文件到/etc/init.d目录下
cp redis_init_script /etc/init.d/redis-sentinel-26379
cp redis_init_script /etc/init.d/redis-sentinel-26380
cp redis_init_script /etc/init.d/redis-sentinel-26381
2、编辑配置文件
14 REDISPORT=26380
15 EXEC=/opt/darren/redis5/bin/redis-sentinel
16 CLIEXEC=/opt/darren/redis5/bin/redis-cli
17
18 PIDFILE=/var/run/redis_sentinel_${REDISPORT}.pid
19 CONF="/root/test/${REDISPORT}.conf"
3、添加权限
chmod 755 /etc/init.d/redis-sentinel-26379
chmod 755 /etc/init.d/redis-sentinel-26380
chmod 755 /etc/init.d/redis-sentinel-26381
4、启动或停止
service redis-sentinel-26379 start/stop
service redis-sentinel-26380 start/stop
service redis-sentinel-26381 start/stop
5、设置开机启动
chkconfig redis-sentinel-26379 on
chkconfig redis-sentinel-26380 on
chkconfig redis-sentinel-26381 on
十、注意事项
1、关闭防火墙
2、注释 bind 127.0.0.1
不能被除了本机以外的ip地址访问,默认是本地127.0.0.1
3、关闭保护模式
protected mode没有设置为no,保护模式没有关闭,默认是yes
十、Spring Boot配置
1、redis配置
spring:
redis: #redis 配置
database: 0
host: 192.168.244.8
port: 6379
timeout: 2000
password:
2、自定义哨兵
#自定义哨兵
sentinel:
address:
- 192.168.244.8:26379
- 192.168.244.8:26380
- 192.168.244.8:26381
masterName: mymaster
3、redis哨兵配置类
package com.darren.center.service.order.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
/**
* <h3>spring-cloud-2020</h3>
* <p>redis哨兵配置类</p>
*
* application.yml中配置
* #自定义哨兵
* sentinel:
* address:
* - 192.168.244.8:26379
* - 192.168.244.8:26380
* - 192.168.244.8:26381
* masterName: mymaster
*
* @author : Darren
* @date : 2020年08月31日 16:47:59
**/
@Component
@ConfigurationProperties(prefix = "sentinel")
@Order(0)
@Data
public class RedisSentinelProperties {
/**
* 哨兵的地址
*/
private String[] address;
/**
* 主的逻辑名称(一套哨兵可以监控多个集群)
*/
private String masterName;
}
4、redis配置文件
package com.darren.center.service.order.config;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.core.annotation.Order;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
/**
* <h3>spring-cloud-2020</h3>
* <p>redis配置</p>
*
* @author : Darren
* @date : 2020年08月28日 16:20:14
**/
@Component
public class RedisConfig {
/**
* 单个redis
*/
@Bean
@ConditionalOnMissingBean(StringRedisTemplate.class)
public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory){
StringRedisTemplate redisTemplate = new StringRedisTemplate();
redisTemplate.setConnectionFactory(redisConnectionFactory);
return redisTemplate;
}
/**
* 单个redisson
* @return
*/
/*@Bean
public RedissonClient redissonClient(){
Config config = new Config();
config.useSingleServer()
.setAddress("127.0.0.1:6379")
.setDatabase(0);
//.setPassword("1234");
return Redisson.create(config);
}*/
@Autowired
private RedisSentinelProperties redisSentinelProperties;
/**
* redisson - 哨兵
* @return
*/
@Bean("redisson")
@Order(1) //先加载RedisSentinelProperties类
public Redisson getRedisson(){
Config config = new Config();
config.useSentinelServers()
.setMasterName(redisSentinelProperties.getMasterName())
.addSentinelAddress(redisSentinelProperties.getAddress())
.setDatabase(0);
//.setPassword("1234");
return (Redisson) Redisson.create(config);
}
}