文档章节

laravel中redis的使用

eatnothing
 eatnothing
发布于 2016/05/18 14:51
字数 599
阅读 1319
收藏 4

杂项

laravel采用predis进行管理redis

使用composer安装predis

composer require predis/predis 1.0.*

或者在laravel下自带的composer.json中添加

"predis/predis":"1.0.*"

然后执行 composer update --no-scripts

__Notice:__在laravel下安装了redis的扩展.laravel会报错。

Non-static method Redis::set() cannot be called statically, assuming $this from incompatible context

解决方法,在php.ini去掉redis.so

'redis' => [

    'cluster' => false,
//cluster 选项会让 Laravel 的 Redis 客户端在所有 Redis 节点间运行客户端分片(client-side sharding)来创建节点池,并因此拥有大量的可用内存

    'default' => [
        'host'     => '127.0.0.1',
        'port'     => 6379,
        'database' => 0,
    ],

],

字符串存取

1,Redis::set('qq','123456');  //存入到redis字符串中
if(Redis::exits('qq')){
//判断键是否存在
		dd(Redis::get('qq'));
		//根据键名获取键值
}
2,$values = Redis::lrange('names',5,10);
或者通过command命令
$values = Redis::command('lrange',['name',5,10])

管道化命令
当你想要在单次操作中发送多个命令至服务器时则可以使用管道化命令。pipeline 方法接收一个参数:带有 Redis 实例的闭包。你可以发送所有的命令至此 Redis 实例,它们都会在单次操作中运行:
Redis::pipeline(function ($pipe) {
    for ($i = 0; $i < 1000; $i++) {
        $pipe->set("key:$i", $i);
    }
});

dd(Redis::get('key:90'))  //检查是否插入成功

redis发布和订阅

首先需要知道如何自定义一个Artisan.

除了使用本身所提供的命令意外Artisan也可以自定义命令, 若要创建新的命令,你可以使用 make:console Artisan 命令生成一个默认的脚本来帮助你开始编写

php artisan make:console RedisSubscribe

一旦生成这个命令,你应该先填写类的 signature 和 description 这两个属性,它们会被显示在 list 界面中。 命令运行的时候 handle 方法会被调用,因此你可以将程序逻辑放置在这个方法中

在handle中写入逻辑代码
public function handle()
    {
        Redis::subscribe(['test-channel'],function($message){
            echo $message;
        });
    }

 在Routes.php写入路由 

 此时将自定义的命令行注册到kernel.php中

 protected $commands = [

        Commands\RedisSubscribe::class,
    ];

 Route::get('publish', function () {
    // 路由逻辑...
 Redis::publish('test-channel',json_encode(['foo' => 'bar']));
});

在命令行执行 
`php artisan redis:subscribe`

web页面访问路由地址,我们可以发现已经订阅成功并把数据发送到当前命令行下面

如何创建一个自定义的命令行artisan

php artisan make:console SendEmails --command:send

--command指定了要使用的终端名称

© 著作权归作者所有

eatnothing
粉丝 39
博文 128
码字总数 68736
作品 0
昌平
程序员
私信 提问
laravel扩展使用redis消息发布与订阅

laravel扩展使用redis消息发布与订阅 业务场景 shell测试redis发布publish和订阅subscribe 结合laravel订阅消息并处理 业务场景 项目业务场景中需要去订阅兄弟部门的数据,技术栈这块经过商讨...

似阳似海
2018/12/05
0
0
Laravel5.2之Redis保存页面浏览量

说明:本文主要讲述使用Redis作为缓存加快页面访问速度。同时,会将开发过程中的一些截图和代码黏上去,提高阅读效率。 备注:最近在学习github上别人的源码时,发现好多在计算一篇博客页面访...

botkenni
2016/10/21
71
0
Laravel5.3之Session源码解析(上)

说明:本文主要通过学习Laravel的session源码学习Laravel是如何设计session的,将自己的学习心得分享出来,希望对别人有所帮助。Laravel在中定义了session中间件,并通过该中间件来设计sessi...

botkenni
2016/11/18
40
0
Laravel5.3之Session源码解析(中)

说明:在上篇中学习了session的启动过程,主要分为两步,一是session的实例化,即IlluminateSessionStore的实例化;二是从session存储介质redis中读取的数据。Laravel5.3把session垃圾回收放...

botkenni
2016/11/19
36
0
使用 Docker 搭建 Laravel 本地环境

(原文地址:https://blog.tanteng.me/2017/10/docker-laravel-local-environment/) Laravel 官方提供 Homestead 和 Valet 作为本地开发环境,Homestead 是一个官方预封装的 Vagrant Box,也...

谈腾
2017/11/08
99
0

没有更多内容

加载失败,请刷新页面

加载更多

高级技术题整理

1. 为什么等待和通知是在 Object 类而不是 Thread 中声明的? 一个棘手的 Java 问题,如果 Java编程语言不是你设计的,你怎么能回答这个问题呢。Java编程的常识和深入了解有助于回答这种棘手...

泉天下
10分钟前
1
0
Elasticsearch

1 、下载 下载地址:https://www.elastic.co/downloads/past-releases 2 、安装 elasticsearch无需安装,解压即用。 3.运行 进入elasticsearch/bin目录,可以看到下面的执行文件: 双击运行 ...

少年已不再年少
10分钟前
4
0
Spring Boot 2.X(七):Spring Cache 使用

Spring Cache 简介 在 Spring 3.1 中引入了多 Cache 的支持,在 spring-context 包中定义了org.springframework.cache.Cache 和 org.springframework.cache.CacheManager 两个接口来统一不同......

朝雾轻寒
13分钟前
2
0
java路径问题

在Java中有几种常见获取文件路径的方法,此处演示下用法和效果。 测试项目目录结构如右图: 1、使用File类 File file = new File("");// Java项目中-->D:\WorkSoftware\Workspace\EclipseP...

随心の随缘
15分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部