A Memcache client written in any language can talk directly to Hazelcast cluster. No additional configuration is required. Here is an example: Let's say your cluster's members are:
Members [5] { Member [10.20.17.1:5701] Member [10.20.17.2:5701] Member [10.20.17.4:5701] Member [10.20.17.3:5701] Member [10.20.17.5:5701] }
And you have a PHP application that uses PHP Memcache client to cache things in Hazelcast. All you need to do is have your PHP memcache client connect to one of these members. It doesn't matter which member the client connects to because Hazelcast cluster looks as one giant machine (Single System Image). PHP client code sample:
<?php $memcache = new Memcache; $memcache->connect('10.20.17.1', 5701) or die ("Could not connect"); $memcache->set('key1','value1',0,3600); $get_result = $memcache->get('key1'); //retrieve your data var_dump($get_result); //show it ?>
Notice that memcache client is connecting to
10.20.17.1
and
using port5701
. Java client code sample with SpyMemcached client:
MemcachedClient client = new MemcachedClient(AddrUtil.getAddresses("10.20.17.1:5701 10.20.17.2:5701"));
client.set("key1", 3600, "value1");
System.out.println(client.get("key1"));
If you want your data to be stored in different maps(e.g to utilize per map configuration ), you can do that with a map name prefix as following:
MemcachedClient client = new MemcachedClient(AddrUtil.getAddresses("10.20.17.1:5701 10.20.17.2:5701")); client.set("map1:key1", 3600, "value1"); // store to *hz_memcache_map1 client.set("map2:key1", 3600, "value1"); // store to hz_memcache_map2 System.out.println(client.get("key1")); //get from hz_memcache_map1 System.out.println(client.get("key2")); //get from hz_memcache_map2
hz_memcache prefix is to separate memcache maps from hazelcast maps.
An entry written with a memcache client can be read by another memcache client written in another language.