ThinkPHP6.0+ 使用Redis 原始用法

composer 安装 predis/predis 依赖,或者安装php_redis.dll的扩展。

我这里选择的是predis/predis 依赖。

复制代码
composer require predis/predis

进入config/cache.php 配置添加redis缓存支持

示例:

复制代码
<?php

// +----------------------------------------------------------------------
// | 缓存设置
// +----------------------------------------------------------------------

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

    // 缓存连接方式配置
    'stores'  => [
        'file' => [
            // 驱动方式
            'type'       => 'File',
            // 缓存保存目录
            'path'       => '',
            // 缓存前缀
            'prefix'     => '',
            // 缓存有效期 0表示永久缓存
            'expire'     => 0,
            // 缓存标签前缀
            'tag_prefix' => 'tag:',
            // 序列化机制 例如 ['serialize', 'unserialize']
            'serialize'  => [],
        ],
        // 更多的缓存连接
    ],
    // redis缓存
    'redis' =>  [
        'type'  =>  'redis',
        'host'  =>  '127.0.0.1',
        'timeout'=> 3600
    ],
    
    
];
页面测试代码
复制代码
<?php
namespace app\controller;

use app\BaseController;
use think\facade\Cache;

class Index extends BaseController
{
    public function index()
    {
        //Cache::set('name', [1,2,3]);
        //(Cache::get('name'));
        Cache::store('redis')->set('name', [1,2,3]);
        dump(Cache::store('redis')->get('name'));
    }
}
效果

redis 高级用法

在php 原生中redis 的使用是

复制代码
        //加载扩展
        $redis = new \Redis();
        //连接扩展
        $redis->connect("127.0.0.1","6379");
  
        //判断是否过期
        $redis_status = $redis->exists("info");
        if($redis_status==false){
            //缓存失效,重新存入
            //查询数据
            $Info = db("user")->where('id', $userId)->find();
            //转换成字符串,有利于存储
            $redisInfo = serialize($Info);
            //存入缓存
            $redis->set("info",$redisInfo);
            //设置缓存周期,60秒
            $redis->expire("info",60);
            var_dump("新存入的值");
        }
        //获取缓存
        $result = unserialize($redis->get("info"));
  
        //当前时间
        var_dump(date("Y-m-d H:i:s",time()));
        var_dump($result);

thinkephp 中要使用php redis 的扩展方法。则需使用handler();

代码示例

复制代码
$redis = Cache::store('redis')->handler(); // 这条代码等于  $redis = new \Redis();

$redis->set("info",'hello world');   // 设置字段
$redis->expire("info",10);  // 设置过期时间
var_dump($result); //1 没过期,2 为过期;

根据菜鸟教程,试一下列表存储:

代码:

复制代码
$redis = Cache::store('redis') -> handler();
        $redis->lpush("tutorial-list", "Redis");
        $redis->lpush("tutorial-list", "Mongodb");
        $redis->lpush("tutorial-list", "Mysql");
        // 获取存储的数据并输出
        $arList = $redis->lrange("tutorial-list", 0 ,5);
        echo "Stored string in redis";
        print_r($arList);

成功!

相关推荐
科技小花2 小时前
全球化深水区,数据治理成为企业出海 “核心竞争力”
大数据·数据库·人工智能·数据治理·数据中台·全球化
X56614 小时前
如何在 Laravel 中正确保存嵌套动态表单数据(主服务与子服务)
jvm·数据库·python
REDcker5 小时前
Linux信号机制详解 POSIX语义与内核要点 sigaction与备用栈实践
linux·运维·php
虹科网络安全5 小时前
艾体宝干货|数据复制详解:类型、原理与适用场景
java·开发语言·数据库
2301_771717215 小时前
解决mysql报错:1406, Data too long for column
android·数据库·mysql
小江的记录本5 小时前
【Kafka核心】架构模型:Producer、Broker、Consumer、Consumer Group、Topic、Partition、Replica
java·数据库·分布式·后端·搜索引擎·架构·kafka
dvjr cloi5 小时前
MySQL Workbench菜单汉化为中文
android·数据库·mysql
dFObBIMmai6 小时前
MySQL主从同步中大事务导致的延迟_如何拆分大事务优化同步
jvm·数据库·python
szccyw06 小时前
mysql如何限制特定存储过程执行权限_MySQL存储过程安全访问
jvm·数据库·python
czlczl200209256 小时前
利用“延迟关联”优化 MySQL 巨量数据的深分页查询
数据库·mysql