Prefixing group names in MemcacheEgine

This commit is contained in:
Jose Lorenzo Rodriguez 2012-03-26 23:34:03 -04:30
parent 957322ec82
commit 98b14ff144
2 changed files with 22 additions and 5 deletions

View file

@ -27,6 +27,14 @@
*/
class MemcacheEngine extends CacheEngine {
/**
* Contains the compiled group names
* (prefixed witht the global configuration prefix)
*
* @var array
**/
protected $_compiledGroupNames = array();
/**
* Memcache wrapper.
*
@ -243,9 +251,17 @@ class MemcacheEngine extends CacheEngine {
* @return array
**/
public function groups() {
$groups = $this->_Memcache->get($this->settings['groups']);
if (count($groups) !== count($this->settings['groups'])) {
$groups = $this->_compiledGroupNames;
if (empty($groups)) {
foreach ($this->settings['groups'] as $group) {
$groups[] = $this->settings['prefix'] . $group;
}
$this->_compiledGroupNames = $groups;
}
$groups = $this->_Memcache->get($groups);
if (count($groups) !== count($this->settings['groups'])) {
foreach ($this->_compiledGroupNames as $group) {
if (!isset($groups[$group])) {
$this->_Memcache->set($group, 1, false, 0);
$groups[$group] = 1;
@ -269,6 +285,6 @@ class MemcacheEngine extends CacheEngine {
* @return boolean success
**/
public function clearGroup($group) {
return (bool) $this->_Memcache->increment($group);
return (bool) $this->_Memcache->increment($this->settings['prefix'] . $group);
}
}

View file

@ -413,12 +413,13 @@ class MemcacheEngineTest extends CakeTestCase {
Cache::config('memcache_groups', array(
'engine' => 'Memcache',
'duration' => 3600,
'groups' => array('group_a', 'group_b')
'groups' => array('group_a', 'group_b'),
'prefix' => 'test_'
));
Cache::config('memcache_helper', array(
'engine' => 'Memcache',
'duration' => 3600,
'prefix' => ''
'prefix' => 'test_'
));
$this->assertTrue(Cache::write('test_groups', 'value', 'memcache_groups'));
$this->assertEquals('value', Cache::read('test_groups', 'memcache_groups'));