Memcached is an open source, high-performance, distributed memory caching system intended to speed up dynamic web applications by reducing the database load. It is a key-value dictionary of strings, objects, etc., stored in the memory, resulting from database calls, API calls, or page rendering.
Memcached was developed by Brad Fitzpatrick for LiveJournal in 2003. However, it is now being used by Netlog, Facebook, Flickr, Wikipedia, Twitter, and YouTube among others.
The key features of Memcached are as follows −
It is open source.
Memcached server is a big hash table.
It significantly reduces the database load
It is perfectly efficient for websites with high database load.
It is distributed under Berkeley Software Distribution (BSD) license.
It is a client-server application over TCP or UDP.
a persistent data store
a database
application-specific
a large object cache
fault-tolerant or highly available
To install Memcached on Ubuntu, go to terminal and type the following commands −
$sudo apt-get update $sudo apt-get install memcached
To confirm if Memcached is installed or not, you need to run the command given below. This command shows that Memcached is running on the default port 11211.
$ps aux | grep memcached
To run Memcached server on a different port, execute the command given below. This command starts the server on the TCP port 11111 and listens on the UDP port 11111 as a daemon process.
$memcached -p 11111 -U 11111 -u user -d
You can run multiple instances of Memcached server through a single installation.
To use Memcached in your Java program, you need to download spymemcached-2.10.3.jar and setup this jar into the classpath.
To connect to a Memcached server, you need to use the telnet command on HOST and PORT names.
The basic syntax of Memcached telnet command is as shown below −
$telnet HOST PORT
Here, HOST and PORT are machine IP and port number respectively, on which the Memcached server is executing.
The following example shows how to connect to a Memcached server and execute a simple set and get command. Assume that the Memcached server is running on host 127.0.0.1 and port 11211.
$telnet 127.0.0.1 11211 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. // now store some data and get it from memcached server set howcodex 0 900 9 memcached STORED get howcodex VALUE howcodex 0 9 memcached END
To connect the Memcached server from your java program, you need to add the Memcached jar into your classpath as shown in the previous chapter. Assume that the Memcached server is running on host 127.0.0.1 and port 11211. −
import net.spy.memcached.MemcachedClient; public class MemcachedJava { public static void main(String[] args) { // Connecting to Memcached server on localhost MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211)); System.out.println("Connection to server sucessfully"); //not set data into memcached server System.out.println("set status:"+mcc.set("howcodex", 900, "memcached").done); //Get value from cache System.out.println("Get from Cache:"+mcc.get("howcodex")); } }
On compiling and executing the program, you get to see the following output −
Connection to server successfully set status:true Get from Cache:memcached.
The terminal may show few informational messages too, those can be ignored.
Memcached set command is used to set a new value to a new or existing key.
The basic syntax of Memcached set command is as shown below −
set key flags exptime bytes [noreply] value
The keywords in the syntax are as described below −
key − It is the name of the key by which data is stored and retrieved from Memcached.
flags − It is the 32-bit unsigned integer that the server stores with the data provided by the user, and returns along with the data when the item is retrieved.
exptime − It is the expiration time in seconds. 0 means no delay. If exptime is more than 30 days, Memcached uses it as UNIX timestamp for expiration.
bytes − It is the number of bytes in the data block that needs to be stored. This is the length of the data that needs to be stored in Memcached.
noreply (optional) - It is a parameter that informs the server not to send any reply.
value − It is the data that needs to be stored. The data needs to be passed on the new line after executing the command with the above options.
The output of the command is as shown below −
STORED
STORED indicates success.
ERROR indicates incorrect syntax or error while saving data.
In the following example, we use howcodex as the key and set value Memcached in it with an expiration time of 900 seconds.
set howcodex 0 900 9 memcached STORED get howcodex VALUE howcodex 0 9 Memcached END
To set a key in Memcached server, you need to use Memcached set method.
import net.spy.memcached.MemcachedClient; public class MemcachedJava { public static void main(String[] args) { // Connecting to Memcached server on localhost MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211)); System.out.println("Connection to server sucessfully"); System.out.println("set status:"+mcc.set("howcodex", 900, "memcached").done); // Get value from cache System.out.println("Get from Cache:"+mcc.get("howcodex")); } }
On compiling and executing the program, you get to see the following output −
Connection to server successfully set status:true Get from Cache:memcached
Memcached add command is used to set a value to a new key. If the key already exists, then it gives the output NOT_STORED.
The basic syntax of Memcached add command is as shown below −
add key flags exptime bytes [noreply] value
The keywords in the syntax are as described below −
key − It is the name of the key by which data is stored and retrieved from Memcached.
flags − It is the 32-bit unsigned integer that the server stores with the data provided by the user, and returns along with the data when the item is retrieved.
exptime − It is the expiration time in seconds. 0 means no delay. If exptime is more than 30 days, Memcached uses it as a UNIX timestamp for expiration.
bytes − It is the number of bytes in the data block that needs to be stored. This is the length of the data that needs to be stored in Memcached.
noreply (optional) − It is a parameter that informs the server not to send any reply.
value − It is the data that needs to be stored. The data needs to be passed on the new line after executing the command with the above options.
The output of the command is as shown below −
STORED
STORED indicates success.
NOT_STORED indicates the data is not stored in Memcached.
In the following example, we use ‘key’ as the key and add the value Memcached in it with an expiration time of 900 seconds.
add key 0 900 9 memcached STORED get key VALUE key 0 9 Memcached END
add key 0 900 5 redis NOT_STORED
To add data in a Memcached server, you need to use the Memcached add method.
import net.spy.memcached.MemcachedClient; public class MemcachedJava { public static void main(String[] args) { // Connecting to Memcached server on localhost MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211)); System.out.println("Connection to server successful"); System.out.println("add status:"+mcc.add("howcodex", 900, "redis").done); System.out.println("add status:"+mcc.add("tp", 900, "redis").done); // Get value from cache System.out.println("Get from Cache tp:"+mcc.get("tp")); } }
On compiling and executing the program, you get to see the following output −
Connection to server successful add status:false add status:true Get from Cache tp:redis
Memcached replace command is used to replace the value of an existing key. If the key does not exist, then it gives the output NOT_STORED.
The basic syntax of Memcached replace command is as shown below −
replace key flags exptime bytes [noreply] value
The keywords in the syntax are as described below −
key − It is the name of the key by which data is stored and retrieved from Memcached.
flags − It is the 32-bit unsigned integer that the server stores with the data provided by the user, and returns along with the data when the item is retrieved.
exptime − It is the expiration time in seconds. 0 means no delay. If exptime is more than 30 days, Memcached uses it as a UNIX timestamp for expiration.
bytes − It is the number of bytes in the data block that needs to be stored. This is the length of the data that needs to be stored in the Memcached.
noreply (optional) − It is a parameter that informs the server not to send any reply.
value − It is the data that needs to be stored. The data needs to be passed on the new line after executing the command with the above options.
The output of the command is as shown below −
STORED
STORED indicates success.
NOT_STORED indicates the data is not stored in Memcached.
In the following example, we use ‘key’ as the key and store memcached in it with an expiration time of 900 seconds. After this, the same key is replaced with the value ‘redis’.
add key 0 900 9 memcached STORED get key VALUE key 0 9 memcached END replace key 0 900 5 redis get key VALUE key 0 5 redis END
To replace data in a Memcached server, you need to use the Memcached replace method.
import net.spy.memcached.MemcachedClient; public class MemcachedJava { public static void main(String[] args) { // Connecting to Memcached server on localhost MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211)); System.out.println("Connection to server sucessfully"); System.out.println("set status:"+mcc.set("howcodex", 900, "memcached").done); // Get value from cache System.out.println("Get from Cache:"+mcc.get("howcodex")); // now replace the existing data System.out.println("Replace cache:"+mcc.replace("howcodex", 900, "redis").done); // get the updated data System.out.println("Get from Cache:"+mcc.get("howcodex")); } }
On compiling and executing the program, you get to see the following output −
Connection to server successfully set status:true Get from Cache:memcached Replace cache:true Get from Cache:redis
Memcached append command is used to add some data in an existing key. The data is stored after the existing data of the key.
The basic syntax of Memcached append command is as shown below −
append key flags exptime bytes [noreply] value
The keywords in the syntax are as described below−
key − It is the name of the key by which data is stored and retrieved from Memcached.
flags − It is the 32-bit unsigned integer that the server stores with the data provided by the user, and returns along with the data when the item is retrieved.
exptime − It is the expiration time in seconds. 0 means no delay. If exptime is more than 30 days, Memcached uses it as a UNIX timestamp for expiration.
bytes − It is the number of bytes in the data block that needs to be stored. This is the length of the data that needs to be stored in Memcached.
noreply (optional) − It is a parameter that informs the server not send any reply.
value − It is the data that needs to be stored. The data needs to be passed on the new line after executing the command with the above options.
The output of the command is as shown below −
STORED
STORED indicates success.
NOT_STORED indicates the key does not exist in the Memcached server.
CLIENT_ERROR indicates error.
In the following example, we try to add some data in a key that does not exist. Hence, Memcached returns NOT_STORED. After this, we set one key and append data into it.
append tutorials 0 900 5 redis NOT_STORED set tutorials 0 900 9 memcached STORED get tutorials VALUE tutorials 0 14 memcached END append tutorials 0 900 5 redis STORED get tutorials VALUE tutorials 0 14 memcachedredis END
To append data in a Memcached server, you need to use the Memcached append method.
import net.spy.memcached.MemcachedClient; public class MemcachedJava { public static void main(String[] args) { // Connecting to Memcached server on localhost MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211)); System.out.println("Connection to server successful"); System.out.println("set status:"+mcc.set("howcodex", 900, "memcached").isDone()); // Get value from cache System.out.println("Get from Cache:"+mcc.get("howcodex")); // now append some data into existing key System.out.println("Append to cache:"+mcc.append("howcodex", "redis").isDone()); // get the updated key System.out.println("Get from Cache:"+mcc.get("howcodex")); } }
On compiling and executing the program, you get to see the following output −
Connection to server successful set status:true Get from Cache:memcached Append to cache:true Get from Cache:memcachedredis
Memcached prepend command is used to add some data in an existing key. The data is stored before the existing data of the key.
The basic syntax of Memcached prepend command is as shown below −
prepend key flags exptime bytes [noreply] value
The keywords in the syntax are as described below−
key − It is the name of the key by which data is stored and retrieved in Memcached.
flags − It is the 32-bit unsigned integer that the server stores with the data provided by the user, and returns along with the data when the item is retrieved.
exptime − It is the expiration time in seconds. 0 means no delay. If exptime is more than 30 days, Memcached uses it as a UNIX timestamp for expiration.
bytes − It is the number of bytes in the data block that needs to be stored. This is the length of the data that needs to be stored in Memcached.
noreply (optional) −It is a parameter that informs the server not send any reply.
value − It is the data that needs to be stored. Data needs to be passed on the new line after executing the command with the above options.
The output of the command is as shown below −
STORED
STORED indicates success.
NOT_STORED indicates the key does not exist in the Memcached server.
CLIENT_ERROR indicates error.
In the following example, we add some data in a key that does not exist. Hence, Memcached returns NOT_STORED. After this, we set one key and prepend data into it.
prepend tutorials 0 900 5 redis NOT_STORED set tutorials 0 900 9 memcached STORED get tutorials VALUE tutorials 0 14 memcached END prepend tutorials 0 900 5 redis STORED get tutorials VALUE tutorials 0 14 redismemcached END
To prepend data in a Memcached server, you need to use the Memcached prepend method.
import net.spy.memcached.MemcachedClient; public class MemcachedJava { public static void main(String[] args) { // Connecting to Memcached server on localhost MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211)); System.out.println("Connection to server successful"); System.out.println("set status:"+mcc.set("howcodex", 900, "memcached").isDone()); // Get value from cache System.out.println("Get from Cache:"+mcc.get("howcodex")); // now append some data into existing key System.out.println("Prepend to cache:"+mcc.prepend("howcodex", "redis").isDone()); // get the updated key System.out.println("Get from Cache:"+mcc.get("howcodex")); } }
On compiling and executing the program, you get to see the following output −
Connection to server successful set status:true Get from Cache:memcached Prepend to cache:true Get from Cache:redismemcached
CAS stands for Check-And-Set or Compare-And-Swap. Memcached CAS command is used to set the data if it is not updated since last fetch. If the key does not exist in Memcached, then it returns NOT_FOUND.
The basic syntax of Memcached CAS command is as shown below −
set key flags exptime bytes unique_cas_key [noreply] value
The keywords in the syntax are as described below−
key − It is the name of the key by which data is stored and retrieved from Memcached.
flags − It is the 32-bit unsigned integer that the server stores with the data provided by the user, and returns along with the data when the item is retrieved.
exptime − It is the expiration time in seconds. 0 means no delay. If exptime is more than 30 days, Memcached uses it as a UNIX timestamp for expiration.
bytes − It is the number of bytes in the data block that needs to be stored. This is the length of the data that needs to be stored in Memcached.
unique_cas_key − It is the unique key get from gets command.
noreply (optional) − It is a parameter that informs the server not to send any reply.
value − It is the data that needs to be stored. Data needs to be passed on new line after executing the command with the above options.
The output of the command is as shown below −
STORED
STORED indicates success.
ERROR indicates error while saving data or wrong syntax.
EXISTS indicates that someone has modified the CAS data since last fetch.
NOT_FOUND indicates that the key does not exist in the Memcached server.
To execute a CAS command in Memcached, you need to get a CAS token from the Memcached gets command.
cas tp 0 900 9 ERROR cas tp 0 900 9 2 memcached set tp 0 900 9 memcached STORED gets tp VALUE tp 0 9 1 memcached END cas tp 0 900 5 2 redis EXISTS cas tp 0 900 5 1 redis STORED get tp VALUE tp 0 5 redis END
To get CAS data from a Memcached server, you need to use Memcached gets method.
import net.spy.memcached.MemcachedClient; public class MemcachedJava { public static void main(String[] args) { // Connecting to Memcached server on localhost MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211)); System.out.println("Connection to server successful"); System.out.println("set status:"+mcc.set("howcodex", 900, "memcached").isDone()); // Get cas token from cache long castToken = mcc.gets("howcodex").cas; System.out.println("Cas token:"+castToken); // now set new data in memcached server System.out.println("Now set new data:"+mcc.cas("howcodex", castToken, 900, "redis")); System.out.println("Get from Cache:"+mcc.get("howcodex")); } }
On compiling and executing the program, you get to see the following output −
Connection to server successful set status:true Cas token:3 Now set new data:OK Get from Cache:redis
Memcached get command is used to get the value stored at key. If the key does not exist in Memcached, then it returns nothing.
The basic syntax of Memcached get command is as shown below −
get key
In the following example, we use howcodex as the key and store memcached in it with an expiration time of 900 seconds.
set howcodex 0 900 9 memcached STORED get howcodex VALUE howcodex 0 9 memcached END
To get data from a Memcached server, you need to use the Memcached get method.
import net.spy.memcached.MemcachedClient; public class MemcachedJava { public static void main(String[] args) { // Connecting to Memcached server on localhost MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211)); System.out.println("Connection to server sucessfully"); System.out.println("set status:"+mcc.set("howcodex", 900, "memcached").done); // Get value from cache System.out.println("Get from Cache:"+mcc.get("howcodex")); } }
On compiling and executing the program, you get to see the following output −
Connection to server successfully set status:true Get from Cache:memcached
Memcached gets command is used to get the value with CAS token. If the key does not exist in Memcached, then it returns nothing.
The basic syntax of Memcached gets command is as shown below −
get key
set howcodex 0 900 9 memcached STORED gets howcodex VALUE howcodex 0 9 1 memcached END
In this example, we use howcodex as the key and store memcached in it with an expiration time of 900 seconds.
To get CAS data from a Memcached server, you need to use the Memcached gets method.
import net.spy.memcached.MemcachedClient; public class MemcachedJava { public static void main(String[] args) { // Connecting to Memcached server on localhost MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211)); System.out.println("Connection to server sucessfully"); System.out.println("set status:"+mcc.set("howcodex", 900, "memcached").done); // Get value from cache System.out.println("Get from Cache:"+mcc.gets("howcodex")); } }
On compiling and executing the program, you get to see the following output −
Connection to server successfully set status:true Get from Cache:{CasValue 2/memcached}
Memcached delete command is used to delete an existing key from the Memcached server.
The basic syntax of Memcached delete command is as shown below −
delete key [noreply]
CAS command may produce one of the following result −
DELETED indicates successful deletion.
ERROR indicates error while deleting data or wrong syntax.
NOT_FOUND indicates that the key does not exist in the Memcached server.
In this example, we use howcodex as a key and store memcached in it with an expiration time of 900 seconds. After this, it deletes the stored key.
set howcodex 0 900 9 memcached STORED get howcodex VALUE howcodex 0 9 memcached END delete howcodex DELETED get howcodex END delete howcodex NOT_FOUND
To delete data from a Memcached server, you need to use the Memcached delete method.
import java.net.InetSocketAddress; import java.util.concurrent.Future; import net.spy.memcached.MemcachedClient; public class MemcachedJava { public static void main(String[] args) { try{ // Connecting to Memcached server on localhost MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211)); System.out.println("Connection to server sucessful."); // add data to memcached server Future fo = mcc.set("howcodex", 900, "World's largest online tutorials library"); // print status of set method System.out.println("set status:" + fo.get()); // retrieve and check the value from cache System.out.println("howcodex value in cache - " + mcc.get("howcodex")); // try to add data with existing key Future fo = mcc.delete("howcodex"); // print status of delete method System.out.println("delete status:" + fo.get()); // retrieve and check the value from cache System.out.println("howcodex value in cache - " + mcc.get("codingground")); // Shutdowns the memcached client mcc.shutdown(); }catch(Exception ex) System.out.println(ex.getMessage()); } }
On compiling and executing the program, you get to see the following output −
Connection to server successful set status:true howcodex value in cache - World's largest online tutorials library delete status:true howcodex value in cache - null
Memcached delete command is used to delete an existing key from the Memcached server.
The basic syntax of Memcached delete command is as shown below −
delete key
If the key is successfully deleted, then it returns DELETED. If the key is not found, then it returns NOT_FOUND, otherwise it returns ERROR.
In this example, we use howcodex as a key and store memcached in it with an expiration time of 900 seconds. After this, it deletes the stored key.
set howcodex 0 900 9 memcached STORED get howcodex VALUE howcodex 0 9 memcached END delete howcodex DELETED get howcodex END delete howcodex NOT_FOUND
To delete data from a Memcached server, you need to use the Memcached delete method.
import net.spy.memcached.MemcachedClient; public class MemcachedJava { public static void main(String[] args) { // Connecting to Memcached server on localhost MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211)); System.out.println("Connection to server successful"); System.out.println("set status:"+mcc.set("howcodex", 900, "memcached").done); // Get value from cache System.out.println("Get from Cache:"+mcc.get("howcodex")); // delete value from cache System.out.println("Delete from Cache:"+mcc.delete("howcodex").isDone()); // check whether value exists or not System.out.println("Get from Cache:"+mcc.get("howcodex")); } }
On compiling and executing the program, you get to see the following output −
Connection to server successful set status:true Get from Cache:memcached Delete from Cache:true Get from Cache:null
Memcached incr and decr commands are used to increment or decrement the numeric value of an existing key. If the key is not found, then it returns NOT_FOUND. If the key is not numeric, then it returns CLIENT_ERROR cannot increment or decrement non-numeric value. Otherwise, ERROR is returned.
The basic syntax of Memcached incr command is as shown below −
incr key increment_value
In this example, we use visitors as key and set 10 initially into it, thereafter we increment the visitors by 5.
set visitors 0 900 2 10 STORED get visitors VALUE visitors 0 2 10 END incr visitors 5 15 get visitors VALUE visitors 0 2 15 END
The basic syntax of Memcached decr command is as shown below
decr key decrement_value
set visitors 0 900 2 10 STORED get visitors VALUE visitors 0 2 10 END decr visitors 5 5 get visitors VALUE visitors 0 1 5 END
To increment or decrement data in a Memcached server, you need to use Memcached incr or decr methods respectively.
import net.spy.memcached.MemcachedClient; public class MemcachedJava { public static void main(String[] args) { // Connecting to Memcached server on localhost MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211)); System.out.println("Connection to server sucessfully"); System.out.println("set status:"+mcc.set("count", 900, "5").isDone()); // Get value from cache System.out.println("Get from Cache:"+mcc.get("count")); // now increase the stored value System.out.println("Increment value:"+mcc.incr("count", 2)); // now decrease the stored value System.out.println("Decrement value:"+mcc.decr("count", 1)); // now get the final stored value System.out.println("Get from Cache:"+mcc.get("count")); } }
On compiling and executing the program, you get to see the following output −
Connection to server successfully set status:true Get from Cache:5 Increment value:7 Decrement value:6 Get from Cache:6
Memcached stats command is used to return server statistics such as PID, version, connections, etc.
The basic syntax of Memcached stats command is as shown below −
stats
stats STAT pid 1162 STAT uptime 5022 STAT time 1415208270 STAT version 1.4.14 STAT libevent 2.0.19-stable STAT pointer_size 64 STAT rusage_user 0.096006 STAT rusage_system 0.152009 STAT curr_connections 5 STAT total_connections 6 STAT connection_structures 6 STAT reserved_fds 20 STAT cmd_get 6 STAT cmd_set 4 STAT cmd_flush 0 STAT cmd_touch 0 STAT get_hits 4 STAT get_misses 2 STAT delete_misses 1 STAT delete_hits 1 STAT incr_misses 2 STAT incr_hits 1 STAT decr_misses 0 STAT decr_hits 1 STAT cas_misses 0 STAT cas_hits 0 STAT cas_badval 0 STAT touch_hits 0 STAT touch_misses 0 STAT auth_cmds 0 STAT auth_errors 0 STAT bytes_read 262 STAT bytes_written 313 STAT limit_maxbytes 67108864 STAT accepting_conns 1 STAT listen_disabled_num 0 STAT threads 4 STAT conn_yields 0 STAT hash_power_level 16 STAT hash_bytes 524288 STAT hash_is_expanding 0 STAT expired_unfetched 1 STAT evicted_unfetched 0 STAT bytes 142 STAT curr_items 2 STAT total_items 6 STAT evictions 0 STAT reclaimed 1 END
To get stats from a Memcached server, you need to use the Memcached stats method.
import net.spy.memcached.MemcachedClient; public class MemcachedJava { public static void main(String[] args) { // Connecting to Memcached server on localhost MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211)); System.out.println("Connection to server successful"); System.out.println("Stats:"+mcc.stats); } }
On compiling and executing the program, you get to see the following output −
Connection to server successful Stats:[/127.0.0.1:11211:[delete_hits:0, bytes:71, total_items:4, rusage_system:0.220013, touch_misses:0, cmd_touch:0, listen_disabled_num:0, auth_errors:0, evictions:0, version:1.4.14, pointer_size:64, time:1417279366, incr_hits:1, threads:4, expired_unfetched:0, limit_maxbytes:67108864, hash_is_expanding:0, bytes_read:170, curr_connections:8, get_misses:1, reclaimed:0, bytes_written:225, hash_power_level:16, connection_structures:9, cas_hits:0, delete_misses:0, total_connections:11, rusage_user:0.356022, cmd_flush:0, libevent:2.0.19-stable, uptime:12015, reserved_fds:20, touch_hits:0, cas_badval:0, pid:1138, get_hits:2, curr_items:1, cas_misses:0, accepting_conns:1, evicted_unfetched:0, cmd_get:3, cmd_set:2, auth_cmds:0, incr_misses:1, hash_bytes:524288, decr_misses:1, decr_hits:1, conn_yields:0]]
Memcached stats items command is used to get items statistics such as count, age, eviction, etc. organized by slabs ID.
The basic syntax of Memcached stats items command is as shown below −
stats items
stats items STAT items:1:number 1 STAT items:1:age 7 STAT items:1:evicted 0 STAT items:1:evicted_nonzero 0 STAT items:1:evicted_time 0 STAT items:1:outofmemory 0 STAT items:1:tailrepairs 0 STAT items:1:reclaimed 0 STAT items:1:expired_unfetched 0 STAT items:1:evicted_unfetched 0 END
Memcached stats slabs command displays slabs statistics such as size, memory usage, commands, count etc. organized by slabs ID.
The basic syntax of Memcached stats slabs command is as shown below −
stats slabs
stats slabs STAT 1:chunk_size 96 STAT 1:chunks_per_page 10922 STAT 1:total_pages 1 STAT 1:total_chunks 10922 STAT 1:used_chunks 1 STAT 1:free_chunks 10921 STAT 1:free_chunks_end 0 STAT 1:mem_requested 71 STAT 1:get_hits 0 STAT 1:cmd_set 1 STAT 1:delete_hits 0 STAT 1:incr_hits 0 STAT 1:decr_hits 0 STAT 1:cas_hits 0 STAT 1:cas_badval 0 STAT 1:touch_hits 0 STAT active_slabs 1 STAT total_malloced 1048512 END
Memcached stats sizes command provides information about the sizes and number of items of each size within the cache. The information is returned in two columns. The first column is the size of the item (rounded up to the nearest 32 byte boundary), and the second column is the count of the number of items of that size within the cache.
The basic syntax of Memcached stats sizes command is as shown below −
stats sizes
stats sizes STAT 96 1 END
The item size statistics are useful only to determine the sizes of the objects you are storing. Since the actual memory allocation is relevant only in terms of the chunk size and page size, the information is only useful during a careful debugging or diagnostic session.
Memcached flush_all command is used to delete all data (key-value pairs) from the Memcached server. It accepts an optional parameter called time that sets a time after which the Memcached data is to be cleared.
The basic syntax of Memcached flush_all command is as shown below −
flush_all [time] [noreply]
The above command always returns OK.
In the following example, we store some data into the Memcached server and then clear all the data.
set howcodex 0 900 9 memcached STORED get howcodex VALUE howcodex 0 9 memcached END flush_all OK get howcodex END
To clear data from a Memcached server, you need to use the Memcached flush method.
import net.spy.memcached.MemcachedClient; public class MemcachedJava { public static void main(String[] args) { // Connecting to Memcached server on localhost MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211)); System.out.println("Connection to server sucessfully"); System.out.println("set status:"+mcc.set("count", 900, "5").isDone()); // Get value from cache System.out.println("Get from Cache:"+mcc.get("count")); // now increase the stored value System.out.println("Increment value:"+mcc.incr("count", 2)); // now decrease the stored value System.out.println("Decrement value:"+mcc.decr("count", 1)); // now get the final stored value System.out.println("Get from Cache:"+mcc.get("count")); // now clear all this data System.out.println("Clear data:"+mcc.flush().isDone()); } }
On compiling and executing the program, you get to see the following output −
Connection to server successfully set status:true Get from Cache:5 Increment value:7 Decrement value:6 Get from Cache:6 Clear data:true