Skip to content

Commit

Permalink
新增 evalEx 文档说明
Browse files Browse the repository at this point in the history
  • Loading branch information
Yurunsoft committed Dec 13, 2019
1 parent 9d38722 commit 3459115
Showing 1 changed file with 60 additions and 44 deletions.
104 changes: 60 additions & 44 deletions doc/components/redis/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,53 +7,53 @@ Redis 连接池配置方式已经在连接池里讲过,这里就不重复了
```php
<?php
return [
'redis' => [
'defaultPool' => 'alias1', // 默认连接池
'quickFromRequestContext' => true, // 从当前上下文中获取公用连接
],
'pools' => [
'redis' => [
'defaultPool' => 'alias1', // 默认连接池
'quickFromRequestContext' => true, // 从当前上下文中获取公用连接
],
'pools' => [
// 连接池名称
'alias1' => [
'alias1' => [
// 同步池子,task进程使用
'sync' => [
'pool' => [
'class' => \Imi\Redis\SyncRedisPool::class,
'config' => [
// 同上
],
],
'resource' => [
// 'host' => '127.0.0.1',
// 'port' => 6379,
// 是否自动序列化变量
// 'serialize' => true,
// 密码
// 'password' => null,
// 第几个库
// 'db' => 0,
],
],
'sync' => [
'pool' => [
'class' => \Imi\Redis\SyncRedisPool::class,
'config' => [
// 同上
],
],
'resource' => [
// 'host' => '127.0.0.1',
// 'port' => 6379,
// 是否自动序列化变量
// 'serialize' => true,
// 密码
// 'password' => null,
// 第几个库
// 'db' => 0,
],
],
// 异步池子,worker进程使用
'async' => [
'pool' => [
'class' => \Imi\Redis\CoroutineRedisPool::class,
'config' => [
// 同上
],
],
// uri方式,以分号;分隔多个,参数使用query参数格式,特殊字符需要转码
'resource' => 'tcp://192.168.0.222&timeout=60;tcp://192.168.0.222',
],
]
],
'async' => [
'pool' => [
'class' => \Imi\Redis\CoroutineRedisPool::class,
'config' => [
// 同上
],
],
// uri方式,以分号;分隔多个,参数使用query参数格式,特殊字符需要转码
'resource' => 'tcp://192.168.0.222&timeout=60;tcp://192.168.0.222',
],
]
],
];
```

## 基本操作
## 基本使用

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

## 获取对象
### 获取对象

```php
use \Imi\Redis\RedisManager;
Expand All @@ -62,7 +62,7 @@ $redis->set('imi:redis:test', date('Y-m-d H:i:s'));
$datetime = $redis->get('imi:redis:test');
```

## 获取新对象
### 获取新对象

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

Expand All @@ -73,26 +73,42 @@ $redis = RedisManager::getNewInstance();
RedisManager::release($redis);
```

## 获取默认连接池名称
### 获取默认连接池名称

```php
use \Imi\Redis\RedisManager;
echo RedisManager::getDefaultPoolName();
```

## 便捷操作
### 便捷操作

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

## 回调方式使用Redis
### 回调方式使用Redis

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

## 进阶使用

### evalEx

imi 封装了一个基于 `evalSha``eval` 的便捷方法,优先使用 `evalSha` 尝试,失败则使用 `eval` 方法。

定义:`public function evalEx($script, $args = null, $num_keys = null)`

```php
return false !== $redis->evalEx(<<<SCRIPT
redis.call('set', 'a', '123')
return redis.call('get', 'a')
SCRIPT
);
```

0 comments on commit 3459115

Please sign in to comment.