PHP code example of veasin / ff-redis

1. Go to this page and download the library: Download veasin/ff-redis library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

veasin / ff-redis example snippets


use function ff\resource\redis;

$redis = redis('default');   // get/create default connection
$redis = redis('cache');     // get/create named connection
redis(null);                  // clear all connections + failure flags

['host' => '127.0.0.1', 'port' => 6379]

container('#resource.redis.ttl', 30);  // 每 30 秒验证一次

container('#resource/redis:', fn($config) => {
    $c = new \Swoole\Coroutine\Redis();
    $c->connect($config['host'], $config['port'] ?? 6379);
    return $c;
});

container('^#ext.queue.redis', \ff\queue\redis(...));

// 生产
ff\queue\redis('orders', ['order_id' => 123]);
ff\queue\redis('orders', 'plain text');

// 消费
ff\queue\redis('orders', fn($msg) => true);     // ack
ff\queue\redis('orders', fn($msg) => false);    // nack + requeue
ff\queue\redis('orders', fn($msg) => null);     // nack + discard
ff\queue\redis('orders', fn($msg) => 5);        // retry after 5 seconds

use function ff\queue\redis;
redis('orders', ['id' => 1]);                              // 生产
redis('orders', fn($m) => true);                           // 消费
redis('orders', fn($m) => true, ['timeout' => 10]);        // 指定超时

container('#queue/redis', [
    'config'  => 'default',   // 使用的 Redis 连接名(#redis.{name})
    'prefix'  => 'q:',        // 队列 key 前缀
    'timeout' => 10,          // brPop 超时秒数,0 永久阻塞
]);

use function ff\cache\redis;

redis('key');                       // read
redis('key', 'value');              // write
redis('key', null);                 // delete
redis(null);                        // flush all
redis('key', 'value', 60);          // write + TTL
redis('key', 'value', ['ttl' => 60, 'config' => 'cfg']);  // TTL + 配置名
redis('key', 'value', 'cfg');       // 配置名(string 简写)

// Batch
redis(['k1', 'k2']);                // multi-get
redis(['k1' => 'v1']);              // multi-set

cache(redis('my_key', middleware: ['ttl' => 60]), fn($next) => render());
cache(redis('my_key', 'fallback', middleware: 60), fn($next) => null);

container('#cache.redis', [
    'host'     => '127.0.0.1',
    'port'     => 6379,
    'password' => 'secret',
    'database' => 0,
]);

// 命名配置
container('#cache.redis.cfg', [
    'ttl'    => 3600,
    'prefix' => 'c:',
]);

container('^#ext.queue.redis', \ff\queue\redis(...));
container('^#ext.cache.redis', \ff\cache\redis(...));