Support of Memcached for Java
CAST supports Memcached via its com.castsoftware.nosqljava extension. Details about the support provided for Java source code is discussed below.
Supported Libraries
| Library | Version | Supported |
|---|---|---|
| spymemcached | Up to: 2.7.1 |
Supported Operations
| Operations | Method Supported |
|---|---|
| Insert | net.spy.memcached.MemcachedClient.set net.spy.memcached.MemcachedClient.add |
| Update | net.spy.memcached.MemcachedClient.incr net.spy.memcached.MemcachedClient.asyncIncr net.spy.memcached.MemcachedClient.decr net.spy.memcached.MemcachedClient.asyncDecr net.spy.memcached.MemcachedClient.replace net.spy.memcached.MemcachedClient.append net.spy.memcached.MemcachedClient.prepend net.spy.memcached.MemcachedClient.getAndLock net.spy.memcached.MemcachedClient.getAndTouch net.spy.memcached.MemcachedClient.asyncGetAndTouch net.spy.memcached.MemcachedClient.asyncGetAndLock |
| Select | net.spy.memcached.MemcachedClient.get net.spy.memcached.MemcachedClient.asyncGet net.spy.memcached.MemcachedClient.getBulk net.spy.memcached.MemcachedClient.asyncGetBulk |
| Delete | net.spy.memcached.MemcachedClient.delete |
Objects
| Icon | Description |
|---|---|
|
Java Memcached Connection |
|
Java Memcached Data |
|
Java Unknown Memcached Connection |
|
Java Unknown Memcached Data |
Links
Links are created for transaction and function point needs:
| Link type | Source and destination of link | Methods Supported |
|---|---|---|
| belongsTo | From Memcached data object to Memcached connection object | - |
| useInsertLink | Between the java Method objects and Memcached data object | Insert |
| useUpdateLink | Between the java Method objects and Memcached data object | Increment Decrement Append Prepend CAS asyncCAS getAndLock getAndTouch asyncGetAndTouch asyncGetAndLock |
| useSelectLink | Between the java Method objects and Memcached data object | Get GetAsync getBulk asyncGetBulk CAS asyncCAS getAndLock getAndTouch asyncGetAndTouch asyncGetAndLock |
| useDeleteLink | Between the java Method objects and Memcached data object | Remove |
What results can you expect?
Some example scenarios are shown below:
Memcached Connection
IP address
In the Memcached class file, when we add the server information by parsing the IP address and provide the port Number:
public class Connection {
public static void main(String[] args) throws IOException {
MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211));
}
}

Hostname
In the Memcached class file, when we add the set of server information by parsing the server address and provide the port Number over the binary connection protocol:
public class Connection {
public static void main(String[] args) throws IOException {
MemcachedClient mcc1 = new MemcachedClient(new BinaryConnectionFactory(), AddrUtil.getAddresses
("server1"));
}
}

Unknown Connection Object
In the Memcached class file, when we pass the server information as a parameter but if passed parameter are unresolved:
public class Connection {
public static void main(String[] args) throws IOException {
InetSocketAddress inet2 = new InetSocketAddress(Connection1.var, 11211);
MemcachedClient mcc = new MemcachedClient(inet2);
}
}

Insert Operation
set command
mcc.set("tp", 900, "memcached").isDone()

add command
mcc.add("data3", 900, "redis").isDone()

Select Operation
get command
mcc.get("data2")

asyncGet command
mcc.asyncGet("data2")

getBulk and asyncGetBulk command
m = mcc1.getBulk(keySet);
vals = mcc1.asyncGetBulk(keySet);

Delete Operation
delete command
mcc.delete("data1").isDone()

Update Operation
replace command
mcc.replace("tp", 900, "redis").isDone()

append and prepend commands
mcc.append(900, "tp", "redis").isDone();
mcc.prepend(900, "tp", "redis").isDone();

Increment command
// incrementing the numeric value of existing key
mcc.incr("tp", 2));
mcc.asyncIncr("tp", 2);

Decrement command
//decrementing the numeric value of existing key
mcc.decr("tp", 1));
mcc.asyncDecr("tp", 1);

Known Limitations
- If the Data name is not resolved in the CRUD API, then the link will be created with an unknown Memcached data object