java缓存(4、memcached)

概述

之前学习.net缓存的时候,已经讲过memcached,对于其集群、并发和内存回收等问题,都讲过,这里不再赘述,有兴趣的可以看这篇博客:分布式缓存Memcache和Redis。本篇主要讲解是使用java语言操作memcached。

memcached的demo

添加第三方jar

java_memcached-release.jar;commons-pool.jar;slf4j-api.jar;slf4j-simple.jar(demo)

程序

package com.tgb.testmemcached;

import java.util.Date;

import org.junit.Before;
import org.junit.Test;

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

public class TestMemcachedClient {
	SockIOPool sockIOPool = SockIOPool.getInstance();
	MemCachedClient memCacheClient = new MemCachedClient();

	@Before
	public void init(){
		String[] servers = {"192.168.24.131:11211"};
		Integer[] weights ={3};

		sockIOPool.setServers(servers);
		sockIOPool.setWeights(weights);
		sockIOPool.setInitConn(5);
		sockIOPool.setMinConn(5);
		sockIOPool.setMaxConn(20);
		sockIOPool.setMaxIdle(1000*60*60*6);
		sockIOPool.setMaintSleep(30);
		sockIOPool.setNagle(false);
		sockIOPool.setSocketTO(3000);
		sockIOPool.setSocketConnectTO(0);
		sockIOPool.initialize();

//		memCacheClient.setCompressEnable(true);
//		memCacheClient.setCompressThreshold(64*1024);
	}

	@Test
	public void testAdd(){
		//将数据放入缓存
		memCacheClient.set("test1", "test1");

		//将数据放入缓存,并设置失效时间
		Date date = new Date(2000000);
		memCacheClient.set("test2", "test2",date);

		System.out.println("添加成功");
	}

	@Test
	public void testGet(){
		String strValue1 = memCacheClient.get("test1").toString();
		String strValue2 = memCacheClient.get("test2").toString();
		System.out.println(strValue1 + "   "  + strValue2);
	}

	@Test
	public void testDelete(){
		boolean flag = memCacheClient.delete("test1");
		System.out.println(flag);
		String strValue1 = memCacheClient.get("test1").toString();
		System.out.println(strValue1);
	}

	@Test
	public void testAdd2(){
		//不对key做编码
		memCacheClient.setSanitizeKeys(false);

		memCacheClient.add("[email protected]", "青山");
		String strName = memCacheClient.get("[email protected]").toString();
		System.out.println(strName);
	}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-29 19:07:28

java缓存(4、memcached)的相关文章

分布式缓存(MemCached)

最近在为找工作做准备,就看了好多.NET基础知识,发现很多关于页面之间传值的方式,其中就有Session,但也发现Session在实际使用过程中有很多问题.最典型也最重要大的BUG就是如果IIS中同时有很多进程发生时,内存不够用那么有垃圾回收机制,就会导致Session的丢失.解决方法有:可以用Sate Server或SQL Server数据库的方式存储Session,可是这两种方式都有个缺点就是处理速度慢,无法捕获END事件.因此,我便想那么还有什么方式可以解决这一问题呢? 结果就是使用分布式

获取返回浏览器的内容 —— Java 缓存的使用

零. 引言 为什么使用缓存? 当网站流量逐渐增大, 数据库 IO 将比较早出现瓶颈, 而使用缓存, 可以使数据库瓶颈晚点到来, 从而提升网站性能. Java Web 项目如何使用缓存? 缓存首先是要获取返回给页面的内容, 然后写入缓存(MemCached. Redis等缓存), 本文使用 MemCached 作为示例. 二. 代码示例 要截获页面返回的内容,整体的思路是先把原始返回的页面内容写入到一个字符Writer,然后再组装成字符串并进行分析,最后再返回给客户端.代码如下: 用于包装 Ser

Java程序使用memcached配置与示例

Memcached作为一款很强大的分布式缓存,经常被用到大型的互联网应用中,比如新浪微博等都采用memcached做缓存. Memcached也经常和MySQL组合做数据缓存. 具体的介绍请参考官方网站:www.memcached.org 这里通过安装配置Memcached,并通过Java客户端来使用memcached进行存储和读取缓存数据. 环境: Ubuntu10.04 Java1.6 如果没有安装libevent,先安装 (1) 安装libevent (apt-get install的:l

java中一个memcached案例

下面先来一个网络上的案例,这个案例比较简单,直接在类中进行一些参数的配置,具体代码如下: package com.wzpmt; import java.util.ArrayList; import java.util.Date; import java.util.List; import com.danga.MemCached.MemCachedClient; import com.danga.MemCached.SockIOPool; public class MemCachedManager

java缓存(1、概述)

概述 对于程序员来说,听到缓存,一定会非常的亢奋,因为这年代,你去找工作,说不知道缓存,没用过缓存,都不好意思说自己是程序员,所以说缓存时一个非常热的话题,今天就讲一下自己关于缓存的理解,希望对于对大家有相应的帮助. 缓存概念 学习一个东西,我们首先应该清楚他是什么,那么,缓存到底是什么呢?缓存就是内存里面用于存放数据的空间,即,缓存就是内存.缓存的目的是什么呢?缓存就是为了优化程序查询IO数据,将程序经常从IO中查询的数据,保存到内存中,使程序直接操作内存即可获得数据,优化了程序等待IO数据的

Java 缓存技术

以下仅是对map对方式讨论.没有对点阵图阵讨论.作缓存要做以下2点:  1:清理及更新缓存时机的处理: . 虚拟机内存不足,清理缓存 .. 缓存时间超时,或访问次数超出, 启动线程更新 2:类和方法的反射 (线程嵌套调用) reflect.invoke的使用. JAVA缓存有两种: 一.文件缓存,是指把数据存储在磁盘上,可以XML格式,也可以序列化文件DAT格式还是其它文件格式. 二.内存缓存,也就是实现一个类中静态Map,对这个Map进行常规的增删查. 代码如下:内存中的缓存 package

(转)java缓存技术,记录

http://blog.csdn.net/madun/article/details/8569860 最近再ITEYE上看到关于讨论JAVA缓存技术的帖子比较多,自己不懂,所以上网大概搜了下,找到一篇,暂作保存,后面如果有用到可以参考.此为转贴,帖子来处:http://cogipard.info/articles/cache-static-files-with-jnotify-and-ehcache 介绍 JNotify:http://jnotify.sourceforge.net/,通过JNI

高性能的分布式内存对象缓存系统Memcached

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信. 外文名 memcached 所    属 缓存系统 编写语言 不限 通信手段 memcached协议 目录 1功能 2特征 ? 协议 ? 事件处

Java缓存

Java中要用到缓存的地方很多,首当其冲的就是持久层缓存,针对持久层谈一下: 要实现java缓存有很多种方式,最简单的无非就是static HashMap,这个显然是基于内存缓存,一个map就可以搞定引用对象的缓存,最简单也最不实用,首要的问题就是保存对象的有效性以及周期无法控制,这样很容易就导致内存急剧上升,周期无法控制可以采用SoftReference,WeakReference,PhantomReference这三种对象来执行(看了Ibatis的缓存机制才发现JDK居然还提供了Phanto