gpt4 book ai didi

zend-framework2 - Zf2 Redis Adapter,getItems 使用通配符

转载 作者:可可西里 更新时间:2023-11-01 11:40:10 24 4
gpt4 key购买 nike

我正在迈出在 ZF2 下使用 Redis 的第一步。我想知道是否有一种方法可以按模式检索 key 。

例如:在使用诸如“stackOverflow_”.time() 之类的键设置多个值后,我想稍后检索与“stackOverflow_”模式匹配的所有键。

尝试在\vendor\zendframework\zendframework\library\Zend\Cache\Storage\Adapter\AbstractAdapter.php 中使用带通配符的 getItems(array $keys)

$redisKeyPattern = 'stackOverflow_'; 
$redis = $this->getServiceLocator()->get('Redis');
$values = $redis->getItems(array($redisKeyPattern.'*'));

没有成功。

有什么想法吗?


更新:多谢你们。我最终复制了 Redis 适配器并添加了我自己的功能,该功能利用了 Redis 扩展中的“键”功能:

 public function getItemsByKeyPattern($pattern) {

$keys = $this->getRedisResource()->keys('*'.$pattern.'*');
if(empty($keys)) return null;

foreach($keys as &$key){
$key = explode(':', $key)[1];
}

$items = parent::getItems($keys);
return $items;
}

它对我有用:)

最佳答案

遗憾的是,没有方法可以返回带有通配符的项目,redis 也不支持存储项目的命名空间。

你需要定义你想要接收的每个项目,也许你应该看看这样的实现

$receiveRedisKeys = [];
foreach($resultSet as $result)
{
$receiveRedisKeys[] = 'predefined_prefix_' . $result->getId();
}

$redisCacheResultSet = $redis->getItems($receiveRedisKeys);

我知道有人在 github 上创建了一个新的存储库,他在其中修改了 redis 以允许 namespaces 但这需要您自己从源代码构建 redis 二进制文件。这会导致您无法再通过 apt-get

更新 redis 版本

关于zend-framework2 - Zf2 Redis Adapter,getItems 使用通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25054682/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com