jt_*_*lan 5 php caching redis predis
我刚开始使用Predis进行Redis迁移,但是我很难让zadd函数与数组一起使用。
此代码有效:
foreach ($userIndexArr as $row) {
$usernames[] = 0;
$usernames[] = $row['username'];
$result = $this->cache->zadd('@person', 0, $row['username']);
}
Run Code Online (Sandbox Code Playgroud)
这不是:
foreach ($userIndexArr as $row) {
$usernames[] = 0;
$usernames[] = $row['username'];
}
try {
$result = $this->cache->zadd('@person', $usernames);
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
Run Code Online (Sandbox Code Playgroud)
并且不会引发任何错误。任何帮助深表感谢!
-J
我尝试过这个问题,如果您遇到这个问题,以下示例肯定会有所帮助(遵循redis.io 文档示例):
$predis->zadd( 'myset', [ "one" => 1, "uno" => 1, "two" => 2, "three" => 3 ] )
Run Code Online (Sandbox Code Playgroud)
这将产生与 redis 示例相同的排序集:
ZADD myzset 1 "one"
ZADD myzset 1 "uno"
ZADD myzset 2 "two" 3 "three"
Run Code Online (Sandbox Code Playgroud)
其中棘手的部分是,如果您想在 Redis 中的一行中执行此操作,您可以将分数放在第一位,如下所示:
ZADD myzset 1 "one" 1 "uno" 2 "two" 3 "three"
Run Code Online (Sandbox Code Playgroud)
在 Predis 中,这也可以工作:
$predis->zadd( 'myset', 1, "one", 1, "uno", 2, "two", 3, "three" );
Run Code Online (Sandbox Code Playgroud)
根据此来源,请尝试以下操作:https://github.com/nrk/predis/blob/v1.0/src/Command/ZSetAdd.php
foreach ($userIndexArr as $row) {
$usernames[$row['username']] = 0;
}
try {
$result = $this->cache->zadd('@person', $usernames);
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
Run Code Online (Sandbox Code Playgroud)
但未经测试。但我认为只要你使用 v1.0 =)
| 归档时间: |
|
| 查看次数: |
4297 次 |
| 最近记录: |