PHP操作Redis LIST ,SET, HASH 的相關命令 (一)
1.PHP操作Redis之List
1、lPush()/rPush()
lPush()的語法格式是:$redis->lPush(key, value),作用是將value新增到連結串列key的左邊(頭部)。
rPush()的語法格式是:$redis->rPush(key, value),作用是將value新增到連結串列key的右邊(尾部)。
2、lPushx()/rPushx()
lPushx 將值value插入到列表key的表頭,當且僅當key存在並且是一個列表。
rPushx 將值value插入到列表key的表尾,當且僅當key存在並且是一個列表。
3、lPop()/rPop()
lPop()的語法格式是:$redis->lPop(key),作用是將連結串列key的左邊(頭部)元素刪除。
rPop()的語法格式是:$redis->rPop(key),作用是將連結串列key的右邊(尾部)元素刪除。
4、lSize()
lSize()的語法格式是:$redis->lSize(key),作用是返回連結串列key中有多少個元素。
5、lGet()/lIndex()
lGet()的語法格式是:$redis->lGet(key, index),作用是返回連結串列key的index位置的元素值。
6、lSet()
lSet()的語法格式是:$redis ->lSet(key, index, value),作用是將連結串列key的index位置的元素值設為value。
7、lRange()/lGetRange()
lRange()的語法格式是:$redis->lRange(key, start, end),作用是返回連結串列key中start到end位置間的元素。end為-1時,返回所有元素。例如:
//返回連結串列lang中的所有元素
print_r($redis->lRange('lang', 0, -1));
8、lTrim()/listTrim()
lTrim()的語法格式是:$redis->lTrim(key , start, end),作用是擷取連結串列key中start到end位置間的元素。
9、lRem()/lRemove()
lRem()的語法格式是:$redis->lRem(key, value, count),作用是刪除連結串列key中count個值為value的元素。count為0,則刪除所有value;count大於0,則從頭到尾刪除count<span style="font-family: Arial, Helvetica, sans-serif;">個元素;count小於0,則從尾到頭刪除count個元素。</span>
2.PHP操作Redis之SET(集合)
1、sAdd()
新增一個VALUE到SET容器中,如果這個VALUE已經存在於SET中,那麼返回FLASE。
$redis->sAdd('key1' , 'member1'); /* TRUE, 'key1' => {'member1'} */
$redis->sAdd('key1' , 'member2'); /* TRUE, 'key1' => {'member1', 'member2'}*/
$redis->sAdd('key1' , 'member2'); /* FALSE, 'key1' => {'member1', 'member2'}*/
2、sRem()
將member元素從source集合移動到destination集合中。
如果source集合不存在或不包含指定的member元素,則SMOVE命令不執行任何操作,僅返回0。否則,member元素從source集合中被移除,並新增到destination集合中去。
當destination集合已經包含member元素時,SMOVE命令只是簡單地將source集合中的member元素刪除。
當source或destination不是集合型別時,返回一個錯誤。
$redis->sAdd('key1' , 'member11');
$redis->sAdd('key1' , 'member12');
$redis->sAdd('key1' , 'member13'); /* 'key1' => {'member11', 'member12', 'member13'}*/
$redis->sAdd('key2' , 'member21');
$redis->sAdd('key2' , 'member22'); /* 'key2' => {'member21', 'member22'}*/
$redis->sMove('key1', 'key2', 'member13'); /* 'key1' => {'member11', 'member12'} *//* 'key2' => {'member21', 'member22', 'member13'} */
3、sMove()
將member元素從source集合移動到destination集合中。
如果source集合不存在或不包含指定的member元素,則SMOVE命令不執行任何操作,僅返回0。否則,member元素從source集合中被移除,並新增到destination集合中去。
當destination集合已經包含member元素時,SMOVE命令只是簡單地將source集合中的member元素刪除。
當source或destination不是集合型別時,返回一個錯誤。
$redis->sAdd('key1' , 'member11');
$redis->sAdd('key1' , 'member12');
$redis->sAdd('key1' , 'member13'); /* 'key1' => {'member11', 'member12', 'member13'}*/
$redis->sAdd('key2' , 'member21');
$redis->sAdd('key2' , 'member22'); /* 'key2' => {'member21', 'member22'}*/
$redis->sMove('key1', 'key2', 'member13'); /* 'key1' => {'member11', 'member12'} *//* 'key2' => {'member21', 'member22', 'member13'} */
4、sIsMember() 判斷member元素是否是集合key的成員。
$redis->sIsMember('key1', 'member1'); /* TRUE */
$redis->sIsMember('key1', 'memberX'); /* FALSE */
5、sIsMember() 返回集合key中的所有成員。
$redis->delete('s');
$redis->sAdd('s', 'a');
$redis->sAdd('s', 'b');
$redis->sAdd('s', 'a');
$redis->sAdd('s', 'c');
var_dump($redis->sMembers('s'));
6、sCard() 返回SET容器的成員數
$redis->sAdd('key1' , 'member1');
$redis->sAdd('key1' , 'member2');
$redis->sAdd('key1' , 'member3'); /* 'key1' => {'member1', 'member2', 'member3'}*/
$redis->sCard('key1'); /* 3 */
$redis->sCard('keyX'); /* 0 */
7、sPop() 移除並返回集合中的一個隨機元素。
$redis->sAdd('key1' , 'member1');
$redis->sAdd('key1' , 'member2');
$redis->sAdd('key1' , 'member3'); /* 'key1' => {'member3', 'member1', 'member2'}*/
$redis->sPop('key1'); /* 'member1', 'key1' => {'member3', 'member2'} */
$redis->sPop('key1'); /* 'member3', 'key1' => {'member2'} */
8、sInter()
返回指定SETS集合的交集結果。如果只是指定了一個SET集合,那麼返回該SET集合。如果在引數中有引數錯誤,那麼則返回FLASE。
$redis->sAdd('key1', 'val1');
$redis->sAdd('key1', 'val2');
$redis->sAdd('key1', 'val3');
$redis->sAdd('key1', 'val4');
$redis->sAdd('key2', 'val3');
$redis->sAdd('key2', 'val4');
$redis->sAdd('key3', 'val3');
$redis->sAdd('key3', 'val4');
var_dump($redis->sInter('key1', 'key2', 'key3'));
array(2) {
[0]=>
string(4) "val4"
[1]=>
string(4) "val3"
}
9、sInterStore() 執行一個交集操作,並把結果儲存到一個新的SET容器中。
$redis->sAdd('key1', 'val1');
$redis->sAdd('key1', 'val2');
$redis->sAdd('key1', 'val3');
$redis->sAdd('key1', 'val4');
$redis->sAdd('key2', 'val3');
$redis->sAdd('key2', 'val4');
$redis->sAdd('key3', 'val3');
$redis->sAdd('key3', 'val4');
var_dump($redis->sInterStore('output', 'key1', 'key2', 'key3'));
var_dump($redis->sMembers('output'));
int(2)
array(2) {
[0]=>
string(4) "val4"
[1]=>
string(4) "val3"
}
10、sUnion() 執行一個並集操作在N個SET容器之間,並返回結果。
$redis->delete('s0', 's1', 's2');
$redis->sAdd('s0', '1');
$redis->sAdd('s0', '2');
$redis->sAdd('s1', '3');
$redis->sAdd('s1', '1');
$redis->sAdd('s2', '3');
$redis->sAdd('s2', '4');
var_dump($redis->sUnion('s0', 's1', 's2'));
array(4) {
[0]=>
string(1) "3"
[1]=>
string(1) "4"
[2]=>
string(1) "1"
[3]=>
string(1) "2"
}
11、sUnionStore() 執行一個並集操作就和sUnion()一樣,但是結果儲存在第一個引數中。
$redis->delete('s0', 's1', 's2');
$redis->sAdd('s0', '1');
$redis->sAdd('s0', '2');
$redis->sAdd('s1', '3');
$redis->sAdd('s1', '1');
$redis->sAdd('s2', '3');
$redis->sAdd('s2', '4');
var_dump($redis->sUnionStore('dst', 's0', 's1', 's2'));
var_dump($redis->sMembers('dst'));
int(4)
array(4) {
[0]=>
string(1) "3"
[1]=>
string(1) "4"
[2]=>
string(1) "1"
[3]=>
string(1) "2"
}
12、sDiff()
執行差集操作在N個不同的SET容器之間,並返回結果。這個操作取得結果是第一個SET相對於其他參與計算的SET集合的差集。
$redis->delete('s0', 's1', 's2');
$redis->sAdd('s0', '1');
$redis->sAdd('s0', '2');
$redis->sAdd('s0', '3');
$redis->sAdd('s0', '4');
$redis->sAdd('s1', '1');
$redis->sAdd('s2', '3');
var_dump($redis->sDiff('s0', 's1', 's2'));
array(2) {
[0]=>
string(1) "4"
[1]=>
string(1) "2"
}
13、sDiffStore() 此命令等同於SDIFF,但它將結果儲存到destination集合,而不是簡單地返回結果集。
$redis->delete('s0', 's1', 's2');
$redis->sAdd('s0', '1');
$redis->sAdd('s0', '2');
$redis->sAdd('s0', '3');
$redis->sAdd('s0', '4');
$redis->sAdd('s1', '1');
$redis->sAdd('s2', '3');
var_dump($redis->sDiffStore('dst', 's0', 's1', 's2'));
var_dump($redis->sMembers('dst'));<strong>
</strong>
3.PHP操作Redis之HASH
1、hSet() 給雜湊表中某個 key 設定值.如果值已經存在, 返回 false
返回值:
LONG 如果成功設定,返回 1, 如果 key 已經存在,會替換成新值,且返回 0。失敗返回 0
$redis->delete('h')
$redis->hSet('h', 'key1', 'hello');
$redis->hGet('h', 'key1');
$redis->hSet('h', 'key1', 'plop');
$redis->hGet('h', 'key1');
2、hSetNx() 當雜湊表中不存在某 key 時,給該 key 設定一個值
返回值:
BOOL: 成功返回 TRUE. 失敗返回 FALSE.
$redis->delete('h')
$redis->hSetNx('h', 'key1', 'hello');
$redis->hSetNx('h', 'key1', 'world');
3、hGet() 獲得某雜湊 key 的值.如果 hash 表不存在或對應的 key 不存在,返回 false
返回值:
STRING ,如果 hash 表不存在或對應的 key 不存在,返回 false
$redis->delete('h')
$redis->hSet('h', 'key1', 'hello');
$redis->hGet('h', 'key1');
4、hLen() 哈表中 key 的數量
返回值:
LONG 哈表中 key 的數量.如果 hash 表不存在,或者對應的 key 的值不是 hash 型別,返回 false
$redis->delete('h')
$redis->hSet('h', 'key1', 'hello');
$redis->hSet('h', 'key2', 'plop');
$redis->hLen('h');
5、hDel() 刪除一個雜湊 key.如果 hash 表不存在或對應的 key 不存在,返回 false
返回值:
BOOL: 成功返回 TRUE. 失敗返回 FALSE.
$redis->delete('h')
$redis->hSet('h', 'key1', 'hello');
$redis->hSet('h', 'key2', 'plop');
$redis->hSet('h', 'key2');
6、hKeys() 獲得雜湊表中所有的 key
返回值:
陣列
$redis->delete('h');
$redis->hSet('h', 'a', 'x');
$redis->hSet('h', 'b', 'y');
$redis->hSet('h', 'c', 'z');
$redis->hSet('h', 'd', 't');
var_dump($redis->hKeys('h'));
輸出:
array(4) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
[3]=>
string(1) "d"
}
順序是隨機的
7、hVals() 獲得雜湊表中所有的值
返回值:
陣列
$redis->delete('h');
$redis->hSet('h', 'a', 'x');
$redis->hSet('h', 'b', 'y');
$redis->hSet('h', 'c', 'z');
$redis->hSet('h', 'd', 't');
var_dump($redis->hVals('h'));
輸出:
array(4) {
[0]=>
string(1) "x"
[1]=>
string(1) "y"
[2]=>
string(1) "z"
[3]=>
string(1) "t"
}
順序是隨機的
8、hGetAll() 獲得一個雜湊表中所有的 key 和 value
示例:
$redis->delete('h');
$redis->hSet('h', 'a', 'x');
$redis->hSet('h', 'b', 'y');
$redis->hSet('h', 'c', 'z');
$redis->hSet('h', 'd', 't');
var_dump($redis->hGetAll('h'));
輸出:
array(4) {
["a"]=>
string(1) "x"
["b"]=>
string(1) "y"
["c"]=>
string(1) "z"
["d"]=>
string(1) "t"
}
順序是隨機的
9、hExists() 檢查雜湊 key是否存在
返回值:
BOOL: 存在返回 true, 不存在返回 false
$redis->hSet('h', 'a', 'x');
$redis->hExists('h', 'a');
$redis->hExists('h', 'NonExistingKey');
10、hIncrBy() 給雜湊表中某 key 增加一個整數值
返回值:
LONG 增加後的值
$redis->delete('h');
$redis->hIncrBy('h', 'x', 2);
$redis->hIncrBy('h', 'x', 1);
11、hIncrByFloat() 給雜湊表中某 key 增加一個浮點數值
返回值:
FLOAT 增加後的值
$redis->delete('h');
$redis->hIncrByFloat('h','x', 1.5);
$redis->hIncrByFLoat('h', 'x', 1.5);
$redis->hIncrByFloat('h', 'x', -3.0);
12、hMSet() 給雜湊表設定多個 key 的值
返回值:
BOOL
示例:
$redis->delete('user:1');
$redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
13、hMGet() 獲得雜湊表中多個 key 的值
$redis->delete('h');
$redis->hSet('h', 'field1', 'value1');
$redis->hSet('h', 'field2', 'value2');
$redis->hmGet('h', array('field1', 'field2'));