laravel 使用zAdd命令的变体来批量插入多个元素

文章介绍了如何在PHP中使用Redis进行ZSET集合的批量插入,包括使用`rawCommand`执行ZADD命令以及利用事务处理多个ZADD操作。示例代码展示了如何构建参数并应用`array_map`和`array_merge`函数。
摘要由CSDN通过智能技术生成
 $rdb = new \Redis();
            $rdb->pconnect(env('REDIS_HOST'), env('REDIS_PORT'), 60);
            $rdb->auth(env('REDIS_PASSWORD'));
            $rdb->select(1);

            $data = [
                'member1' => 10,
                'member2' => 20,
                'member3' => 30,
            ];

            $res=$rdb->rawCommand('ZADD', 'myzset', ...array_merge(...array_map(function ($member, $score) {
                return [$score, $member];
            }, array_keys($data), array_values($data))));
            dd($res);

 

csdn 上也有ChatGPT功能了,哈哈哈

方法一:可以使用zAdd命令的变体来批量插入:

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

$data = [
    'member1' => 10,
    'member2' => 20,
    'member3' => 30,
];

$redis->rawCommand('ZADD', 'myzset', ...array_merge(...array_map(function ($member, $score) {
    return [$score, $member];
}, array_keys($data), array_values($data))));

这里,我们使用了rawCommand方法来执行ZADD命令,因为它的参数需要动态地构建。我们使用了array_map函数来将$data数组中的成员和分数转换为ZADD命令所需的参数形式,然后使用array_merge将这些参数合并为一个扁平的数组,最后将其展开为rawCommand的参数列表。

方法二、使用事务

           $rdb = new \Redis();
            $rdb->pconnect(env('REDIS_HOST'), env('REDIS_PORT'), 60);
            $rdb->auth(env('REDIS_PASSWORD'));
            $rdb->select(1);

            $rdb->watch('Myset22');
            $rdb->multi();
            foreach ($scoreValues as $key => $value) {
                $res22 = $rdb->zAdd('Myset22', $value, $key);
            }
            $re31=$rdb->exec();
            dd($res22,$re31);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lxw1844912514

你的打赏就是对我最大的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值