## db - 切換數據庫
~~~
use \api\Redis;
// 切換成1號數據庫
Redis::db(1);
~~~
<br/>
## key - 設置KEY
~~~
use \api\Redis;
// @param:key名稱
// @param:操作類型,例如,get、set、hgetall,指定本次需要執行的操作
// @param:key前綴
Redis::key('key', 'get');
~~~
>框架提供了redis快捷操作函數,以下的例子均已快速操作
>redis(['key', 'get', 'prefis']) 等價于 \api\Redis::key('key', 'get', 'prefix');
>建議開發中也使用 redis('key')的寫法
<br/>
## get - 讀取redis
~~~
// 以下案例均已 eapi:key為操作的KEY,文檔中只列出了最常用的操作,其他操作請查看redis文檔
// 只需要注意參數傳遞即可
// get
redis(['key', 'get', 'eapi'])->get();
// mget
redis([
['key_1', 'key_2'], 'mget', 'eapi'
])->get();
// getset,讀取KEY后重新賦值
redis([
'key', 'getset', 'eapi'
])->get('new_value');
// llen,獲取list長度
redis([
'key', 'llen', 'eapi'
])->get();
// lindex,返回列表key中,下標為index的元素
redis([
'key', 'lindex', 'eapi'
])->get(1);
// lrange
redis([
'key', 'lrange', 'eapi'
])->get(0, -1);
// smembers,返回set集合key中的所有成員
redis([
'key', 'smembers', 'eapi'
])->get();
// sismember,判斷set集合是否包含某個元素
redis([
'key', 'sismember', 'eapi'
])->get('member');
// zscore,返回有序集 key 中,成員 member 的 score 值
redis([
'key', 'zscore', 'eapi'
])->get('member');
// zrange,通過score從小到大
redis([
'key', 'zrange', 'eapi'
])->get(0, -1);
// zrevrange,通過score從大到小
redis([
'key', 'zrevrange', 'eapi'
])->get(0, -1);
// hlen,返回哈希表key中域的數量
redis([
'key', 'hlen', 'eapi'
])->get();
// hget
redis([
'key', 'hget', 'eapi'
])->get('field');
// hgetall
redis([
'key', 'hgetall', 'eapi'
])->get();
// hkeys
redis([
'key', 'hkeys', 'eapi'
])->get();
// hvals
redis([
'key', 'hvals', 'eapi'
])->get();
~~~
<br/>
## set - 寫入redis
~~~
// 以下案例均已 eapi:key為操作的KEY,文檔中只列出了最常用的操作,其他操作請查看redis文檔
// 只需要注意參數傳遞即可
// set
redis([
'key', 'set', 'eapi'
])->set('val');
// 如果set寫入的是數組,會自動轉換成json
redis([
'key', 'set', 'eapi'
])->set([
'id' => 1,
'name' => 'eapi'
]);
// setex,設置5秒過期
redis([
'key', 'setex', 'eapi'
])->set(5, 'val');
// setnx,排他
redis([
'key', 'setnx', 'eapi'
])->set('val');
// incr遞增
redis([
'key', 'incr', 'eapi'
])->set();
// incrby指定遞增值
redis([
'key', 'incrby', 'eapi'
])->set(5);
// decr遞減
redis([
'key', 'decr', 'eapi'
])->set();
// decrby指定遞減值
redis([
'key', 'decrby', 'eapi'
])->set(5);
// hincrby,HASH表中的field字段遞增5
redis([
'key', 'hincrby', 'eapi'
])->set('field', 5);
// hset
redis([
'key', 'hset', 'eapi'
])->set('field', 'val');
// hmset
redis([
'key', 'hmset', 'eapi'
])->set([
'field1' => 'val',
'field2' => 'val'
]);
// lpush
redis([
'key', 'lpush', 'eapi'
])->set('val');
// rpush
redis([
'key', 'rpush', 'eapi'
])->set('val');
// lpushx
redis([
'key', 'lpushx', 'eapi'
])->set('val');
// rpushx
redis([
'key', 'rpushx', 'eapi'
])->set('val');
// lset
redis([
'key', 'lset', 'eapi'
])->set(5, 'val');
// sadd
redis([
'key', 'sadd', 'eapi'
])->set('val');
// zadd
redis([
'key', 'zadd', 'eapi'
])->set(5, 'field');
// zincrby
redis([
'key', 'zincrby', 'eapi'
])->set(5, 'field');
~~~
<br/>
## del - 刪除
~~~
// 以下案例均已 eapi:key為操作的KEY,文檔中只列出了最常用的操作,其他操作請查看redis文檔
// 只需要注意參數傳遞即可
// del
redis([
'key', 'del', 'eapi'
])->del();
// lpop
redis([
'key', 'lpop', 'eapi'
])->del();
// rpop
redis([
'key', 'rpop', 'eapi'
])->del();
// lrem
redis([
'key', 'lrem', 'eapi'
])->del('val', 10);
// ltrim
redis([
'key', 'ltrim', 'eapi'
])->del(0, 10);
// srem
redis([
'key', 'srem', 'eapi'
])->del('val');
// spop
redis([
'key', 'spop', 'eapi'
])->del(3);
// zrem
redis([
'key', 'zrem', 'eapi'
])->del('val');
// hdel
redis([
'key', 'hdel', 'eapi'
])->del([
'field1', 'field2'
]);
~~~
<br/>
## lock - 加鎖
~~~
use \api\Redis;
// 創建鎖
// @param 鎖名稱
// @param 鎖過期時間,單位秒
$lock = Redis::lock('test', 1);
// 如果沒拿到鎖則返回錯誤信息
if ( ! $lock)
{
fail(101, '請求錯誤,請稍候重試');
}
// 具體的業務處理...
// 處理完成后釋放鎖
Redis::unlock('test');
~~~
<br/>
## unlock - 釋放鎖
~~~
use \api\Redis;
// @param 鎖名稱
Redis::unlock('test');
~~~
<br/>
## pipe - 返回管道符,用于批量操作
~~~
use \api\Redis;
// 創建管道
$pipe = Redis::pipe();
// 使用管道執行操作
$pipe->zincrby('order', 100, 1);
$pipe->zincrby('order', 100, 1);
$pipe->zincrby('order', 100, 1);
$pipe->zincrby('order', 100, 1);
$pipe->zincrby('order', 100, 1);
// 執行
$pipe->exec();
~~~
<br/>
## clear - 批量刪除
~~~
// 批量刪除 eapi:key_1、eapi:key_2
redis([
'key*', 'del', 'eapi'
])->clear();
~~~
<br/>
## flush - 清空數據庫
~~~
use \api\Redis;
Redis::flush();
~~~
<br/>
## dbSize - 返回KEY數量
~~~
use \api\Redis;
Redis::dbSize();
~~~
<br/>
## info - 返回數據庫信息
~~~
use \api\Redis;
Redis::info();
~~~
<br/>
## save - 落地數據
~~~
use \api\Redis;
Redis::save();
~~~