环境:
系统:centos
lamp:192.168.1.10
redis主:192.168.1.11
redis从:192.168.1.12
1、redis主安装redis
#用wget下载
yum install wget -y
wget https://download.redis.io/releases/redis-6.2.3.tar.gz
#处理编译源文件包
yum install gcc gcc-c++ make cmake -y
#解压redis包
tar -zxvf /root/redis-6.2.3.tar.gz
cd /root/redis-6.2.3
#编译和安装redis
make PREFIX=/usr/local/redis install
#复制redis.conf的配置文件到编译后的redis目录
cp /root/redis-6.2.3/redis.conf /usr/local/redis/
#编辑redis的环境变量
tee > /etc/profile.d/redis.sh << 'EOF'
export PATH=/usr/local/redis/bin:$PATH
EOF
#生成环境变量
source /etc/profile.d/redis.sh
#编辑redis配置的开启后台运行redis服务
sed -i 's/daemonize no/daemonize yes/g' /usr/local/redis/redis.conf
#编辑redis的system
tee > /usr/lib/systemd/system/redis.service << 'EOF'
[Unit]
Description=Redis
Wants=network.target
[Service]
Type=forking
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
#加载redis的系统服务配置
systemctl daemon-reload
#启动redis
systemctl enable redis
systemctl start redis
2、lamp安装php-redis
#安装php-redis
yum install php-pecl-redis -y
#若是找不到包则先运行:yum install epel-release
#重启httpd服务
systemctl restart httpd
vim /var/www/html/info.php
<?
phpinfo();
?>
用浏览器输入IP,看到以下图片就成功开启php-redis
3、Lamp+Redis缓存测试
#在Redis主库操作
#注释掉本地网卡接口
sed -i '75c #bind 127.0.0.1 -::1' /usr/local/redis/redis.conf
#关闭redis安全模式
sed -i '95c protected-mode no' /usr/local/redis/redis.conf
#在Redis主库操作
sed -i '75a bind 127.0.0.1 192.168.1.11' /usr/local/redis/redis.conf
#在Lamp操作,编辑php连接redis的php脚本
vim /var/www/html/redis.php
<?php
//连接本地的 Redis 服务
$redis = new Redis();
$redis->connect('172.25.0.200', 6379);
echo "Connection to server successfully";
//输出换行
echo "<br/>";
//查看服务是否运行
echo "Server is running: " . $redis->ping();
?>
用浏览器输入IP,查看php脚本是否连接redis成功
#填写redis主库的IP
sed -i "19c \$_config['memory']['redis']['server'] = '192.168.1.11';" /var/www/html/upload/config/config_global.php
创建论坛测试用户wrzx
#在redis主连接客户端查看是否写入redis缓存中
[root@localhost ~]# redis-cli
127.0.0.1:6379> keys *
1) "rGrdX5_onlinelist"
2) "rGrdX5_common_member_5"
3) "rGrdX5_onlinerecord"
4) "rGrdX5_forumlinks"
5) "rGrdX5_common_member_field_home_4"
6) "rGrdX5_common_member_field_home_5"
7) "rGrdX5_usergroups"
8) "rGrdX5_fields_register"
9) "rGrdX5_stamptypeid"
10) "rGrdX5_cronnextrun"
11) "rGrdX5_fields_optional"
12) "rGrdX5_usergroup_10"
13) "rGrdX5_style_default"
14) "rGrdX5_historyposts"
15) "rGrdX5_heats"
16) "rGrdX5_ipbanned"
17) "rGrdX5_magic"
18) "rGrdX5_creditrule"
19) "rGrdX5_common_member_4"
20) "rGrdX5_common_member_newprompt_5"
21) "rGrdX5_usergroup_7"
22) "rGrdX5_common_member_status_3"
23) "rGrdX5_common_member_count_4"
24) "rGrdX5_diytemplatename"
25) "rGrdX5_announcements"
26) "rGrdX5_plugin"
27) "rGrdX5_diytemplatenamehome"
28) "rGrdX5_ipctrl"
29) "rGrdX5_setting"
30) "rGrdX5_home_follow_3"
31) "rGrdX5_diytemplatenameforum"
32) "rGrdX5_common_member_count_3"
33) "rGrdX5_common_member_field_home_3"
34) "rGrdX5_pluginlanguage_system"
35) "rGrdX5_forum_index_page_10"
36) "rGrdX5_modreasons"
37) "rGrdX5_common_member_status_4"
38) "rGrdX5_common_member_3"
39) "rGrdX5_userstats"
40) "rGrdX5_fields_required"
41) "rGrdX5_common_member_count_5"
42) "rGrdX5_cronpublish"
删除数据库的test用户
在Lamp操作
#查看数据库的用户名和密码
mysql -u root -p123456
MariaDB [(none)]> use discuz;
MariaDB [discuz]> select username,password from pre_ucenter_members ;
+----------+----------------------------------+
| username | password |
+----------+----------------------------------+
| admin | cd4373d394bf4f7a9b402bba7f2c8f2e |
| test | f00d1a812e6b746ef50e23616f70cfaa |
| fbx | 46c7eb780c2d3c68549affb33e645b3e |
| fjf | 608d4fe565980412a277a45d4fc5c250 |
| wrzx | 77bbea76f967afa60a8bccddb6d11a14 |
+----------+----------------------------------+
2 rows in set (0.001 sec)
MariaDB [discuz]> delete from pre_ucenter_members where username='wrzx';
Query OK, 1 row affected (0.001 sec)
用浏览器测试是否登录成功
4、Redis主从复制配置
#redis主配置
cp /usr/local/redis/redis.conf{,.bak}
# 备份配置文件
# 将配置文件内容修改为如下内容:
bind 127.0.0.1 192.168.1.11
protected-mode yes
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
pidfile /var/run/redis_6379.pid
loglevel notice
logfile ""
databases 16
always-show-logo no
set-proc-title yes
proc-title-template "{title} {listen-addr} {server-mode}"
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
rdb-del-sync-files no
dir ./
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-diskless-load disabled
repl-disable-tcp-nodelay no
replica-priority 100
acllog-max-len 128
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
lazyfree-lazy-user-del no
lazyfree-lazy-user-flush no
oom-score-adj no
oom-score-adj-values 0 200 800
disable-thp yes
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
jemalloc-bg-thread yes
#redis从配置
cp /usr/local/redis/redis.conf{,.bak}
#备份
#配置文件内容
bind 127.0.0.1 192.168.1.12
protected-mode yes
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
pidfile /var/run/redis_6379.pid
loglevel notice
logfile ""
databases 16
always-show-logo no
set-proc-title yes
proc-title-template "{title} {listen-addr} {server-mode}"
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
rdb-del-sync-files no
dir ./
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-diskless-load disabled
repl-disable-tcp-nodelay no
replica-priority 100
acllog-max-len 128
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
lazyfree-lazy-user-del no
lazyfree-lazy-user-flush no
oom-score-adj no
oom-score-adj-values 0 200 800
disable-thp yes
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
jemalloc-bg-thread yes
#设置redis主从复制
slaveof 192.168.1.11 6379
#配置后要重启redis服务
systemctl restart redis
测试redis主从复制是否成功
#在redis主库设置键对应的值
[root@localhost ~]# redis-cli
127.0.0.1:6379> set student1 "小星"
OK
127.0.0.1:6379> get student1
"\xe5\xb0\x8f\xe6\x98\x9f"
127.0.0.1:6379>
#在redis从库查看值
redis-cli
127.0.0.1:6379> get student1
"\xe5\xb0\x8f\xe6\x98\x9f"
redis-cli --raw
# --raw 不显示额外的类型信息与支持显示中文
127.0.0.1:6379> get student1
小星
5、半持久化RDB模式
RDB持久性按指定的时间间隔执行数据集的时间点快照。
#创建存放rdb的目录
mkdir -p /data/redis
#配置指定数据库镜像存放的目录
sed -i '456c dir /data/redis' /usr/local/redis/redis.conf
#一小时内至少1个键更改则进行快照
#5分钟内至少100个键更改则进行快照
#1分钟内至少10000个键更改则进行快照
sed -i -e "\$a\save 3600 1" -e "\$a\save 300 100" -e "\$a\save 60 10000" /usr/local/redis/redis.conf
#重启redis服务
systemctl restart redis
#查看是否有rdb数据文件的备份
ls /data/redis/
dump.rdb
6、持久化AOF模式
#开启AOF模式
sed -i '1254c appendonly yes' /usr/local/redis/redis.conf
#注释everysec配置redis将fsync数据存储在磁盘上的次数
sed -i "s/appendfsync everysec/#appendfsync everysec/g" /usr/local/redis/redis.conf
#开启always配置redis将fsync数据存储在磁盘上的次数
sed -i "s/# appendfsync always/appendfsync always/g" /usr/local/redis/redis.conf
#配置后需要重启redis服务
systemctl restart redis
#查看是否有aof数据文件的备份
ls /data/redis/
appendonly.aof dump.rdb
7、Redis哨兵模式
#复制配置文件到安装到redis的目录下
cp /root/redis-6.2.3/sentinel.conf /usr/local/redis/
#为sentinel配置IP
sed -i '84c sentinel monitor mymaster 192.168.1.11 6379 2' /usr/local/redis/sentinel.conf
#启动哨兵
[root@localhost ~]# redis-sentinel /usr/local/redis/sentinel.conf
2437:X 02 Jul 2023 12:54:03.136 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
2437:X 02 Jul 2023 12:54:03.136 # Redis version=6.2.3, bits=64, commit=00000000, modified=0, pid=2437, just started
2437:X 02 Jul 2023 12:54:03.136 # Configuration loaded
2437:X 02 Jul 2023 12:54:03.137 * Increased maximum number of open files to 10032 (it was originally set to 1024).
2437:X 02 Jul 2023 12:54:03.137 * monotonic clock: POSIX clock_gettime
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 6.2.3 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in sentinel mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 26379
| `-._ `._ / _.-' | PID: 2437
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | https://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
2437:X 02 Jul 2023 12:54:03.138 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
2437:X 02 Jul 2023 12:54:03.143 # Sentinel ID is c3328b7e489ade9f983b549c736c9122ec252643
2437:X 02 Jul 2023 12:54:03.143 # +monitor master mymaster 192.168.1.11 6379 quorum 2
2437:X 02 Jul 2023 12:54:03.144 * +slave slave 192.168.1.12:6379 192.168.1.12 6379 @ mymaster 192.168.1.11 6379
2437:X 02 Jul 2023 12:54:33.182 # +sdown slave 192.168.1.12:6379 192.168.1.12 6379 @ mymaster 192.168.1.11 6379