<?php ################# memcached ################################################### $k=0; $t_time=0; echo "Benchmark memcached : "; $memcached = new Memcached; $memcached->addServer("127.0.0.1", 11211)or die ("Cannot connect"); $original_string = 'abcdefghijklmnopqrstuvwxyz'; for ($i=0;$i<=10000;$i++){ $random_string = get_random_string($original_string, 10); $random_string2 = get_random_string($original_string, 10); $a1[$i]=$random_string; $a2[$random_string]=$random_string2; } $tstart=timer_start(); for ($i=0;$i<=10000;$i++){ $memcached->set($a1[$i], $a2[$a1[$i]],20) or die ("Cannot save data"); } $t_time=timer_end($tstart); echo "Total Set time: ".$t_time."
"; for ($j=0;$j<10;$j++){ $tstart=timer_start(); for ($i=0;$i<=10000;$i++){ $value = $memcached->get($a1[$i]); } $t_time=timer_end($tstart); echo "Loop $j (Get) time: ".$t_time."
"; $k=$k+$t_time; } echo "Total 10 loop Get time $k
"; ################# memcache ################################################### $k=0; $t_time=0; echo "Benchmark memcache : "; $memcache = new Memcache; $memcache->connect('127.0.0.1', 11211) or die ("Cannot connect"); $original_string = 'abcdefghijklmnopqrstuvwxyz'; for ($i=0;$i<=10000;$i++){ $random_string = get_random_string($original_string, 10); $random_string2 = get_random_string($original_string, 10); $a1[$i]=$random_string; $a2[$random_string]=$random_string2; } $tstart=timer_start(); for ($i=0;$i<=10000;$i++){ $memcache->set($a1[$i], $a2[$a1[$i]], false, 20) or die ("Cannot save data"); } $t_time=timer_end($tstart); echo "Total Set time: ".$t_time."
"; for ($j=0;$j<10;$j++){ $tstart=timer_start(); for ($i=0;$i<=10000;$i++){ $value = $memcache->get($a1[$i]); } $t_time=timer_end($tstart); echo "Loop $j (Get) time: ".$t_time."
"; $k=$k+$t_time; } echo "Total 10 loop Get time $k
"; ################# redis ################################################### $k=0; $t_time=0; echo "Benchmark redis : "; $redis = new Redis(); $redis->connect('127.0.0.1', 6379); $original_string = 'abcdefghijklmnopqrstuvwxyz'; for ($i=0;$i<=10000;$i++){ $random_string = get_random_string($original_string, 10); $random_string2 = get_random_string($original_string, 10); $a1[$i]=$random_string; $a2[$random_string]=$random_string2; } $tstart=timer_start(); for ($i=0;$i<=10000;$i++){ $redis -> set($a1[$i],$a2[$a1[$i]]); } $t_time=timer_end($tstart); echo "Total Set time: ".$t_time."
"; for ($j=0;$j<10;$j++){ $tstart=timer_start(); for ($i=0;$i<=10000;$i++){ $value=$redis -> get($a1[$i]); } $t_time=timer_end($tstart); echo "Loop $j (Get) time: ".$t_time."
"; $k=$k+$t_time; } echo "Total 10 loop Get time $k
"; function timer_start() { $time = microtime(); $time = explode(" ", $time); $time = $time[1] + $time[0]; return $time; } function timer_end($start) { $time = microtime(); $time = explode(" ", $time); $time = $time[1] + $time[0]; return $time-$start; } function get_random_string($valid_chars, $length) { // start with an empty random string $random_string = ""; // count the number of chars in the valid chars string so we know how many choices we have $num_valid_chars = strlen($valid_chars); // repeat the steps until we've created a string of the right length for ($i = 0; $i < $length; $i++) { // pick a random number from 1 up to the number of valid chars $random_pick = mt_rand(1, $num_valid_chars); // take the random character out of the string of valid chars // subtract 1 from $random_pick because strings are indexed starting at 0, and we started picking at 1 $random_char = $valid_chars[$random_pick-1]; // add the randomly-chosen char onto the end of our string so far $random_string .= $random_char; } // return our finished random string return $random_string; } ?>
Benchmark memcached : Total Set time: 0.69209885597229 Loop 0 (Get) time: 0.68401622772217 Loop 1 (Get) time: 0.67029213905334 Loop 2 (Get) time: 0.77216291427612 Loop 3 (Get) time: 0.68823003768921 Loop 4 (Get) time: 0.68713402748108 Loop 5 (Get) time: 0.66251420974731 Loop 6 (Get) time: 0.66882991790771 Loop 7 (Get) time: 0.63542795181274 Loop 8 (Get) time: 0.66616487503052 Loop 9 (Get) time: 0.66425609588623 Total 10 loop Get time 6.7990283966064 Benchmark memcache : Total Set time: 0.72946310043335 Loop 0 (Get) time: 0.55730509757996 Loop 1 (Get) time: 0.46489191055298 Loop 2 (Get) time: 0.68988108634949 Loop 3 (Get) time: 0.73450708389282 Loop 4 (Get) time: 0.68325591087341 Loop 5 (Get) time: 0.67392992973328 Loop 6 (Get) time: 0.7195930480957 Loop 7 (Get) time: 0.74770784378052 Loop 8 (Get) time: 0.70041298866272 Loop 9 (Get) time: 0.70169019699097 Total 10 loop Get time 6.6731750965118 Benchmark redis : Total Set time: 0.69859886169434 Loop 0 (Get) time: 0.69667816162109 Loop 1 (Get) time: 0.65093517303467 Loop 2 (Get) time: 0.68474006652832 Loop 3 (Get) time: 0.7402458190918 Loop 4 (Get) time: 0.6503758430481 Loop 5 (Get) time: 0.66205310821533 Loop 6 (Get) time: 0.70370101928711 Loop 7 (Get) time: 0.646409034729 Loop 8 (Get) time: 0.66896295547485 Loop 9 (Get) time: 0.67996406555176 Total 10 loop Get time 6.784065246582The results shows for simple Set and Get,memcached is quite comparable to redis. And the result is not repeatable. Different results occurrs at different run. For other functions,more extensive tests/benchmarks have to perform on both.