杂项
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
指定了要使用的终端名称