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'
]));