1.应用场景

在laravel中快速启动redis进行开发。

暂用途如下:

1.缓存

2.队列 参加: 

3.订阅发布

 

高级用法

TBD

2.学习/操作

环境:

Windows10 64位 专业版

laravel 5.8

redis 3.0

github: https://github.com/ningxiaofa/laravel58.test/blob/master

 

备注:

此处使用的是predis/predis 组件. 也是redis官方推荐使用组件之一[共计推荐俩].

laravel redis实现队列 laravel redis使用_laravel redis实现队列

0. 安装Predis组件

composer require predis/predis 回车即可

 

1.redis设置[redis服务器配置]

打开配置文件 G:\phpstudy_pro\Extensions\redis3.0.504\redis.windows.conf

 

1.1 添加或者修改 [最大可用内存]:  //这里使用100MB

maxmemory 100*1024*1024

 

1.2 添加或者修改 [缓存淘汰策略] //即缓存达到最大可用内存, 需要释放部分内存

maxmemory-policy allkeys-lru 

//这里先使用从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰  共计六种, 可详细参看配置文件或者资料结合具体场景配置.

 

1.3 laravel中连接redis服务器配置

打开文件 config/database.php 查看redis配置项

laravel redis实现队列 laravel redis使用_Laravel_02

可以直接在redis项数组中配置参数, 但是不推荐. 

请使用.env 配置全局常量,

开发环境中注意三个参数即可:

REDIS_HOST=127.0.0.1 //本机地址
REDIS_PASSWORD=null //redis服务器密码为空, 即为null, 
REDIS_PORT=6379 //也是默认端口, 可修改, 与redis服务器监听的端口保持一致即可

laravel redis实现队列 laravel redis使用_队列_03

 

 

2.编写代码

逻辑代码[crud]这里省略. 

代码详情: 

https://github.com/ningxiaofa/laravel58.test/blob/master/app/Http/Controllers/Web/RedisController.php

 

简单记录: //如下代码, 不推荐,只是作为练手测试

 

<?php
 namespace App\Http\Controllers\Web;
use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Redis as RedisServer;
 use App\Redis;//Model类class RedisController
 {
     public function getList(Request $request)
     {
         $rows = RedisServer::get('redis_list');
         if($rows){
             $rows = json_decode($rows);//json_decode($rows, 1) => 数组
         }else{
             $rows = Redis::all();//->toArray() => 数组
             RedisServer::set('redis_list', json_encode($rows));
         }
         return ['code' => 1, 'msg' => 'Success!', 'rows' => $rows];
     }
 }

 

补充://有时候,因为不是单纯的数组,json_encode与json_decode转换之后,会出现问题。

这时候可以使用serialize与unserialize()   //20200823 周日 家里

laravel redis实现队列 laravel redis使用_laravel redis实现队列_04

 

 

3.正常访问系统[通过浏览器/或者curl]

http://laravel58.test/redis/list 

 

4.使用redisClient连接redis服务器, 查看是否有缓存数据生成

laravel redis实现队列 laravel redis使用_队列_05

laravel redis实现队列 laravel redis使用_队列_06

由上可知, 有缓存数据生成. redis作为缓存使用初步完成. 待优化!!

 

 

 

 

后续补充

...

3.问题/补充

1.laravel中redis命令如何查看?//这里predis/predis 组件

可以查看vendor/predis/predis/src/Command目录下,命令大小写均可, 
如: vendor/predis/predis/src/Command/KeyDelete.php 

 

/**
  * {@inheritdoc}
  */
 public function getId()
 {
     return 'DEL';
 }


 

使用del/DEL均可, 不区分大小写.

 

2. 安装predis组件时, phpstorm中Terminal出现报错.

laravel redis实现队列 laravel redis使用_Laravel_07

报错信息:

Installation failed, reverting ./composer.json to its original content.

                                                                                                                                                                                                
 

[Composer\Downloader\TransportException]                                                                                                                                                      
   The "https://mirrors.aliyun.com/composer/p/illuminate/session%24e3ea5c48af883034b1c4fd4eaba82b0d6c49cf1df9e58a8d9bd9018945ce3037.json" file could not be downloaded (HTTP/1.1 404 Not Found)

 
                                                                                                                                                                                               

解决办法:

重新使用cmd下执行安装predis

laravel redis实现队列 laravel redis使用_Laravel_08

正常安装.

 

 

后续补充

...

4.参考

  //laravel中redis命令参考

https://xueyuanjun.com/post/19525 //laravel之Redis

https://laravel.com/docs/master/redis  //laravel之Redis [英文文档]

https://redis.io/clients  //redis客户端[language api], 根据编程语言而定  php推荐使用predis或者phpredis

后续补充

...