Memcached入门笔记

Memcached简介

Mencached是一个自由开源的、高性能、分布式内存对象缓存系统。

Memcached是一种基于key—value键值对存储,用来存储小块的任意数据(字符串、对象)。这些数据可以是数据库调用、API调用或者页面渲染的结果。

本质上,它是一个简洁的key-value存储系统。

Mencached的工作原理

当应用服务器首次访问数据时,首先从数据库中查询数据,从数据库中查询出来的数据,返回给应用服务器,同时也会存储到memcached中,下次查询数据的时候先从memcached进行查询,如果缓存中有想要的数据,则直接从中取数据,如果没有想要的数据再从数据库中查询。这样极大地节省了数据查询的时间,特别是应用系统数据量比较大的时候,提高了系统的查询效率。

Memcached入门笔记_第1张图片
Memcached工作原理图

Memcached的一些常用指令

主要用到的指令是set指令和get指令;

set指令set(key,value);
get指令 get(key)

这两个指令一个是存值,一个是取值;

java程序使用memcached作为缓存,首先应该与memcached进行连接,然后再进行存值和取值的操作;

本地连接memcached服务:

 // 本地连接 Memcached 服务
         MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211));
         
// 关闭连接
         mcc.shutdown();

使用set方法向memcached中存值得操作


//使用java.util.concurrent.Future 来存储数据
 // 连接本地的 Memcached 服务
         MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211));
         System.out.println("Connection to server sucessful.");
      
         // 存储数据
         Future fo = mcc.set("runoob", 900, "Free Education");
      
         // 查看存储状态
         System.out.println("set status:" + fo.get());
         
         // 输出值
         System.out.println("runoob value in cache - " + mcc.get("runoob"));

         // 关闭连接
         mcc.shutdown();

使用add方法向缓存中增加一个新值得示例代码

//连接本地的 Memcached 服务
         MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211));
         System.out.println("Connection to server sucessful.");

         // 添加第一个 key=》value 对
         Future fo = mcc.set("runoob", 900, "Free Education");

         // 输出执行 add 方法后的状态
         System.out.println("add status:" + fo.get());

         // 获取键对应的值
         System.out.println("runoob value in cache - " + mcc.get("runoob"));

         // 添加新的 key
         fo = mcc.replace("runoob", 900, "Largest Tutorials' Library");

         // 输出执行 set 方法后的状态
         System.out.println("replace status:" + fo.get());

         // 获取键对应的值
         System.out.println("runoob value in cache - " + mcc.get("runoob"));

         // 关闭连接
         mcc.shutdown();

replace方法替换原有键值对中的value值 示例代码:

//连接本地的 Memcached 服务
         MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211));
         System.out.println("Connection to server sucessful.");

         // 添加第一个 key=》value 对
         Future fo = mcc.set("runoob", 900, "Free Education");

         // 输出执行 add 方法后的状态
         System.out.println("add status:" + fo.get());

         // 获取键对应的值
         System.out.println("runoob value in cache - " + mcc.get("runoob"));

         // 添加新的 key
         fo = mcc.replace("runoob", 900, "Largest Tutorials' Library");

         // 输出执行 set 方法后的状态
         System.out.println("replace status:" + fo.get());

         // 获取键对应的值
         System.out.println("runoob value in cache - " + mcc.get("runoob"));

         // 关闭连接
         mcc.shutdown();

append方法是向对应key值的value值中追加数据,就像是StringBuffer的append方法

操作示例:

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("yiibai", 900, "memcached").isDone());
      //Get value from cache
      System.out.println("Get from Cache:"+mcc.get("yiibai"));
      // now append some data into existing key
      System.out.println("Append to cache:"+mcc.append("yiibai", "redis").isDone());
      // get the updated key
      System.out.println("Get from Cache:"+mcc.get("yiibai"));

输出的结果如下

Connection to server successfully
set status:true
Get from Cache:memcached
Append to cache:true
Get from Cache:memcachedredis

prepend方法跟append方法相反,append方法是将数据追加到原有的数据后面,prepend方法是将数据插入到原来的数据前面

示例代码:

 //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("yiibai", 900, "memcached").isDone());
      //Get value from cache
      System.out.println("Get from Cache:"+mcc.get("yiibai"));
      // now append some data into existing key
      System.out.println("Append to cache:"+mcc.prepend("yiibai", "redis").isDone());
      // get the updated key
      System.out.println("Get from Cache:"+mcc.get("yiibai"));

输出的结果如下:

Connection to server successfully
set status:true
Get from Cache:memcached
Append to cache:true
Get from Cache:redismemcached

memcached的add、set和replace方法的区别

方法 当key值存在时 当key值不存在时
add false true
replace true false
set true true

你可能感兴趣的:(Memcached入门笔记)