Aşağıda spymemcached client kütüphanesi ile memcached server'ına (AWS Elasticache) bağlanma örneği bulunmaktadır :
MemcachedClient c=new MemcachedClient(AddrUtil.getAddresses( "defaultcache.xyx.0001.use1.cache.amazonaws.com:11211" + " defaultcache.xyx.0002.use1.cache.amazonaws.com:11211")); c.set("someKey", 3600, new String("Hello Cache")); Object myObject=c.get("someKey"); System.out.println(myObject);
İki memcached node'u bulunmaktadır bu nedenle iki cache server'ı kullanılmıştır. Cache'e someKey adında bir nesne atılıyor ve daha sonra okunup ekrana basılıyor.
PHP ile Memcached'e veri yazılması ve okunması ile ilgili örnek :
<?php |
$memcache = memcache_connect('localhost', 11211); |
if ($memcache) { |
$memcache->set("str_key", "String to store in memcached"); |
$memcache->set("num_key", 123); |
$object = new StdClass; |
$object->attribute = 'test'; |
$memcache->set("obj_key", $object); |
$array = Array('assoc'=>123, 345, 567); |
$memcache->set("arr_key", $array); |
var_dump($memcache->get('str_key')); |
var_dump($memcache->get('num_key')); |
var_dump($memcache->get('obj_key')); |
} |
else { |
echo "Connection to memcached failed"; |
} |
?> |
Localhost'taki memcached server'ına bağlanılmakta ve str_key , num_key ve obj_key şeklinde farklı nesne tipleri cache'e atılıp geri alınmaktadır.
Aşağıda Memcached'in veritabanı ile nasıl kullanılabileceğini gösteren algoritma gösterilmektedir :
function get_foo(foo_id) foo = memcached_get("foo:" . foo_id) return foo if defined foo foo = fetch_foo_from_database(foo_id) memcached_set("foo:" . foo_id, foo) return foo end
get_foo fonksiyonu parametre olarak foo_id ile bir id değeri almaktadır. İlk önce bu foo_id ile cache'te değerin olup olmadığı kontrol edilir. Eğer cache'te var ise cache'teki değer döndrülür. Eğer cache'te yok ise fetch_foo_from_database fonksiyonu ile değer veritabanından çekilir ve sonra cache'e atılır. Bundan sonraki çağrımlarda veri cache'ten verilecektir. İstenirse bir değer cache'e koyulma sırasında bir expire süresi (kullanım sürsinin dolması) verilebilir. Bu expire zamanı kadar zaman geçince değer cache'ten temizlenir ve bu şekilde cache'teki veri güncel olması sağlanır.
Memcached aşağıdaki gibi çalıştırılmaktadır :
# ./memcached -d -m 2048 -l 192.168.43.47 -p 11211
Bu komutta verilen parametre değerleri aşağıdaki gibidir :
-d : deamon olarak çalış. (deamon : akra planda çalışacak process/uygulama)
-m 2048 : En fazla 2 GB Ram
-l 192.168.43.4 7: Çalıştığı server'ın IP'si
-p 11211: çalıştığı port
Not : Yukarıdaki bilgi için http://ilkinbalkanay.blogspot.com/2008/02/memcached-datml-distributed-nbellek.html sitesinden yararlanılmıştır.