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);
成功!