laravel中redis的使用

雜項

laravel採用predis進行管理redisphp

使用composer安裝predislaravel

composer require predis/predis 1.0.*

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

"predis/predis":"1.0.*"

而後執行 composer update --no-scripts

__Notice:__在laravel下安裝了redis的擴展.laravel會報錯。redis

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

解決方法,在php.ini去掉redis.sojson

'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.composer

除了使用自己所提供的命令意外Artisan也能夠自定義命令, 若要建立新的命令,你能夠使用 make:console Artisan 命令生成一個默認的腳原本幫助你開始編寫ide

php artisan make:console RedisSubscribeui

一旦生成這個命令,你應該先填寫類的 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指定了要使用的終端名稱

相關文章
相關標籤/搜索