这篇文章是接着上面一篇企业实战分布式LNMP高性能服务器升级的。
[root@localhost ~]# yum -y install https://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/remi-release-7.rpm
[root@localhost ~]# vim /etc/yum.repos.d/remi.repo
修改如下:
[remi]
name=Remi's RPM repository for Enterprise Linux 7 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/7/remi/$basearch/
#mirrorlist=https://rpms.remirepo.net/enterprise/7/remi/httpsmirror
mirrorlist=http://cdn.remirepo.net/enterprise/7/remi/mirror
enabled=1 这里原本默认是0的修改为1开启
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
[root@localhost ~]# yum -y install redis-5*
[root@localhost ~]# wget http://download.redis.io/releases/redis-5.0.8.tar.gz
[root@localhost ~]# tar -xf redis-5.0.8.tar.gz -C /usr/src/
[root@localhost ~]# yum -y install gcc
[root@localhost ~]# cd /usr/src/redis-5.0.8/
[root@localhost redis-5.0.8]# make PREFIX=/usr/local/redis install
[root@localhost redis-5.0.8]# cd /usr/local/redis/
[root@localhost redis]# ls
bin
[root@localhost redis]# mkdir -p 6379
[root@localhost redis]# cp /usr/src/redis-5.0.8/redis.conf 6379/6379.conf
到这一步redis安装好了:
在前端允许redis:
[root@localhost redis]# /usr/local/redis/bin/redis-server /usr/local/redis/6379/6379.conf
后台允许redis:
[root@localhost redis]# nohup /usr/local/redis/bin/redis-server /usr/local/redis/6379/6379.conf &
[root@localhost redis]# /usr/local/redis/bin/redis-cli -p 6379 shutdown
[1]+ 完成 nohup /usr/local/redis/bin/redis-server /usr/local/redis/6379/6379.conf
5983:M 14 Jun 2020 16:07:13.550 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
5983:M 14 Jun 2020 16:07:13.550 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add ‘vm.overcommit_memory = 1’ to /etc/sysctl.conf and then reboot or run the command ‘sysctl vm.overcommit_memory=1’ for this to take effect.
5983:M 14 Jun 2020 16:07:13.550 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command ‘echo never > /sys/kernel/mm/transparent_hugepage/enabled’ as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
[root@localhost redis]# vim /etc/sysctl.conf
net.core.somaxconn=512
[root@localhost redis]# vim /etc/sysctl.conf
vm.overcommit_memory=1
[root@localhost redis]# sysctl -p
[root@localhost redis]# /usr/src/redis-5.0.8/utils/install_server.sh
Welcome to the redis service installer
This script will help you easily set up a running redis server
配置redis的端口,可以默认为6379,直接回车
Please select the redis port for this instance: [6379]
Selecting default: 6379
配置redis的配置文件,放到redis的安装目录,加上文件名:这里放到/usr/local/redis/6379/6379.conf
Please select the redis config file name [/etc/redis/6379.conf] /usr/local/redis/6379/6379.conf
配置redis的日志,放到redis的安装目录,加上文件名,这里放到/usr/local/redis/6379/redis_6379.log
Please select the redis log file name [/var/log/redis_6379.log] /usr/local/redis/6379/redis_6379.log
配置redis的数据目录,也放在安装目录,加上端口号区分,这里放在/usr/local/redis/6379/
Please select the data directory for this instance [/var/lib/redis/6379] /usr/local/redis/6379
选择redis的启动程序,加上文件名,这里的启动文件在/usr/local/redis/bin/redis-server
Please select the redis executable path [] /usr/local/redis/bin/redis-server
Selected config:
Port : 6379
Config file : /usr/local/redis/6379/6379.conf
Log file : /usr/local/redis/6379/redis_6379.log
Data dir : /usr/local/redis/6379
Executable : /usr/local/redis/bin/redis-server
Cli Executable : /usr/local/redis/bin/redis-cli
Is this ok? Then press ENTER to go on or Ctrl-C to abort.
Copied /tmp/6379.conf => /etc/init.d/redis_6379
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server...
Installation successful!
已经部署好lnmp并发布了一套门户网站
现在redis安装好了,但是还是没法缓存数据,因为php还没有于redis建立联系
[root@localhost ~]# yum -y install php-redis
在wordpress后台,安装Redis Object Cache插件,并且启用,看到如果已连接,表示成功:
[root@localhost ~]# vim /data/nginx/html/wordpress/wp-content/plugins/redis-cache/includes/object-cache.php
$parameters = array(
'scheme' => 'tcp',
'host' => '192.168.2.70', 这里填的时redis的IP地址
'port' => 6379,
'timeout' => 5,
'read_timeout' => 5,
'retry_interval' => null
);
[root@localhost ~]# redis-cli
127.0.0.1:6379> SELECT 0
OK
127.0.0.1:6379> KEYS *
1) "wp:site-transient:update_themes"
2) "wp:userslugs:admin"
3) "wp:users:1"
4) "wp:site-transient:theme_roots"
5) "wp:default:is_blog_installed"
6) "wp:options:alloptions"
7) "wp:options:can_compress_scripts"
8) "wp:user_meta:1"
9) "wp:site-transient:update_plugins"
10) "wp:site-transient:update_core"
11) "wp:options:notoptions"
12) "wp:userlogins:admin"
13) "wp:useremail:[email protected]"
Redis实现快照的过程,Redis使用fork函数复制(写时复制)一份当前进程(父进程)的副本(子进程),父进程继续接收并处理客户端发来的命令,而子进程开始将内存中的数据写入硬盘中的临时文件,当子进程写入完所有数据后会用该临时文件替换旧的RDB文件,至此一次快照操作完成。
Redis进行RDB快照的条件由用户在配置文件中自定义,由两个参数构成:时间和改动的键的个数。
save 900 1 #900秒内有至少1个键被更改则进行快照;
save 300 10 #300秒内有至少10个键被更改则进行快照;
save 60 10000 #60秒内有至少10000个键被更改则进行快照
Redis默认会将快照文件存储在Redis数据目录,默认文件名为:dump.rdb文件,可以通过配置dir和dbfilename两个参数分别指定快照文件的存储路径和文件名。也可以在Redis命令行执行 config get dir 获取Redis数据保存路径。
save 900 1 900秒内有1个键发生变化开始快照
save 300 10 300秒内有10个键发生变化开始快照
save 60 10000 60秒内有10000个键发生变化开始快照
# 快速理解,可以从下往上去看,即使只有一个键发生变化,最后也会执行900秒的规则。
#后台存储发生故障时,客户端停止写入
stop-writes-on-bgsave-error yes
#在存储过程中,启动压缩
rdbcompression yes
#启动redis时,是否检查rdb数据库的完整性
rdbchecksum yes
#rdb数据库的名字,可自定义
dbfilename dump.rdb
#rdb数据库存放路径,可以自定义
dir /var/lib/redis
开启AOF持久化后每执行一条会更改Redis中的数据的命令,Redis就会将该命令写入硬盘中的AOF文件。
#开启aof持久化,默认为禁止no
appendonly yes
Redis允许同时开启AOF和RDB,既保证了数据安全又使得进行备份等操作十分容易。
#开启aof持久化,默认为禁止no
appendonly yes
#指定aof文件名,可自定义
appendfilename "appendonly.aof"
#每执行一条命令即写入磁盘
#appendfsync always
#每秒同步内存数据到磁盘
appendfsync everysec
#设置为no,让写入动作交由操作系统完成,同步的频率会相对比较低,不建议
# appendfsync no
#在rdb写磁盘过程中,是否需要停止aof,默认是不停,如果负载较高,建议停止。
# 这个时候数据也不会丢失,在暂时存在内存队列,rdb数据写完后,aof继续。
no-appendfsync-on-rewrite no
#aof文件大小相比上次文件大小,增长100%时,重写
auto-aof-rewrite-percentage 100
#aof文件至少超过64M时,重写
auto-aof-rewrite-min-size 64mb
# redis在恢复时,会忽略最后一条可能存在问题的指令(因为断电等原因导致的一些错误指令)
aof-load-truncated yes