`
勒布朗
  • 浏览: 71237 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Memcache开发实例代码

阅读更多
我们在项目开发中使用memcache一般是服务器端和客户端。服务器端主要是安装memcache的安装文件,分windows和linux版本的,安装好运行即可。客户端主要是在代码中去实现memcache的存取和取值。
在这里我们开发的主要是关心客户端的使用,主要代码如下:
1、首先要建立一个管理memcache的类 
package com.alisoft.sme.memcached;

import java.util.Date;

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

public class MemCachedManager {

// 创建全局的唯一实例
protected static MemCachedClient mcc = new MemCachedClient();

protected static MemCachedManager memCachedManager = new MemCachedManager();

// 设置与缓存服务器的连接池
static {
// 服务器列表和其权重
String[] servers = { "127.0.0.1:11211" };
Integer[] weights = { 3 };

// 获取socke连接池的实例对象
SockIOPool pool = SockIOPool.getInstance();

// 设置服务器信息
pool.setServers(servers);
pool.setWeights(weights);

// 设置初始连接数、最小和最大连接数以及最大处理时间
pool.setInitConn(5);
pool.setMinConn(5);
pool.setMaxConn(250);
                   //这里我们可以设置最大处理时间是12小时,这个根据项目需要来设置
pool.setMaxIdle(1000 * 60 * 60 * 12);

// 设置主线程的睡眠时间
pool.setMaintSleep(30);

// 设置TCP的参数,连接超时等
pool.setNagle(false);
pool.setSocketTO(3000);
pool.setSocketConnectTO(0);

// 初始化连接池
pool.initialize();

// 压缩设置,超过指定大小(单位为K)的数据都会被压缩
mcc.setCompressEnable(true);
mcc.setCompressThreshold(64 * 1024);
}

/**
* 保护型构造方法,不允许实例化!
*
*/
protected MemCachedManager() {

}

/**
* 获取唯一实例.
*
* @return
*/
public static MemCachedManager getInstance() {
return memCachedManager;
}

/**
* 添加一个指定的值到缓存中.
*
* @param key
* @param value
* @return
*/
public boolean add(String key, Object value) {
return mcc.add(key, value);
}

public boolean add(String key, Object value, Date expiry) {
return mcc.add(key, value, expiry);
}

public boolean replace(String key, Object value) {
return mcc.replace(key, value);
}

public boolean replace(String key, Object value, Date expiry) {
return mcc.replace(key, value, expiry);
}

/**
* 根据指定的关键字获取对象.
*
* @param key
* @return
*/
public Object get(String key) {
return mcc.get(key);
}

public static void main(String[] args) {
MemCachedManager cache = MemCachedManager.getInstance();
cache.add("username", "lebron");
System.out.print("get value : " + cache.get("username"));
}
}


2、建立缓存数据的pojo,这里一定要是可序列化,这是memcache底层缓存技术实现的原因
package com.alisoft.sme.memcached;

import java.io.Serializable;

public class TBean implements Serializable {
//随机生成的序列号
private static final long serialVersionUID = 1945562032261336919L;

private String name;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}

3、代码测试
</SPAN></SPAN>
<PRE class=java name="code">&nbsp;</PRE>
</H1>
<H2 style="MARGIN: 13pt 0cm 13pt 28.8pt"><SPAN lang=EN-US><SPAN><SPAN>&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN><SPAN style="FONT-SIZE: large">创建测试用例</SPAN></SPAN></H2>
<H2 style="MARGIN: 13pt 0cm 13pt 28.8pt">&nbsp;</H2>
<PRE class=java name="code">package com.alisoft.sme.memcached.test;

import junit.framework.TestCase;

import org.junit.Test;

import com.alisoft.sme.memcached.MemCachedManager;
import com.alisoft.sme.memcached.TBean;

public class TestMemcached extends TestCase {

private static MemCachedManager cache;

@Test
public void testCache() {

TBean tb = new TBean();
tb.setName("章黎");
cache.add("bean", tb);

TBean tb1 = (TBean) cache.get("bean");
System.out.println("name=" + tb1.getName());
tb1.setName("勒布朗");

tb1 = (TBean) cache.get("bean");
System.out.println("name=" + tb1.getName());
}

@Override
protected void setUp() throws Exception {
super.setUp();
cache = MemCachedManager.getInstance();
}

@Override
protected void tearDown() throws Exception {
super.tearDown();
cache = null;
}

}
</PRE>
<H2 style="MARGIN: 13pt 0cm 13pt 28.8pt">&nbsp;<SPAN>测试结果</SPAN></H2>
<H2 style="MARGIN: 13pt 0cm 13pt 28.8pt"><SPAN>
<PRE class=java name="code">[INFO] ++++ serializing for key: bean for class: com.alisoft.sme.memcached.TBean
[INFO] ++++ memcache cmd (result code): add bean 8 0 93 (NOT_STORED)
[INFO] ++++ data not stored in cache for key: bean
[INFO] ++++ deserializing class com.alisoft.sme.memcached.TBean
name=章黎[INFO] ++++ deserializing class com.alisoft.sme.memcached.TBean
name=章黎</PRE>
&nbsp;</SPAN></H2>
这里实现起来还是很简单的,在项目中,我们大概的做法就是:第一次请求是去数据库中找,返回数据时同时将数据缓存到memcache中,以后每次都是先到memcache中去取数据,如果memcache中没有数据,我们再到数据库中去拿数据,拿到后再放到memcache中。
     
分享到:
评论

相关推荐

    Windows Memcache 安装 .net 使用实例及动态库

    这里涉及到的`.net 使用实例`通常指的是使用.NET客户端库与Memcache服务器通信。例如,`memcacheddotnet_clientlib-1.1.5.zip`就是这样的一个库,它提供了一组易于使用的.NET接口,使得开发者可以方便地在C#或VB.NET...

    java实现memcache服务器的示例代码

    Java 实现 Memcache 服务器的示例代码 Memcache 是一个高性能的分布式内存对象缓存系统,通过在内存里维护一个统一的巨大的 hash 表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等...

    asp memcache 解决缓存问题

    3. **配置组件**:在 ASP 代码中,你需要设置 Memcache 组件的连接参数,如服务器地址、端口号等,以便正确连接到 Memcached 服务。 4. **存取 Session 数据**:使用组件提供的 API,你可以将 session 数据存储到 ...

    memcache软件和+教程

    - **分片策略**:当内存不足时,可以采用哈希分片或一致性哈希策略,将数据分散到多个Memcache实例上。 5. **优化与监控** - **内存管理**:合理设置内存上限,避免因内存耗尽导致的系统不稳定。 - **监控**:...

    memcached 在ASP.NET网站下的应用实例代码(c#)

    标题"memcached 在ASP.NET网站下的应用实例代码(c#)"揭示了本次讨论的主题,即如何在ASP.NET环境中使用memcached作为缓存解决方案,且提供了C#编程语言的实例代码。 描述提到"memcached 在ASP.NET下的应用实例代码,...

    memcache_cache_handler.php for smarty 示例代码

    - 配置Smarty实例,将缓存处理设置为`memcache_cache_handler`。 - 创建并连接到Memcache服务器。 - 设置缓存参数,如过期时间、缓存前缀等。 - 在模板中使用Smarty的缓存控制指令,如`{cache}`。 6. **示例...

    memcache所需要的jar包

    - 配置Memcache的服务器地址和端口,然后在代码中创建并初始化客户端实例,即可开始使用Memcache服务。 6. **使用示例** - 假设我们使用spymemcached,首先引入依赖: ```xml &lt;groupId&gt;net.spy&lt;/groupId&gt; ...

    memcache c#客户端

    在.NET环境中,开发人员通常使用C#客户端来与Memcache服务器进行交互。本篇文章将详细介绍如何在C#中使用Memcache客户端,以及相关的编程技巧。 一、安装C# Memcache客户端库 在C#中,我们可以通过NuGet包管理器...

    php7memcache扩展包+vc14运行库

    在PHP环境中,Memcache扩展允许开发者通过PHP代码与Memcache服务器进行交互,实现数据的快速读取和写入。 PHP7是PHP语言的一个主要版本,引入了大量的性能优化和新特性。相比之前的版本,PHP7显著提高了执行速度,...

    session共享之memcache Redis

    这段代码创建了一个`Memcached`实例,并设置了自定义的Session处理函数,将Session数据的读写操作委托给memcache。 2. **Redis**:与memcache类似,Redis也是内存数据库,但它支持更多数据结构(如字符串、哈希、...

    Java开发中的Memcache原理及实现(带书签)

    在Java开发中使用Memcache,首先需要明确Memcache项目和memcached主程序文件名的区别。Memcache是项目名称,而memcached是服务器端的主程序文件名。在开发中,通常会用到Memcached服务器端程序、Magent代理服务器...

    memcache

    **标题:** Memcache详解 **描述:** Memcache是一种高性能的分布式内存对象缓存系统,它能够将数据存储在内存中,以减少对数据库的访问,...在实际开发中,根据业务场景合理利用Memcache,将大大提升应用的整体效率。

    thinkphp中memcache的用法实例

    安装Memcache后,还需要在PHP的配置文件php.ini中添加一行代码来加载Memcache的PHP扩展,即extension=php_memcache.dll。加载扩展后,重启Apache服务,并通过访问phpinfo.php文件来检查Memcache模块是否成功加载。 ...

    memcache php2.5专用 windows

    在PHP代码中,你可以通过`new Memcache()`创建一个连接实例,然后使用`connect()`或`pconnect()`方法连接到Memcache服务器。接着,你可以使用`set()`、`get()`、`delete()`等方法来操作缓存数据。 例如: ```php $...

    php_memcache-3.0.9 for php7-nts-vc14-x86 扩展DL

    此外,为了与Memcached服务器通信,你还需要在PHP代码中引入`Memcache`类,并创建实例,然后可以使用`connect()`方法连接到Memcached服务器,进行数据的存储和检索。例如: ```php $memcache = new Memcache; $...

    php-5.3.28+memcache

    `创建一个Memcache实例,然后通过`$m-&gt;connect('localhost', 11211)`连接到本地的Memcache服务器。 使用示例: ```php $m = new Memcache; $m-&gt;connect('localhost', 11211); $m-&gt;set('key', 'value', 0, 60); // ...

    Memcached.exe php_memcache.dll 5.3 5.4 5.5

    安装说明及实例代码",提到了在Windows平台上安装这两个组件的过程,以及相关的示例代码。这意味着我们需要安装Memcached服务,然后将对应的`php_memcache.dll`添加到PHP的扩展目录,并在php.ini配置文件中启用该...

    阿里云 专有云企业版 V3.9.0 云数据库 Memcache 版 开发指南 20191017.pdf

    阿里云专有云企业版V3.9.0云数据库Memcache版开发指南是针对该版本的阿里云数据库产品的一份详细技术文档,旨在帮助开发者和用户理解和使用云数据库Memcache服务。Memcache是一种高性能的分布式内存对象缓存系统,常...

    PHP Yii框架开发实例

    ### PHP Yii框架开发实例知识点详解 #### 一、部署Yii环境 **1.1 配置基础环境** - **PHP开发环境**: 在开始使用Yii框架之前,首先要确保PHP开发环境已经搭建完毕。一个典型的PHP开发环境包括Apache作为Web服务器...

    缓存框架-Memcache的例子

    四、Memcache的应用实例 在"memcache_project"这个项目中,我们可以看到如何在实际开发中使用Memcache。通常,开发者会先安装和配置Memcache服务,然后在代码中引入相应的库,如PHP的`php-memcached`扩展。以下是一...

Global site tag (gtag.js) - Google Analytics