Redis
webman'ın redis bileşeni varsayılan olarak illuminate/redis kullanır, yani laravel'in redis kütüphanesini kullanır. Kullanımı laravel ile aynıdır.
illuminate/redis
kullanmadan önce php-cli
'ye redis eklentisini kurmalısınız.
Dikkat
php-cli
'de redis eklentisinin yüklü olup olmadığını kontrol etmek içinphp -m | grep redis
komutunu kullanın. Lütfen unutmayın: Eğerphp-fpm
'e redis eklentisi kurduysanız, buphp-cli
'de de kullanabileceğiniz anlamına gelmez çünküphp-cli
vephp-fpm
farklı uygulamalardır ve farklıphp.ini
yapılandırmaları kullanabilir. Kullandığınızphp-cli
'nin hangiphp.ini
yapılandırma dosyasını kullandığını görmek içinphp --ini
komutunu kullanın.
Yükleme
composer require -W illuminate/redis illuminate/events
Yükledikten sonra, reload işlemi yeterli olmayacaktır, restart işlemi yapmalısınız.
Yapılandırma
redis yapılandırma dosyası config/redis.php
içinde bulunur.
return [
'default' => [
'host' => '127.0.0.1',
'password' => null,
'port' => 6379,
'database' => 0,
]
];
Örnek
<?php
namespace app\controller;
use support\Request;
use support\Redis;
class UserController
{
public function db(Request $request)
{
$key = 'test_key';
Redis::set($key, rand());
return response(Redis::get($key));
}
}
Redis API
Redis::append($key, $value)
Redis::bitCount($key)
Redis::decr($key, $value)
Redis::decrBy($key, $value)
Redis::get($key)
Redis::getBit($key, $offset)
Redis::getRange($key, $start, $end)
Redis::getSet($key, $value)
Redis::incr($key, $value)
Redis::incrBy($key, $value)
Redis::incrByFloat($key, $value)
Redis::mGet(array $keys)
Redis::getMultiple(array $keys)
Redis::mSet($pairs)
Redis::mSetNx($pairs)
Redis::set($key, $value, $expireResolution = null, $expireTTL = null, $flag = null)
Redis::setBit($key, $offset, $value)
Redis::setEx($key, $ttl, $value)
Redis::pSetEx($key, $ttl, $value)
Redis::setNx($key, $value)
Redis::setRange($key, $offset, $value)
Redis::strLen($key)
Redis::del(...$keys)
Redis::exists(...$keys)
Redis::expire($key, $ttl)
Redis::expireAt($key, $timestamp)
Redis::select($dbIndex)
Şu şekilde karşılık gelir:
$redis = Redis::connection('default');
$redis->append($key, $value)
$redis->bitCount($key)
$redis->decr($key, $value)
$redis->decrBy($key, $value)
$redis->get($key)
$redis->getBit($key, $offset)
...
Dikkat
Redis::select($db)
arabirimini dikkatli kullanın, webman sürekli bellekte olan bir çerçeve olduğundan, bir istek belirli bir veritabanını seçtikten sonra diğer istekleri etkileyebilir. Birden fazla veritabanı kullanılması durumunda, farklıdb
'leri farklı Redis bağlantı yapılandırmalarına ayarlamanız önerilir.
Birden Çok Redis Bağlantısının Kullanımı
Örneğin, yapılandırma dosyası config/redis.php
şu şekilde olabilir:
return [
'default' => [
'host' => '127.0.0.1',
'password' => null,
'port' => 6379,
'database' => 0,
],
'cache' => [
'host' => '127.0.0.1',
'password' => null,
'port' => 6379,
'database' => 1,
],
]
Varsayılan olarak default
bağlantısını kullanır, isterseniz Redis::connection()
yöntemini kullanarak hangi redis bağlantısını kullanmak istediğinizi seçebilirsiniz.
$redis = Redis::connection('cache');
$redis->get('test_key');
Küme Yapılandırması
Uygulamanız Redis sunucusu kümeleri kullanıyorsa, bu kümeleri tanımlamak için redis yapılandırma dosyasında clusters
anahtarını kullanmalısınız:
return [
'clusters' => [
'default' => [
[
'host' => 'localhost',
'password' => null,
'port' => 6379,
'database' => 0,
],
],
],
];
Varsayılan olarak, küme, bir istemci kesmesi sunucusunda gerçekleştirilebilir, böylece bir düğüm havuzu oluşturabilir ve büyük miktarda kullanılabilir bellek oluşturabilirsiniz. Bununla birlikte, müşteri tarafı başarısızlık durumlarıyla başa çıkmaz; bu nedenle, bu özellik genellikle başka bir ana veritabanından önbellek verisi almak için kullanılır. Redis'in doğal kümesini kullanmak istiyorsanız, yapılandırma dosyasındaki options
anahtarı aşağıdaki gibi belirtilmelidir:
return[
'options' => [
'cluster' => 'redis',
],
'clusters' => [
// ...
],
];
Pipeline Komutu
Sunucuya birden çok komut göndermeniz gerektiğinde, pipeline komutunu kullanmanızı öneririz. pipeline yöntemi bir Redis örneğinin bir kapanış fonksiyonunu kabul eder. Tüm komutları Redis örneğine gönderebilir ve hepsi bir işlemde tamamlanacaktır:
Redis::pipeline(function ($pipe) {
for ($i = 0; $i < 1000; $i++) {
$pipe->set("key:$i", $i);
}
});