PHP操作Redis LIST ,SET, HASH 的相关命令 (2)

1.PHP操作Redis之List
1、lPush()/rPush()

lPush()的语法格式是:$redis->lPush(key, value),作用是将value添加到链表key的左边(头部)。
rPush()的语法格式是:$redis->rPush(key, value),作用是将value添加到链表key的右边(尾部)。
1
2
3
2、lPushx()/rPushx()

lPushx 将值value插入到列表key的表头,当且仅当key存在并且是一个列表。
rPushx 将值value插入到列表key的表尾,当且仅当key存在并且是一个列表。
1
2
3
3、lPop()/rPop()

lPop()的语法格式是:$redis->lPop(key),作用是将链表key的左边(头部)元素删除。
rPop()的语法格式是:$redis->rPop(key),作用是将链表key的右边(尾部)元素删除。
1
2
3
4、lSize()

lSize()的语法格式是:$redis->lSize(key),作用是返回链表key中有多少个元素。
1
2
5、lGet()/lIndex()

lGet()的语法格式是:$redis->lGet(key, index),作用是返回链表key的index位置的元素值。
1
2
6、lSet()

lSet()的语法格式是:$redis->lSet(key, index, value),作用是将链表key的index位置的元素值设为value。
1
2
7、lRange()/lGetRange()

lRange()的语法格式是:$redis->lRange(key, start, end),作用是返回链表key中start到end位置间的元素。end为-1时,返回所有元素。例如:
//返回链表lang中的所有元素
print_r($redis->lRange('lang', 0, -1));
1
2
3
4
8、lTrim()/listTrim()

lTrim()的语法格式是:$redis->lTrim(key, start, end),作用是截取链表key中start到end位置间的元素。
1
2
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>
1
2
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'}*/
1
2
3
4
5
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'} */
1
2
3
4
5
6
7
8
9
10
11
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'} */
1
2
3
4
5
6
7
8
9
10
11
4、sIsMember() 判断member元素是否是集合key的成员。

$redis->sIsMember('key1', 'member1'); /* TRUE */
$redis->sIsMember('key1', 'memberX'); /* FALSE */
1
2
3
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'));
1
2
3
4
5
6
7
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 */
1
2
3
4
5
6
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'} */
1
2
3
4
5
6
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"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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>
1
2
3
4
5
6
7
8
9
10
11
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');
1
2
3
4
5
6
7
8
2、hSetNx() 当哈希表中不存在某 key 时,给该 key 设置一个值

返回值:
BOOL: 成功返回 TRUE. 失败返回 FALSE.
$redis->delete('h')
$redis->hSetNx('h', 'key1', 'hello');
$redis->hSetNx('h', 'key1', 'world');
1
2
3
4
5
6
3、hGet() 获得某哈希 key 的值.如果 hash 表不存在或对应的 key 不存在,返回 false

返回值:
STRING ,如果 hash 表不存在或对应的 key 不存在,返回 false
$redis->delete('h')
$redis->hSet('h', 'key1', 'hello');
$redis->hGet('h', 'key1');
1
2
3
4
5
6
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');
1
2
3
4
5
6
7
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');
1
2
3
4
5
6
7
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"
}
顺序是随机的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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"
}
顺序是随机的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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"
}
顺序是随机的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
9、hExists() 检查哈希 key是否存在

返回值:
BOOL: 存在返回 true, 不存在返回 false
$redis->hSet('h', 'a', 'x');
$redis->hExists('h', 'a');
$redis->hExists('h', 'NonExistingKey');
1
2
3
4
5
6
10、hIncrBy() 给哈希表中某 key 增加一个整数值

返回值:
LONG 增加后的值
$redis->delete('h');
$redis->hIncrBy('h', 'x', 2);
$redis->hIncrBy('h', 'x', 1);
1
2
3
4
5
6
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);
1
2
3
4
5
6
7
12、hMSet() 给哈希表设置多个 key 的值

返回值:
BOOL
示例:
$redis->delete('user:1');
$redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
1
2
3
4
5
6
13、hMGet() 获得哈希表中多个 key 的值

$redis->delete('h');
$redis->hSet('h', 'field1', 'value1');
$redis->hSet('h', 'field2', 'value2');
$redis->hmGet('h', array('field1', 'field2'));
--------------------- 
作者:flowersman 
来源:CSDN 
原文:https://blog.csdn.net/a5816138/article/details/81110736 
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/weixin_41647577/article/details/88109223
今日推荐