Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

Spymemcached: replace data

Following step-by-step procedure explains how to add data to cache.

Step 1: Get Memcachedclient instance. It is a client to a memcached server. Following statement is used to define MemcachedClient.

MemcachedClient client = new MemcachedClient(new InetSocketAddress(hostname, portNum));

Step 2: Once you got the MemcachedClient instance, you can able to write data to server and read data from server. Spymemcached provides following method to replace data in server.

OperationFuture replace(String key, int exp, Object o)
Above method replace an object in the cache, if it exists. ‘exp’ is the expiry time of the object in seconds, this number of seconds may not exceed 60*60*24*30 (number of seconds in 30 days).

Step 3: After that, you can call the get method of MemcachedClient instance to get the data associated with given key.

public Object get(String key)
Above method return an object associated with given key. If the key don’t exist in memcached server, then it return null.


Following is the complete working application.
package com.sampe.cache;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.util.List;
import java.util.Objects;
import java.util.Optional;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import net.spy.memcached.MemcachedClient;

/**
* Utility class to create client.
*
* @author harikrishna_gurram
*
*/
public class CacheClientUtil {

private static MemcachedClient client = null;
private static Logger logger = LogManager.getLogger();

public static OptionalMemcachedClient> getClient(InetSocketAddress addr) {
if (Objects.isNull(addr)) {
logger.error("getClient: addr shouldn't be null");
return Optional.empty();
}

try {
client = new MemcachedClient(addr);
} catch (IOException e) {
logger.error(e);
return Optional.empty();
}

return Optional.of(client);
}

public static OptionalMemcachedClient> getClient(ListInetSocketAddress> addrs) {
if (Objects.isNull(addrs)) {
logger.error("getClient: addrs shouldn't be null");
return Optional.empty();
}

try {
client = new MemcachedClient(addrs);
} catch (IOException e) {
logger.error(e);
return Optional.empty();
}

return Optional.of(client);
}

public static void shutdownClient(MemcachedClient client) {
if (Objects.isNull(client)) {
logger.error("shutdownClient: client object is already closed");
return;
}

client.shutdown();
}
}

package com.sampe.cache;

import java.net.InetSocketAddress;
import java.util.Optional;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import net.spy.memcached.MemcachedClient;

public class Test {
private static Logger logger = LogManager.getLogger();

public static void main(String args[]) throws InterruptedException, ExecutionException {
/* Get MemcachedClient */
InetSocketAddress address = new InetSocketAddress("127.0.0.1", 11211);

OptionalMemcachedClient> client = CacheClientUtil.getClient(address);

if (!client.isPresent()) {
logger.error("Unable to create client instance");
return;
}

MemcachedClient memClient = client.get();

/* Set some data */
String data = "{\"org\":[{\"name\":\"Honeywell\",\"yrsOfExperience\":2.2},{\"name\":\"IBM\",\"yrsOfExperience\":1.8}],\"firstName\":\"Krishna\",\"lastName\":\"Hari\",\"salary\":80000.0}\r\n";

FutureBoolean> future = memClient.set("12345", 900, data);

System.out.println("set status:" + future.get());

System.out.println("Value of the key 12345 is " + memClient.get("12345"));

/* Replacing data */
future = memClient.replace("12345", 900, "Hari Krishna");

System.out.println("set status:" + future.get());

System.out.println("Value of the key 12345 is " + memClient.get("12345"));

CacheClientUtil.shutdownClient(memClient);

}
}


Output
set status:true
Value of the key 12345 is {"org":[{"name":"Honeywell","yrsOfExperience":2.2},{"name":"IBM","yrsOfExperience":1.8}],"firstName":"Krishna","lastName":"Hari","salary":80000.0}

set status:true
Value of the key 12345 is Hari Krishna




Previous                                                 Next                                                 Home


This post first appeared on Java Tutorial : Blog To Learn Java Programming, please read the originial post: here

Share the post

Spymemcached: replace data

×

Subscribe to Java Tutorial : Blog To Learn Java Programming

Get updates delivered right to your inbox!

Thank you for your subscription

×