首页 > 编程知识 正文

php向redis list一次性lPush多个值

时间:2023-05-03 21:49:15 阅读:182940 作者:3564

php redis扩展没有介绍向list中一次性push多个值的用法,但其实lPush和rPush是支持push多个值的,文档中有介绍

lPush - Prepend one or multiple values to a list

rPush - Append one or multiple values to a list

 用法也很简单,看示例代码:

<?php$redis = new Redis();$redis->connect('127.0.0.1', 6379);$redis->del('foo');var_dump($redis->lPush('foo', 'aaaa', 'bbbb', 'cccc', 'dddd'));print_r($redis->lRange('foo', 0, -1));

运行结果:

[root@localhost php]# php lpush.php int(4)Array( [0] => dddd [1] => cccc [2] => bbbb [3] => aaaa)[root@localhost php]#

但更多时候我们是希望lPush一个数组,但lPush不支持直接传入数组,但我们可以使用以下两种方式来实现:

利用 call_user_func_array 可以使用数组来当参数列表的特性:<?php$redis = new Redis();$redis->connect('127.0.0.1', 6379);$redis->del('foo');var_dump(call_user_func_array([$redis, 'lPush'], ['foo', '1111', '2222', '3333', '4444']));print_r($redis->lRange('foo', 0, -1));

执行结果:

[root@localhost php]# php lpush.php int(4)Array( [0] => 4444 [1] => 3333 [2] => 2222 [3] => 1111)[root@localhost php]#

 

2 . 使用 php5.6+ 支持的可变参数,在数组前加 '...' 实现把数组当作函数的参数列表

You can also use ... when calling functions to unpack an array or Traversable variable or literal into the argument list:

 代码示例:

<?php$redis = new Redis();$redis->connect('127.0.0.1', 6379);$redis->del('foo');var_dump($redis->lPush('foo', ...['AAAA111', 'BBBB222', 'CCCC333', 'DDDD444']));print_r($redis->lRange('foo', 0, -1));

运行结果:

[root@localhost php]# php lpush.php int(4)Array( [0] => DDDD444 [1] => CCCC333 [2] => BBBB222 [3] => AAAA111)[root@localhost php]#

一般推荐第二种方式,简单明了

That‘s all

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。