php - 如何获取带有偏移量和限制的predis数据?

标签 php redis predis

我使用 predis hset 库将我的数据作为编码数据存储在 redis 中。 因此数据以哈希名称存储在数据库之一中,例如 myHash

field = integer
value = encoded data..

例如

1    {'pk_id':1,'name' : 'test1'}
2    {'pk_id':2,'name' : 'test2'}
3    {'pk_id':3,'name' : 'test3'}
...and so on...

大约有 400k+ 行整数字段及其编码数据。 有没有办法用偏移量和限制来提取这些数据? 因为如果我这样做,例如

$predisObj->hgetall('myHash');

它拉出所有内容,浏览器因数据过多而崩溃

最佳答案

predis 与 redis 共享命令列表,因为它是 redis 存储的 php 接口(interface)。因此,您可以使用标准的 redis 命令来满足您的需求:

实现你想要的最好方法是SCAN command 来自 predis documentation :

// === Keyspace iterator based on SCAN ===
echo 'Scan the keyspace matching only our prefixed keys:', PHP_EOL;
foreach (new Iterator\Keyspace($client, 'predis:*') as $key) {
    echo " - $key", PHP_EOL;
}

此命令将返回一个迭代器,因此内存问题将不再重要。

关于php - 如何获取带有偏移量和限制的predis数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51145229/

相关文章:

php - 使用 $_SERVER ['HTTPS' 的未定义索引错误]

javascript - 如果 json_encode 返回已经是 JSON 的 api 数据会发生什么

php - 用 PHP 搜索 MySQL 数据库的最佳方法是什么?

python - 替代 redis.keys(...)

java - MapReduce 从 Redis 读取输入

PHP 代码处理速度更快

spring-mvc - Redis使用keys查询keys,CPU跑高20%以上,我只用单台redis

php - MVC 中的缓存调用去哪里

php - Redis 中的 CRUD 和关系 : How to

tcp - 从服务器读取行时 Redis 错误