1)
我明白我可以称之为
$memcache_obj = memcache_connect('memcache_host', 11211);
在我的网站的头文件中,对不使用memcache的页面没有影响 但是这个呢?
$memcache->connect('127.0.0.1', 11211);
是否应该在页面到页面的基础上调用它?
2)
如果服务器没有足够的内存来写新的缓存并且memcache尝试存储缓存怎么办?
第3)
我知道钥匙可以有30天的使用寿命,
有没有办法将所有密钥刷新内存,对测试阶段特别有用?
4)
另外这个代码,第一个变量是连接,所以例如如果我在一个页面上有5个部分,从memcache添加/更新/删除,我是否需要每次运行此连接,或者是否可以连接1次并完成所有操作每页加载?
memcache_set($memcache_obj, 'var_key', 'some variable', 0, 30)
5) 是否有一个函数或任何东西可以显示有多少内存可用并在php页面上使用?
答案 0 :(得分:8)
是的,在尝试获取,删除等之前不会进行任何网络调用,因此在需要时分配对象不会有任何损害。 (编辑:我在想这里的“memcached”扩展,事实证明“memcache”扩展确实打开了与memcache服务器的连接,虽然命中率最多可以忽略不计)
memcache将删除最少使用的项目以尝试为新对象腾出空间
$ memcache_obj->冲洗();
每次脚本运行时只需连接一次,最简单的方法是将连接放在页面顶部或类构造函数中
$ memcache_obj-> getStats()http://www.php.net/manual/en/function.memcache-getstats.php
答案 1 :(得分:3)
杰森很好地回答了你的问题,但我想我会添加一些注意事项:
2)请注意,如果您尝试将超过1MB(默认值)存储到密钥中,则memcache扩展将返回FALSE值。如果由于任何原因无法写入密钥,它也将返回FALSE。
3)密钥可以具有> 30天的寿命(TTL)。只需将TTL添加到当前时间并将其用作TTL即可。使用您的示例调用,它可能是这样的(编码为清晰):
$ttl = 60*60*24*60; // 60 days
$newTTL = time()+$ttl;
memcache_set($memcache_obj, 'cache_key', 'some data', 0, $newTTL)
5)如果你在谈论PHP内存,那么memory_get_usage()
将为你提供你想要的东西。 Memcache内存有点难度,但使用getStats()
调用会让你朝着正确的方向前进。
答案 2 :(得分:1)