Fork me on GitHub

ThinkPHP使用Redis

前置环境

安装PHP

安装 Redis

安装Redis
新建一个ThinkPHP6项目

PHP Redis扩展

安装PHP redis驱动

  1. 安装依赖: 使用 Homebrew 安装一些必要的依赖:
    brew install autoconf
    
  2. 安装PHP Redis扩展: 使用 PECL 安装 PHP Redis 扩展:
    pecl install redis
    
    安装完成后,根据提示,编辑 PHP.ini 文件并添加以下行:
    # 查看php.ini文件位置
    php --ini | grep "Loaded Configuration File"
    extension="redis.so"
    

成功安装redis.so扩展
image
3. php.ini配置Redis扩展:
在php.ini中添加刚才安装完成提示的redis.so
image

  1. 重启Web服务器: 最后,重启你的 Web 服务器,使更改生效。
    #如果使用brew启动的要使用brew命令重启
    sudo nginx -s reload
    
  2. 查看PHP是否成功安装redis模块
    php -m
    

image

ThinkPHP使用Redis

项目安装 Redis 扩展

# 在项目目录下执行如下代码,安装redis依赖
composer require predis/predis

config/database.php

<?php
// +----------------------------------------------------------------------
// | 缓存设置
// +----------------------------------------------------------------------

return [
    // 默认缓存驱动
    'default' => env('cache.driver', 'redis'),

    // 缓存连接方式配置
    'stores'  => [
        'file' => [
            // 驱动方式
            'type'       => 'File',
            // 缓存保存目录
            'path'       => '',
            // 缓存前缀
            'prefix'     => '',
            // 缓存有效期 0表示永久缓存
            'expire'     => 0,
            // 缓存标签前缀
            'tag_prefix' => 'tag:',
            // 序列化机制 例如 ['serialize', 'unserialize']
            'serialize'  => [],
        ],
        // redis缓存
        'redis'   =>  [
            // 驱动方式
            'type'   => 'redis',
            // 服务器地址
            'host'       => '127.0.0.1',
        ],
        // 更多的缓存连接
    ],
];

测试Redis

<?php
namespace app\controller;

use think\facade\Cache;
use think\facade\Db;

class Index
{
    public function index()
    {
        // 写入缓存
        Cache::store('redis')->set('name', 'value');

        // 从缓存中读取
        $name = Cache::store('redis')->get('name');

        // 使用 Redis 实例
        $redis = Cache::store('redis')->handler();

        // 使用 Redis 实例进行操作
        $redis->set('foo', 'bar');
        $value = $redis->get('foo');

        return 'Hello, ' . $name;
    }
}

如果不想用配置文件中的redis连接可以自己指定IP和端口

    public function redisAjax(){
        $redis = new Redis(['host' => '127.0.0.1', 'port' => 6379, 'password' => '']);
        $onlineDevice = $redis->sMembers("setKey");
        return $this->jsonSuccess($onlineDevice);
    }

检查问题

1.确保已经正确安装和启用了 PHP Redis 扩展,可以通过运行 php -m | grep redis 命令来检查是否加载了 Redis 扩展。
2.检查 config/cache.php 文件中是否正确配置了 Redis 缓存存储器,并确保有名为 "redis" 的存储器配置项。
3.确保在 config/cache.php 文件中启用了 Redis 缓存存储器。
4.重启电脑(装完服务后php-fpm也重启了,redis也启动了,php-redis扩展也安装成功了,访问却报Operation timed out [tcp://127.0.0.1:6379])

posted @ 2024-04-19 14:38  秋夜雨巷  阅读(487)  评论(0编辑  收藏  举报