使用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的配置

只要解决了上面的问题,应该就大致没问题了…

广告
将在 10 秒后关闭
bannerAds