几件事.
你应该检查false
,不''
使用===
在从返回值get()
.php的类型转换可以避免你在这里做到这一点,但是恕我直言,最好明确你要从缓存查找中寻找的值
你在空检查和set()
数据库结果之间有一个竞争条件.来自http://code.google.com/p/memcached/wiki/FAQ#Race_conditions_and_stale_data:
请记住,检查memcached,获取SQL以及存储到memcached中的过程根本不是原子的!
这种情况的症状是密钥到期时DB CPU中的峰值,并且(在高容量站点上)一堆请求同时尝试命中数据库并缓存该值.
您可以使用add()
而不是使用来解决它get
.在这里查看更具体的示例.