首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Zend Framework3的redis缓存问题

Zend Framework3的redis缓存问题
EN

Stack Overflow用户
提问于 2019-01-22 23:44:57
回答 1查看 768关注 0票数 0

我在我的ZF3应用程序中使用Redis缓存时遇到了问题。

我一直试图从各种网站上拼凑出如何做到这一点,包括SO,我真的不确定我是否走对了这条路。

到目前为止,我所做的是:

在我的global.php配置文件中,我添加了:

代码语言:javascript
复制
...
'redis_cache' => [
    'adapter' => [
        'name' => 'redis',
        'options' => [
            'server' => [
                'host' => '127.0.0.1',
                'port' => 6379,
            ]
        ]
    ],
]
...

在我的控制器里我有

代码语言:javascript
复制
use Zend\Cache\StorageFactory;

然后在我尝试用来测试缓存的方法中

代码语言:javascript
复制
$redis = StorageFactory::factory ($this->config['redis_cache']);


    if ($redis->hasItem ('mykey'))
    {
        $value = $redis->getItem('mykey');
    }

    echo 'value = ' . $value;

这不是在获取价值。但是,如果我在$redis上执行print_r(),我可以看到Redis对象已经创建。

EN

回答 1

Stack Overflow用户

发布于 2019-01-23 21:45:10

如果这对其他人有帮助,这就是我找到的解决方案。

首先,我需要安装zend-serializer,我已经安装了zend-cache。

代码语言:javascript
复制
php composer require zendframework/zend-serializer

然后在/config/autoload/global.php中添加了

代码语言:javascript
复制
'caches' => [
    'RedisCache' => [
        'adapter' => [
            'name'    => Redis::class,
            'options' => [
                'server' => [
                    'host' => '127.0.0.1',
                    'port' => '6379',
                ],
            ],
        ],
        'plugins' => [
            [
                'name' => 'serializer',
                'options' => [
                ],
            ],
        ],
    ],
],

在/config/application.config.php中我添加了

代码语言:javascript
复制
'service_manager' => [
    'factories' => [
        \Zend\Cache\Storage\Adapter\Redis::class => InvokableFactory::class
    ]
]

最后,在我的控制器工厂中,我像这样设置了依赖注入

代码语言:javascript
复制
public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
{
    $cache = $container->get('RedisCache');

    return new IndexController($cache);
}

为了在控制器中使用缓存,我将缓存添加到了构造函数中

代码语言:javascript
复制
public function __construct($cache)
{
    $this->cache = $cache;
}

在一种方法中:

代码语言:javascript
复制
$this->cache->setItem('foo', 'bar');
echo $this->cache->getItem('foo');
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54311807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档