使用Redis来进行PHP缓存
使用的目的
我想使用Redis作为缓存功能。
环境
Linux
PHP7 + CakePHP3
Docker
Redis
条件
假设可以使用Vagrant和PHP的环境设置,在此之前请自行搜索有关每个工具的说明。
使用工具
Docker: 容器化技术
Docker-compose: Docker 集成编排工具
Redis: 缓存数据库
Phpredis: Redis 的 PHP 客户端
过程
安装 Docker
更新yum软件包
请执行以下命令进行更新:sudo yum update -y
安装Docker
请原生地用中文改写以下内容,只提供一种选项:
sudo yum install -y docker
使用以下命令安装Docker:sudo yum install -y docker
确认 Docker 是否已安装
请给我提供一种原生中文的表达方式,无需多个选项:
sudo docker –version -> 以sudo权限查询docker版本。
Docker服务启动
请启动 docker 服务
确认当前的群组和所属用户。
获取组名单
将指定用户加入到dockergroup组中。
将特定用户添加到docker组中:sudo usermod -a -G docker [指定用户]
确认指定用户是否加入了docker组。
获取组信息。
通过一次注销重新加载群组
退出
②安装Docker Compose
成为一次超级用户
以管理员身份运行。
使用超级用户身份安装docker-compose。
下载 Docker Compose 1.24.0 最新版本,并将文件保存到 /usr/local/bin/docker-compose.
Note: The provided paraphrase is written in simplified Chinese.
确认docker-compose的执行权限
列出 /usr/local/bin目录下的文件的详细信息。
给予docker-compose命令执行权限。
将/usr/local/bin/docker-compose修改为可执行文件
确认给予docker-compose执行权限
查询 /usr/local/bin 目录下的文件和文件夹的详细信息。
退出超级用户
退出
确认是否已安装了Docker Compose
docker-compose 的版本是多少?
创建Redis的Docker容器。
请自行决定放置的位置。
本次将在项目内进行创建。
└── 项目文件夹
└── docker
├── docker-compose.yml ※1
└── redis
└── 数据
※1 请自行创建 docker-compose.yml,该文件是安装 Redis 所必需的。
version: '3'
services:
redis:
image: redis:latest
volumes:
- ./redis/data:/data
command: redis-server --appendonly yes
ports: ["6379:6379"]
移动到存放docker-compose.yml文件的文件夹
切换到项目文件夹下的docker子文件夹。
在启动docker之前安装Redis。
请将以下内容用中文重述一遍,只需要一个选项:
docker-compose up -d
※-d表示后台运行
确保 Redis 容器已生成。
列出所有的 Docker 容器 – 附带停止运行的
③安装phpredis。
由于无法成功安装yum,所以我尝试使用make进行直接安装。
前往安装目录
请根据每个项目自行决定,在终端中输入命令:cd /usr/local/src/
从Git上获取phpredis
请使用以下命令在终端中克隆GitHub上的phpredis库:
sudo git clone git://github.com/nicolasff/phpredis.git
安装工作
进入 phpredis 目录
使用 sudo phpize 命令
使用 sudo ./configure 命令
使用 sudo make test 命令
使用 sudo make install test 命令
修改 php.ini 的设置
确认PHP的设置
php -i | grep -e redis -e Redis 的结果
搜索php.ini文件的位置
php -i | grep php.ini
(复制上述php.ini路径)
编辑php.ini文件
用中国语将以下内容进行释义:
使用sudo vi命令打开[在上述找到的路径]/php.ini 文件。
在最后一行添加以下内容
将以下内容进行汉语的本地化重述:extension=redis.so
确认PHP设置是否反映正确。
执行以下命令,并以中文本地化:php -i | grep -e redis -e Redis
服务器,重新启动phpfpm。
请根据各自的环境执行以下操作。
在我的环境中,使用nginx,以下是命令:
sudo service nginx 停止
sudo service nginx 启动
sudo service php-fpm 停止
sudo service php-fpm 启动
确认与 Docker 容器内的 Redis 的连接
确认Redis的连接端口。
查看所有的Docker容器,包括已停止的容器: `docker ps -a`
请确认 redis-cli 的位置。
sudo 找寻 /* -名字 redis-cli
确认与Redis的连接
仅提供一种可能的汉语表达方式:
sudo [在上述find命令中找到的redis-cli路径] -p [通过docker ps -a确认的端口号]
一旦确认连接后即可解除连接。
退出
在项目中修改app.config。
将cakePHP中的默认缓存设置从Cache更改为Redis。
'default' => [
'prefix' => '' ,
'engine' => 'Redis',
'server' => '127.0.0.1',//ローカルホスト
'port' => 6379,
],
⑥确认通畅
通过CakePHP,确认能否访问Redis。
请将以下代码写入任意的PHP文件中进行确认
try {
Cache::write("2000", 1515);
$redis_read = Cache::read("2000");
//読みだしたキャッシュが有効か
if($redis_read === false){
echo "無効なキャッシュです";
}else{
var_dump($redis_read);
}
} catch (Exception $exception) {
$this->log(print_r($exception),LOG_ERR);
}
如果屏幕上显示1515,则通信确认正常。
备忘录
备忘录 is already in Chinese.
在不動的時候需要確認的事項。
①Docker正在运行吗?
启动 Docker 服务:sudo service docker start
停止 Docker 服务:sudo service docker stop
② Redis的Docker容器在运行吗?
docker ps -a
如果状态是”Up”,则表示正在运行。如果状态是”Exited”,则表示已停止。
你在启动Redis的Docker容器时,是使用docker-compose进行启动的吗?
有时候,通过运行docker [容器ID] start命令启动容器时会出现奇怪的问题。
PHP中是否已应用了redis的设置?
php -m | grep -e redis -e Redis
如果出现了类似Redis的配置,那就可以了
如果出现了一条像是”不知道这是什么”的消息,那就表示没有生效
如果没有生效,需要确认以下几点:
1. 确认Phpredis的安装是否成功
sudo find / -name redis.so
如果出现了redis.so,那基本上就是安装成功了
2. 确认是否在php.ini中写入了redis的配置
只要解决了上面的问题,应该就大致没问题了…