1

我已经使用 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 的目的......

想法和想法?

4

0 回答 0