memcache简介以及使用方法


memcache是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发,但目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的、需要频繁访问数据库的网站访问速度提升效果十分显著[1]  。这是一套开放源代码软件,以BSD license授权发布。


MemCache的工作流程如下:先检查客户端的请求数据是否在memcached中,如有,直接把请求数据返回,不再对数据库进行任何操作;如果请求的数据不在memcached中,就去查数据库,把从数据库中获取的数据返回给客户端,同时把数据缓存一份到memcached中(memcached客户端不负责,需要程序明确实现);每次更新数据库的同时更新memcached中的数据,保证一致性;当分配给memcached内存空间用完之后,会使用LRU(Least Recently Used,最近最少使用)策略加上到期失效策略,失效数据首先被替换,然后再替换掉最近未使用的数据。 [2]  
Memcache是一个高性能的 分布式的内存对象缓存系统,通过在 内存里维护一个统一的巨大的 hash表,它能够用来存储各种 格式的数据,包括 图像视频文件以及 数据库检索的结果等。简单的说就是将数据调用到 内存中,然后从内存中读取,从而大大提高读取速度。
Memcache是danga的一个项目,最早是LiveJournal 服务的,最初为了加速 LiveJournal 访问速度而开发的,后来被很多大型的网站采用。
Memcached是以守护程序(监听)方式运行于一个或多个 服务器中,随时会接收 客户端连接和操作。

在 Memcached中可以保存的item数据量是没有限制的,只要内存足够 。


memcached是键值一一对应,key默认最大不能超过128个字 节,value默认大小是1M,也就是一个slabs,如果要存2M的值(连续的),不能用两个slabs,因为两个slabs不是连续的,无法在内存中 存储,故需要修改slabs的大小,多个key和value进行存储时,即使这个slabs没有利用完,那么也不会存放别的数据。


下面是一个完整的java的memcached的例子。

package com.dert.memcache;


import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;


public class MemcacheTest {


/**
* @param args
*/
public static void main(String[] args) {

  /**


       * 初始化SockIOPool,管理memcached的连接池


       * */


      String[] servers = { "127.0.0.1:11211" };


      SockIOPool pool = SockIOPool.getInstance();


      pool.setServers(servers);


      pool.setFailover(true);


      pool.setInitConn(10);


      pool.setMinConn(5);


      pool.setMaxConn(250);


      pool.setMaintSleep(30);


      pool.setNagle(false);


      pool.setSocketTO(3000);


      pool.setAliveCheck(true);


      pool.initialize();


      
      /**


       * 建立MemcachedClient实例


       * */
      MemCachedClient memCachedClient = new MemCachedClient();
      System.out.println("memCacheClient");
      for (int i = 0; i < 1000; i++) {


          /**


           * 将对象加入到memcached缓存


           * */


          boolean success = memCachedClient.set("" + i, "Hello!");
          System.out.println("memCacheClient");
          /**


           * 从memcached缓存中按key值取对象


           * */


          String result = (String) memCachedClient.get("" + i);
          System.out.println(String.format("set( %d ): %s", i, success));
          System.out.println(String.format("get( %d ): %s", i, result));
      
      }
   }
}

首先,我们需要在windows上面正确安装上面memcached服务器程序,并且启动服务器,

然后下载memcached的jar包,一共有4个,然后上面的程序就能正确运行。

正确的结果,都是true,如果不对,那就会打印出false。




  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值