Redis

Redis 连接池配置方式已经在连接池里讲过,这里就不重复了,直接说使用方法。

连接池配置

  1. <?php
  2. return [
  3. 'redis' => [
  4. 'defaultPool' => 'alias1', // 默认连接池
  5. 'quickFromRequestContext' => true, // 从当前上下文中获取公用连接
  6. ],
  7. 'pools' => [
  8. // 连接池名称
  9. 'alias1' => [
  10. // 同步池子,task进程使用
  11. 'sync' => [
  12. 'pool' => [
  13. 'class' => \Imi\Redis\SyncRedisPool::class,
  14. 'config' => [
  15. // 同上
  16. ],
  17. ],
  18. 'resource' => [
  19. // 'host' => '127.0.0.1',
  20. // 'port' => 6379,
  21. // 是否自动序列化变量
  22. // 'serialize' => true,
  23. // 密码
  24. // 'password' => null,
  25. // 第几个库
  26. // 'db' => 0,
  27. ],
  28. ],
  29. // 异步池子,worker进程使用
  30. 'async' => [
  31. 'pool' => [
  32. 'class' => \Imi\Redis\CoroutineRedisPool::class,
  33. 'config' => [
  34. // 同上
  35. ],
  36. ],
  37. // uri方式,以分号;分隔多个,参数使用query参数格式,特殊字符需要转码
  38. 'resource' => 'tcp://192.168.0.222&timeout=60;tcp://192.168.0.222',
  39. ],
  40. ]
  41. ],
  42. ];

基本操作

与原生 Redis 类操作方式基本一致,这里无需多说。

获取对象

  1. use \Imi\Redis\RedisManager;
  2. $redis = RedisManager::getInstance();
  3. $redis->set('imi:redis:test', date('Y-m-d H:i:s'));
  4. $datetime = $redis->get('imi:redis:test');

获取新对象

每次调用都尝试从连接池中获取新的对象,要注意每次用完需要手动释放!

  1. use \Imi\Redis\RedisManager;
  2. $redis = RedisManager::getNewInstance();
  3. // $redis = RedisManager::getNewInstance($poolName);
  4. RedisManager::release($redis);

获取默认连接池名称

  1. use \Imi\Redis\RedisManager;
  2. echo RedisManager::getDefaultPoolName();

便捷操作

  1. use \Imi\Redis\Redis;
  2. Redis::set('imi:redis:test', date('Y-m-d H:i:s'));
  3. $datetime = Redis::get('imi:redis:test');

回调方式使用Redis

  1. $result = Redis::use(function($resource, $redis){
  2. redis->set('a', 1);
  3. return true;
  4. }); // true