gcc安装
yum -y install gcc automake autoconf libtool make
redis安装
安装 wget 命令插件
yum -y install wget
下载redis
// 进入软件目录 然后下载
cd /usr/local/soft/
// 下载
wget http://download.redis.io/releases/redis-5.0.8.tar.gz
解压 编译
tar -zxvf redis-5.0.8.tar.gz -C /usr/local
cd /usr/local/
cd redis-5.0.8/
// 进入redis目录 执行 make 命令
make
make PREFIX=/usr/local/redis-5.0.8 install
查看到 bin 目录 然后下面有可执行文件即可,如果有bin 和可执行 不安装也行
启动命令
启动方式一
cd /usr/local/redis-5.0.8/bin/
./redis-server
重新开一个终端查看
netstat -ntlp 查看下一端口
control + c 退出
control + z 不是退出哦
关闭
/usr/local/redis-5.0.8/bin/redis-cli shutdown
yum -y install lsof 强制关闭(因为control+z没退出)
启动方式二
redis-server --port=6380
启动方式三(推荐)
cd /usr/local/redis-5.0.8/
mkdir conf
把同级redis.conf 拷贝到conf目录下
cp redis.conf conf/
拷贝多个redis.conf文件
cp redis.conf redis_6379.conf
/usr/local/redis-5.0.8/bin/redis-server /usr/local/redis-5.0.8/conf/redis_6379.conf
配置
/usr/local/redis-5.0.8/conf
vi redis_6379.conf
搜索 daemonize
配置后台启动
/daemonize
daemonize yes
配置远程登录
修改成 0.0.0.0 为了测试用 实际还是按你局域网来 bind 127.0.0.1
端口配置
默认就是6379 就用默认就好
工作目录
dir /usr/local/redis-5.0.8/data
工作日志
:wq 退出保存一波
创建data
在redis目录下创建
mkdir data
设置密码 (云服务器 要设置密码哦)
requirepass
./redis-cli -a '123456' shutdown
关闭redis
暴力方法 kill -9 PID
ps -ef |grep redis-server
或者 netstat -ntlp 查看一下
kill -9 PID
正常关闭
/usr/local/redis-5.0.8/bin/redis-cli shutdown
netstat -ntlp
光标不走无法输入
原因就是 我的后台模式 daemonize 设置no 得改成yes忘记改了
不过呢 加个 & 就行了
redis-server &
/usr/local/redis-5.0.8/bin/redis-server /usr/local/redis-5.0.8/conf/redis_6379.conf &
查看运行状态
ps -ef|grep reids
netstat -ntlp
ps -ef|grep reids
netstat -ntlp
进入客户端
/usr/local/redis-5.0.8/bin/redis-cli
主从复制
slave 奴隶;完全受(某事物)控制的人;完全依赖(某事物)的人;从动装置 一主多从
单个服务器做的配置 搞多个端口
查看conf主要配置内容 提炼出来
过滤 # 开头行
过滤 空格
cat redis_6379.conf |grep -v '#' |grep -v '^$'
其事内容还是很多 然后配置最基本就行了 进入 redis_6379.conf 删除所有内容 删除手段是 :1,$d 回车
port 6379
daemonize yes
pidfile /var/run/redis-6379.pid
logfile 6379.log
dbfilename dump_6379.rdb
dir /usr/local/redis-5.0.8/data/
拷贝redis_6379.conf 到 redis_6380.conf
cp redis_6379.conf redis_6380.conf
进入6380.conf 进行替换。%s/6379/6380/g
cd /usr/local/redis-5.0.8/
bin/redis-server conf/redis_6379.conf
bin/redis-server conf/redis_6380.conf
/usr/local/redis-5.0.8/bin/redis-server /usr/local/redis-5.0.8/conf/redis_6379.conf
/usr/local/redis-5.0.8/bin/redis-server /usr/local/redis-5.0.8/conf/redis_6380.conf
删除所有日志 到 data 下面 rm -fr *
把6379端口数据同步到6380中
bin/redis-cli
默认进入的就是6379端口的redis
启动6380
bin/redis-cli -p 6380
bin/redis-cli -p 6380 shutdown
启动后可以查看是否有值 和 是否主从
keys *
info replication
slaveof
这是同一个服务器拷贝的哦 所以
SLAVEOF 127.0.0.1 6379
keys *
6380端口 角色 也从 master 变成 slave
变成从服务不能写入数据,而且变成从服务后数据跟master一样 原本自己的数据会丢失
取消该服务器对主服务的跟从
slaveof no one
通过配置来进行主从关联
到redis_6380.conf中配置
bind 192.168.202.3
replicaof 192.168.202.3 6379
到redis_6379.conf配置
bind 192.168.202.3
/usr/local/redis-5.0.8/
bin/redis-server conf/redis_6379.conf
bin/redis-server conf/redis_6380.conf
bin/redis-cli -p 6380 -h 192.168.202.3
bin/redis-cli -p 6379 -h 192.168.202.3
哨兵机制配置
配置
vi redis_7000.conf
port 7000
daemonize yes
pidfile /var/run/redis-7000.pid
logfile 7000.log
dir /usr/local/redis-5.0.8/data/
bind 192.168.202.3
vi redis_7001.conf
port 7001
daemonize yes
pidfile /var/run/redis-7001.pid
logfile 7001.log
dir /usr/local/redis-5.0.8/data/
replicaof 192.168.202.3 7000
bind 192.168.202.3
vi redis_7002.conf
port 7002
daemonize yes
pidfile /var/run/redis-7002.pid
logfile 7002.log
dir /usr/local/redis-5.0.8/data/
replicaof 192.168.202.3 7000
bind 192.168.202.3
启动
cd /usr/local/redis-5.0.8/
bin/redis-server conf/redis_7000.conf
bin/redis-server conf/redis_7001.conf
bin/redis-server conf/redis_7002.conf
bin/redis-cli -p 7000 -h 192.168.202.3
bin/redis-cli -p 7001 -h 192.168.202.3
bin/redis-cli -p 7002 -h 192.168.202.3
哨兵配置
不要保护 然后客户端连接不上 暂时这样吧
vi sentinel_26379.conf
port 26379
daemonize yes
pidfile /var/run/redis-sentinel-26379.pid
logfile "26379.log"
dir /usr/local/redis-5.0.8/data/
sentinel monitor mymaster 192.168.202.3 7000 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes
protected-mode no
bind 192.168.202.3
vi sentinel_26380.conf
port 26380
daemonize yes
pidfile /var/run/redis-sentinel-26380.pid
logfile "26380.log"
dir /usr/local/redis-5.0.8/data/
sentinel monitor mymaster 192.168.202.3 7000 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes
protected-mode no
bind 192.168.202.3
vi sentinel_26381.conf
port 26381
daemonize yes
pidfile /var/run/redis-sentinel-26381.pid
logfile "26381.log"
dir /usr/local/redis-5.0.8/data/
sentinel monitor mymaster 192.168.202.3 7000 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes
protected-mode no
bind 192.168.202.3
启动哨兵
bin/redis-sentinel conf/sentinel_26379.conf
bin/redis-sentinel conf/sentinel_26380.conf
bin/redis-sentinel conf/sentinel_26381.conf
查看 ps -ef|grep redis 删掉 sentinel
测试
bin/redis-cli -h 192.168.202.3 -p 7000 shutdown
集群 cluster
集群配置
vi redis_7000.conf
port 7000
daemonize yes
dir /usr/local/redis-5.0.8/data
dbfilename dump_7000.dbf
logfile 7000.log
cluster-enabled yes
cluster-config-file node_7000.conf
cluster-node-timeout 15000
cluster-require-full-coverage no
bind 192.168.202.3
protected-mode no
复制拷贝一份7001的
sed 's/7000/7001/g' redis_7000.conf > redis_7001.conf
sed 's/7000/7002/g' redis_7000.conf > redis_7002.conf
sed 's/7000/7003/g' redis_7000.conf > redis_7003.conf
sed 's/7000/7004/g' redis_7000.conf > redis_7004.conf
sed 's/7000/7005/g' redis_7000.conf > redis_7005.conf
节点通信
启动
bin/redis-server conf/redis_7000.conf
bin/redis-server conf/redis_7001.conf
bin/redis-server conf/redis_7002.conf
bin/redis-server conf/redis_7003.conf
bin/redis-server conf/redis_7004.conf
bin/redis-server conf/redis_7005.conf
启动 以集群模式启动 加 -c
bin/redis-cli -c -h 192.168.202.3 -p 7000
查看状态
CLUSTER INFO
CLUSTER NODES
开始通信
CLUSTER MEET 192.168.202.3 7001
CLUSTER MEET 192.168.202.3 7002
CLUSTER MEET 192.168.202.3 7003
CLUSTER MEET 192.168.202.3 7004
CLUSTER MEET 192.168.202.3 7005
分配slot卡槽
到bin目录 生成 addslots.sh脚本 vi addslots.sh
start=$1
end=$2
port=$3
for slot in `seq ${start} ${end}`
do
./redis-cli -h 192.168.202.3 -p ${port} cluster addslots ${slot}
done
可执行权限
chmod 755 addslots.sh
sh addslots.sh 0 5460 7000
sh addslots.sh 5461 10922 7001
sh addslots.sh 10923 16383 7002
配置从节点
获取 nodeId
cluster nodes
bf5972d9d51f6e4e6a15843bb11ea3498ae62fef 192.168.202.3:7004@17004 master - 0 1650368398000 0 connected
42fb030a76f762e60ba018bfead268370b38d3a0 192.168.202.3:7002@17002 master - 0 1650368397000 2 connected 10923-16383
11124492639dd6c351385bfc7f9b841496d96b37 192.168.202.3:7000@17000 master - 0 1650368400047 1 connected 0-5460
7fc77c2c1a3c976332ef750f42152388c050ee97 192.168.202.3:7005@17005 master - 0 1650368399006 4 connected
515b86d2becd8f712bf22e685c099e5b795f668e 192.168.202.3:7001@17001 myself,master - 0 1650368395000 3 connected 5461-10922
b82dd9866995873cdc1317f4ac603a4d8a47b14e 192.168.202.3:7003@17003 master - 0 1650368397000 5 connected
摘取
7000 11124492639dd6c351385bfc7f9b841496d96b37
7001 515b86d2becd8f712bf22e685c099e5b795f668e
7002 42fb030a76f762e60ba018bfead268370b38d3a0
bin/redis-cli -h 192.168.202.3 -p 7003 cluster replicate 11124492639dd6c351385bfc7f9b841496d96b37
bin/redis-cli -h 192.168.202.3 -p 7004 cluster replicate 515b86d2becd8f712bf22e685c099e5b795f668e
bin/redis-cli -h 192.168.202.3 -p 7005 cluster replicate 42fb030a76f762e60ba018bfead268370b38d3a0
bin/redis-cli -c -h 192.168.202.3 -p 7000
先关闭这些进程
查看
ps -ef|grep redis
过滤
ps -ef|grep redis |grep -v grep
打印第二个参数
ps -ef|grep redis |grep -v grep |awk '{print $2}'
kill掉
ps -ef|grep redis |grep -v grep |awk '{print $2}' |xargs kill -9
删除data里面的数据 配置啥的
rm -fr * data里面东西
启动集群
bin/redis-server conf/redis_7000.conf
bin/redis-server conf/redis_7001.conf
bin/redis-server conf/redis_7002.conf
bin/redis-server conf/redis_7003.conf
bin/redis-server conf/redis_7004.conf
bin/redis-server conf/redis_7005.conf
bin/redis-cli -c -h 192.168.202.3 -p 7000
通过命令安装
// 通过命令进行安装
--cluster-replicas 1:表示主从比例1:1
--cluster-replicas 2:表示主从比例1:2
bin/redis-cli --cluster create 192.168.202.3:7000 192.168.202.3:7001 192.168.202.3:7002 192.168.202.3:7003 192.168.202.3:7004 192.168.202.3:7005 --cluster-replicas 1
然后yes 允许
登陆demo
把yum里面node切换一下即可 跑一下数据库
缓存穿透 解决方案搞个空对象村进去 时间搞1分钟