在Zend Framework 2中使用Memcached设置ttl和命名空间

Rol*_*and 2 installation memcached ttl zend-framework2

据我所知,这似乎是设置Memcached和设置TTL和命名空间的方法,但它们对缓存没有影响.密钥没有命名空间的前缀,过期是无限的.

    $MemcachedOptions = new \Zend\Cache\Storage\Adapter\MemcachedOptions();
    $MemcachedResourceManager = new \Zend\Cache\Storage\Adapter\MemcachedResourceManager(1, new \Zend\Cache\Storage\Adapter\Memcached());
    $MemcachedResourceManager->addServer(1, array('localhost', 11211));
    $MemcachedOptions->setResourceManager($MemcachedResourceManager);

    $MemcachedOptions->setNamespace('FooBar_');
    $MemcachedOptions->setTtl(10);

    $cache = $MemcachedOptions->getResourceManager()->getResource(1);
    $cache->set('foobar_key','I am in cache');
Run Code Online (Sandbox Code Playgroud)

有没有人有任何提示,线索?任何帮助将非常感激.

mab*_*lin 9

MemcachedResourceManager当您尝试使用它时,工作会有所不同.

您应该像下面这样初始化它:

// init a memcached resource manager with one native memcached resource
// using resource id "1"
$MemcachedResourceManager = new \Zend\Cache\Storage\Adapter\MemcachedResourceManager();
$MemcachedResourceManager->addServer('1', array('localhost', 11211));

// init a memcached storage adapter
// using the native memcached resource of id "1"
// configure it with a ttl and a namespace
$cache = \Zend\Cache\StorageFactory::adapterFactory('memcached', array(
    'resource_manager' => $MemcachedResourceManager,
    'resource_id'      => '1',
    'namespace'        => 'FooBar_',
    'ttl'              => 10,
));

// or
$memcachedAdapterOptions = new \Zend\Cache\Storage\Adapter\MemcachedOptions(array(
    'resource_manager' => $MemcachedResourceManager,
    'resource_id'      => '1',
    'namespace'        => 'FooBar_',
    'ttl'              => 10,
));
$cache = new \Zend\Cache\Storage\Adapter\Memcached($memcachedAdapterOptions);
Run Code Online (Sandbox Code Playgroud)

这些类如何协同工作:

最重要的类是Zend\Cache\Storage\Adapter\Memcached它是Memcached在上下文中使用的本机实例的包装器Zend\Cache\StorageInterface.

此存储适配器具有许多定义为的选项Zend\Cache\Storage\Adapter\MemcachedOptions.

由于ZF2中的缓存存储适配器旨在处理要存储的一种类型的项目,因此需要Zend\Cache\Storage\Adapter\Memcached针对不同类型项目的不同实例.但是你不会使用不同的连接到memcached(本机Memcached类的不同实例)服务器 - 这是开始Zend\Cache\Storage\Adapter\MemcachedResourceManager发挥作用.

将使用其Zend\Cache\Storage\Adapter\MemcachedResourceManager句柄本机实例.MemcachedZend\Cache\Storage\Adapter\Memcached