我一直在使用Memcached(AWS Elasticache)。
就在今天,我遇到了以前没有经历过的情况。通常会调用数据库以获取国家/地区列表,并将其存储在memcached中。然而这次数据没有正确存储(我不确定为什么它已经工作好几个月了)但是在查看了代码和&尝试基于代码的修复(假设站点代码出现问题)缓存的反弹修复了问题。注意:前一天我已经弹回了memcached,所以可能没有正确预热等等。
我的问题是 - 目前我检查memcached密钥是否存在以及是否存在我使用数据。仅当memcached密钥不存在时,我才查询数据库并填充密钥。我是否还需要以某种方式验证数据,以便我可以确定它没有损坏,或者这应该被视为一个不常见的问题(它是)并留在那里。
另外我相信memcached密钥中没有任何数据,所以可能只是检查密钥是否为空就足够了......
以下代码:
public $countryList = array();
// Countries, Country Code, Zip Enabled --- 'generic::countryList::'.$_SESSION['language']'
public function countryList() {
$elasticache = new elasticache();
if(!$this->countryList = $elasticache->memcached->get('generic::countryList::'.$_SESSION['language'])) {
--- this is where the database query code is
$elasticache->memcached->set('generic::countryList::'.$_SESSION['language'], $this->countryList, 2592000);
}
}
我想确认密钥中的数据是否正确需要数据库调用,因此会破坏memcached的目的....
思想&想法?