千家信息网

Memcached是什么

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍"Memcached是什么",在日常操作中,相信很多人在Memcached是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Memcached是什么"
千家信息网最后更新 2026年11月03日Memcached是什么

这篇文章主要介绍"Memcached是什么",在日常操作中,相信很多人在Memcached是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Memcached是什么"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

Memcached是danga.com(运营LiveJournal的技术团队)开发的一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能。

适用场合

1.分布式应用。由于memcached本身基于分布式的系统,所以尤其适合大型的分布式系统。

2.数据库前段缓存。数据库常常是网站系统的瓶颈。数据库的大并发量访问,常常造成网站内存溢出。当然我们也可以使用Hibernate的缓存机制。但memcached是基于分布式的,并可独立于网站应用本身,所以更适合大型网站进行应用的拆分。

3.服务器间数据共享。举例来讲,我们将网站的登录系统、查询系统拆分为两个应用,放在不同的服务器上,并进行集群,那这个时候用户登录后,登录信息如何从登录系统服务器同步到查询系统服务器呢?这时候,我们便可以使用memcached,登录系统将登录信息缓存起来,查询系统便可以获得登录信息,就像获取本地信息一样。

不适用场合

那些不需要"分布"的,不需要共享的,或者干脆规模小到只有一台服务器的应用,memcached不会带来任何好处,相反还会拖慢系统效率,因为网络连接同样需要资源

安装

这里介绍windows环境的安装。

1.下载memcache的windows稳定版,解压放某个盘下面,比如在c:\memcached

2.在cmd下输入 c:\memcached\memcached.exe -d install 安装

3.再输入: c:\memcached\memcached.exe -d start 启动。

以后memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完毕了。

客户端

Memcached本身是使用C开发的,客户端可以是php、C#、或者java。

在网上看到基于java的客户端有两个:

1.javamemcached-release2.6.3

①简介

这是比较通用的Memcached客户端框架。具体原创不详。
②依赖的jar

  • commons-pool-1.5.6.jar

  • javamemcached-release2.6.3.jar

  • slf4j-api-1.6.1.jar

  • slf4j-simple-1.6.1.jar

2.alisoft-xplatform-asf-cache-2.5.1

①简介

这个东东是阿里软件的架构师岑文初进行封装的。里面的注释都是中文的,比较好。

②依赖的jar

  • alisoft-xplatform-asf-cache-2.5.1.jar

  • commons-logging-1.0.4.jar

  • hessian-3.0.1.jar

  • log4j-1.2.9.jar

  • stax-api-1.0.1.jar

  • wstx-asl-2.0.2.jar

范例

基于javamemcached-release2.6.3

