Redis

    通过全局函数操作缓存

    • cache(string $key = null, $default = null) 如果参数都为默认值,会返回Cache对象,提供缓存操作。如果传入key参数,返回get缓存值,如果key不存在,返回default参数值

    通过注入Cache和Redis(驱动对象),都可以操作缓存,唯一不同的是,Cache方式注入的对象,是使用配置的默认驱动。

    1. * @Controller(prefix="/redis")
    2. */
    3. class RedisController
    4. {
    5. /**
    6. * @Inject("cache")
    7. * @var Cache
    8. */
    9. private $cache;
    10. /**
    11. * @Inject()
    12. */
    13. private $redis;
    14. public function testCache()
    15. $result = $this->cache->set('name', 'stelin');
    16. $name = $this->cache->get('name');
    17. $this->redis->incr("count");
    18. $this->redis->incrBy("count2", 2);
    19. return [$result, $name, $this->redis->get('count'), $this->redis->get('count2')];
    20. }
    21. }
    • Cache和Redis(驱动对象)对象,操作方式都一样,里面提供了一系列的缓存操作函数。
    • 暂时只能提供一个统一的函数deferCall,实现延迟收包操作,接下来会新增deferXxx函数,实现对应延迟收包操作函数。

    配置一个Redis实例,需要新增一个实例连接池和连接池配置,然后通过bean,配置新增的redis实例

    连接池配置

    1. /**
    2. * DemoRedisPoolConfig
    3. *
    4. * @Bean()
    5. class DemoRedisPoolConfig extends RedisPoolConfig
    6. {
    7. * @Value(name="${config.cache.demoRedis.db}", env="${REDIS_DEMO_REDIS_DB}")
    8. * @var int
    9. */
    10. protected $db = 0;
    11. /**
    12. * @Value(name="${config.cache.demoRedis.prefix}", env="${REDIS_DEMO_REDIS_PREFIX}")
    13. * @var string
    14. */
    15. protected $prefix = '';
    16. }

    连接池

    继承RedisPool,重新注入配置信息

    1. return [
    2. // ......
    3. 'demoRedis' => [
    4. 'class' => \Swoft\Redis\Redis::class,
    5. 'poolName' => 'demoRedis'
    6. ]

    使用@Inject,注入配置的redis实例,使用没有任何区别,只是配置信息发生了变化