Categories
php

Laravel redis使用

laravel 使用redis 需要先安装redis包

composer require predis/predis

redis的配置文件是:config/database.php
 
 'redis' => [
 
        'client' => 'predis', //指定redis驱动为predis
 
        'default' => [
            'host' => env('REDIS_HOST', '127.0.0.1'),
            'password' => env('REDIS_PASSWORD',null),
            'port' => env('REDIS_PORT', 6379),
            'database' => 0,
        ],
 
    ],

在 .env 配置具体参数
REDIS_CLIENT=predis
    //也可在这里指定redis驱动为predis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
操作代码

use Illuminate\Support\Facades\Redis;

//set存数据 创建一个 key 并设置value 
Redis::set('key','value'); 
 
//get命令用于获取指定 key 的值,key不存在,返回null,如果key储存的值不是字符串类型,返回一个错误。
var_dump(Redis::get('key'));
 
//del 删除 成功删除返回 true, 失败则返回 false
Redis::del('key');
 
//mset存储多个 key 对应的 value
$array= array(
		'user1'=>'张三',
		'user2'=>'李四',
		'user3'=>'王五'
);
redis::mset($array); // 存储多个 key 对应的 value
 
// Mget返回所有(一个或多个)给定 key 的值,给定的 key 里面,key 不存在,这个 key 返回特殊值 nil
 
var_dump(redis::mget (array_keys( $array))); //获取多个key对应的value
 
//Strlen 命令用于获取指定 key 所储存的字符串值的长度。当 key存储不是字符串,返回错误。
var_dump(redis::strlen('key'));
 
//substr 获取第一到第三位字符
var_dump(Redis::substr('key',0,2));
 
//根据键名模糊搜索
var_dump(Redis::keys('use*'));//模糊搜索
 
//获取缓存时间
Redis::ttl('str2');//获取缓存时间
 
//exists检测是否存在某值
Redis::exists ( 'foo' ) ; //true

redis get

 'user' => Redis::get('user:profile:'.$id)

redis lrange

$values = Redis::lrange('names', 5, 10);

命令模式

$values = Redis::command('lrange', ['name', 5, 10]);

指定连接返回redis对象

$redis = Redis::connection('connection-name');

redis 事务


Redis::transaction(function ($redis) {
    $redis->incr('user_visits', 1);
    $redis->incr('total_visits', 1);
});

pipeline模式

Redis::pipeline(function ($pipe) {
    for ($i = 0; $i < 1000; $i++) {
        $pipe->set("key:$i", $i);
    }
});

redis消息队列(用laravel command 生成监听类)

消息订阅

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use Illuminate\Support\Facades\Redis;

class RedisSubscribe extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'redis:subscribe';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Subscribe to a Redis channel';

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        Redis::subscribe(['test-channel'], function ($message) {
            echo $message;
        });
    }
}

消息发布

 Redis::publish('test-channel', json_encode([
        'name' => 'Adam Wathan'
    ]));

Leave a Reply