今更ながらお仕事で使うので、自宅のVMware上のCentOS5.xにも入れてみた。
で、試しにメモリサイズを8MB位まで縮小してmemcachedを起動し、以下のようなPHPで8MBを超えてsetさせてみた。
$cache = new Memcache; $key = 'cache_test'; $cache->connect('localhost', 11211); $data = str_repeat('A', 1024); for ($i = 0; $i < 10; $i++) { for ($j = 0; $j < 1024; $j++) { $k = sprintf('cache_test_%d_%d', $i, $j); $r = $cache->set($k, $data, 0, 0); if (false === $r) { echo "breaked at $i, $j\n"; } } } $r = $cache->get('cache_test_0_0'); var_dump($r);
してみると、最後のget()がfalseになる。恐らく8MBを超えたsetが始まった辺りで、古いのから順に消されていったのだろう。
個人的にはmemcached自体よりは、それでソケット接続で使っているlibeventの方が気になった。
とりあえず以上。
コメント