I was using aspymemcached client to connect to my membase server. code look like :
public static MemcachedClient MemcachedClient(String bucketName){
URI server1 = new URI("http://192.168.100.111:8091/pools");
URI server2 = new URI("http://127.0.0.1:8091/pools");
ArrayList<URI> serverList = new ArrayList<URI>();
serverList.add(server1);
serverList.add(server2);
return new MemcachedClient(serverList, bucketName, "");
}
For putting object in cache :
public static void makeMembaseCacheEntry(final String key, final int expiryTime, final Object value, final String bucketName) {
MemcachedClient client = getMembaseClient(bucketName);
if (client != null) {
client.set(key, expiryTime, value);
}
For getting object from cache :
public static Object getMembaseCacheEntry(String key) {
Object value = null;
try {
MemcachedClient client = getMembaseClient(bucketName);
if (client != null) {
value = client.get(key);
}
} catch (Exception e) {
}
return value;
}
Now I planning to upgrade membase server to couchbase server, hence I have to use couchbase client java API (Ref : http://docs.couchbase.com/developer/java-2.1/java-intro.html). In cousebase client all operation performed on JsonObject ref :
http://docs.couchbase.com/developer/java-2.0/documents-basics.html
So how can I migrate above two methods to couchbase client
if what you are storing is a serialized
Object, the Java SDK offers aSerializableDocumenttype (see https://developer.couchbase.com/documentation/server/4.6/sdk/java/document-operations.html#story-h2-10).It is compatible with Object stored by the 1.x client built on top of spymemcached, but it uses flags metadata and I'm not sure how migrating from Memcached to Couchbase would influence these (so you might have to write some migrating code at some point).
Compared to Spymemcached, the Couchbase SDK 2.x has an API that is closer to the Couchbase Cluster organization: you start connecting to a
Cluster, on which you open aBucket, on which you can perform key/value operations likeget,update,insert,upsert.In your first snippet, you'll only need the IPs of at least one couchbase node. Out of that you'll get a
Cluster(usingCouchbaseCluster.create(...)). Then open theBucketusingcluster.openBucket(bucketName). That should be pretty much like:Note
ClusterandBucketare thread-safe and should be used as singletons rather than reopened on each call like you do inmakeMembaseCacheEntryandgetMembaseCacheEntry...For make you'll need to wrap your
value:(use
upsertif you want to create-or-replace, see the docs for other types of kv operations)For get, you'll need to tell the bucket it deserializes an Object: