没有不值得去解决的问题,也没有不值得去学习的技术!

Laravel 9 Redis Facade hset Does Not Allow Multiple Field/Value Pairs

Error during execution: local.ERROR: ERR wrong number of arguments for 'hset' command

1. Attempted to pass multiple field/value pairs using the Redis facade’s hset method. The code implementation is as follows:

PHP

$cache_list_key = sprintf('order:batch:%s_list', $batch_id);
Redis::hset($cache_list_key, 'key', $key, 'result', $result, 'message', $message);
Redis::expire($cache_list_key, 86400);

2. An error occurred during execution: local.ERROR: ERR wrong number of arguments for ‘hset’ command. See Figure 1.

Error during execution: local.ERROR: ERR wrong number of arguments for 'hset' command
Figure 1
Plaintext

[2024-03-28 08:09:35] local.ERROR: ERR wrong number of arguments for 'hset' command {"exception":"[object] (Predis\\Response\\ServerException(code: 0): ERR wrong number of arguments for 'hset' command at E:\\wwwroot\\object\\vendor\\predis\\predis\\src\\Client.php:384)
[stacktrace]

3. However, since Redis 4.0, HSET can set one or more field/value pairs at a time. Starting from Redis 4.0.0, HMSET is deprecated; use HSET instead.

4. Reference: Redis facade hset doesn’t allow passing multiple fields/values. I ultimately decided to keep using HSET, passing only one field at a time and executing it multiple times. The code implementation is as follows:

PHP

$cache_list_key = sprintf('order:batch:%s_list', $batch_id);
Redis::hset($cache_list_key, 'key', $key);
Redis::hset($cache_list_key, 'result', $result);
Redis::hset($cache_list_key, 'message', $message);
Redis::expire($cache_list_key, 86400);

5. No more errors occurred. I checked the structure in Redis, and it matches expectations. See Figure 2.

No more errors occurred; checking the structure in Redis matches expectations
Figure 2

关于作者 · 持续学习与技术实践

我是一名拥有 15 年以上开发经验的技术从业者,自 2013 年起持续运营个人技术博客,记录工作与个人项目中遇到的真实问题,以及解决问题过程中的探索、实践和思考。

除了技术写作,我也在持续开发和维护自己的独立项目,探索新技术和新工具在实际场景中的应用。我始终相信,没有不值得去解决的问题,也没有不值得去学习的技术。

如果这篇文章对你有所帮助,欢迎浏览博客中的其他文章,也欢迎交流技术经验与想法。

关于我  ·  GitHub  ·  邮件联系