package com.bjpowernode.memcached.cache;import java.util.Date;import com.danga.MemCached.MemCachedClient;import com.danga.MemCached.SockIOPool;public class MyCache {  public static void main(String[] args) {    MemCachedClient client=new MemCachedClient();    String [] addr ={"127.0.0.1:11211"};    Integer [] weights = {3};    SockIOPool pool = SockIOPool.getInstance();    pool.setServers(addr);    pool.setWeights(weights);    pool.setInitConn(5);    pool.setMinConn(5);    pool.setMaxConn(200);    pool.setMaxIdle(1000*30*30);    pool.setMaintSleep(30);    pool.setNagle(false);    pool.setSocketTO(30);    pool.setSocketConnectTO(0);    pool.initialize();//   String [] s =pool.getServers();    client.setCompressEnable(true);    client.setCompressThreshold(1000*1024);//   将数据放入缓存    client.set("test2","test2");//   将数据放入缓存,并设置失效时间    Date date=new Date(2000000);    client.set("test1","test1", date);//   删除缓存数据//   client.delete("test1");//   获取缓存数据    String str =(String)client.get("test1");    System.out.println(str);  }}

基于alisoft-xplatform-asf-cache-2.5.1

配置memcached.xml

            com.alisoft.xplatform.asf.cache.memcached.MemcachedErrorHandler                  127.0.0.1:11211      

测试类

package com.bjpowernode.memcached.client.test;import java.util.ArrayList;import java.util.List;import com.alisoft.xplatform.asf.cache.ICacheManager;import com.alisoft.xplatform.asf.cache.IMemcachedCache;import com.alisoft.xplatform.asf.cache.memcached.CacheUtil;import com.alisoft.xplatform.asf.cache.memcached.MemcachedCacheManager;import com.bjpowernode.memcached.cache.client.TestBean;public class ClientTest {  @SuppressWarnings("unchecked")  public static void main(String[] args) {    ICacheManager manager;    manager = CacheUtil.getCacheManager(IMemcachedCache.class,        MemcachedCacheManager.class.getName());    manager.setConfigFile("memcached.xml");    manager.start();    try {      IMemcachedCache cache = manager.getCache("mclient_0");      cache.put("key", "value");      System.out.println(cache.get("key"));    } finally {      manager.stop();    }  }}

使用memcached缓存java bean自定义对象

Memcached可以缓存String,也可以缓存自定义java bean。但必须是可序列化的java bean(implements Serializable即可)
基于javamemcached-release2.6.3

测试用java bean

package com.bjpowernode.memcached.cache.client;import java.io.Serializable;public class TestBean implements Serializable{  private static final long serialVersionUID = 5344571864700659321L;  private String name;  private Integer age;  //get、set方法略}

MyCache.java 代码

package com.bjpowernode.memcached.cache;import java.util.Date;import com.danga.MemCached.MemCachedClient;import com.danga.MemCached.SockIOPool;public class MyCache {  public static void main(String[] args) {    MemCachedClient client=new MemCachedClient();    String [] addr ={"127.0.0.1:11211"};    Integer [] weights = {3};    SockIOPool pool = SockIOPool.getInstance();    pool.setServers(addr);    pool.setWeights(weights);    pool.setInitConn(5);    pool.setMinConn(5);    pool.setMaxConn(200);    pool.setMaxIdle(1000*30*30);    pool.setMaintSleep(30);    pool.setNagle(false);    pool.setSocketTO(30);    pool.setSocketConnectTO(0);    pool.initialize();//   String [] s =pool.getServers();    client.setCompressEnable(true);    client.setCompressThreshold(1000*1024);//   将数据放入缓存    TestBean bean=new TestBean();    bean.setName("name1");    bean.setAge(25);    client.add("bean1", bean);//   获取缓存数据    TestBean beanClient=(TestBean)client.get("bean1");    System.out.println(beanClient.getName());  }}

基于alisoft-xplatform-asf-cache-2.5.1

package com.bjpowernode.memcached.client.test;import java.util.ArrayList;import java.util.List;import com.alisoft.xplatform.asf.cache.ICacheManager;import com.alisoft.xplatform.asf.cache.IMemcachedCache;import com.alisoft.xplatform.asf.cache.memcached.CacheUtil;import com.alisoft.xplatform.asf.cache.memcached.MemcachedCacheManager;import com.bjpowernode.memcached.cache.client.TestBean;public class ClientTest {  @SuppressWarnings("unchecked")  public static void main(String[] args) {    ICacheManager manager;    manager = CacheUtil.getCacheManager(IMemcachedCache.class,        MemcachedCacheManager.class.getName());    manager.setConfigFile("memcached.xml");    manager.start();    try {      IMemcachedCache cache = manager.getCache("mclient_0");      TestBean bean=new TestBean();      bean.setName("name1");      bean.setAge(25);      cache.put("bean", bean);      TestBean beanClient=(TestBean)cache.get("bean");      System.out.println(beanClient.getName());      List list=new ArrayList();      list.add(bean);      cache.put("beanList", list);      List listClient=(List)cache.get("beanList");      if(listClient.size()>0){        TestBean bean4List=listClient.get(0);        System.out.println(bean4List.getName());      }    } finally {      manager.stop();    }  }}

到此,关于"Memcached是什么"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

缓存 系统 数据 服务 服务器 登录 网站 分布式 应用 信息 客户 客户端 数据库 学习 查询系统 查询 两个 内存 场合 对象 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技有限公司 广州大一互联网络科技有限公司 厦门中拓互联网络科技有限公司 圆梦互联网科技 金融科技创新监管互联网金融 高科技与互联网 宜安科技 互联网金融 壕鑫互联网络科技 互联网高科技企业 国外互联网科技网站 重庆科技学院互联网 滨湖区互联网智能科技产品供应 江苏南京365互联网科技 互联网科技博主是什么意思 黑科技闪耀互联网之光 互联网科技的全部知识 皮皮虾互联网科技有限公司 科技互联网经济论坛 上海旺乐尼互联网科技有限公司 山东亿川互联网科技有限责任公司 互联网黑科技 互联网金融 科技金融 成都互联网科技公司 未来的互联网科技 易通互联网络科技有限公司 湖南洣水互联网科技有限公司扣款 湖南一路畅行互联网科技 亳州好赞互联网科技有限公司 福建互联网展示科技馆设计 山东蛋芒互联网科技有限公司
0