java使用memcached

目录

什么是Memcached?

java如何链接memcached客户端?

1.java memcached client

1.1导入memcached的jar相关的jar包

1.2编写连接memcached客户端程序

1.3MemCachedClient的api

2.Xmemcached

2.1导入xmemcached和slf4j的jar包

2.2编写连接程序

3.SpyMemcached

3.1导入SpyMemcached的jar包

3.2编写连接程序

总结:


什么是Memcached?

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

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

2.Memcached简洁而强大。它的简洁设计便于快速开发,减轻开发难度,解决了大数据量缓存的很多问题。它的API兼容大部分流行的开发语言。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。

 

java如何链接memcached客户端?

1.java memcached client

1.1导入memcached的jar相关的jar包

  • 下载地址 

  • 由于目前java memcached client没有官方的maven repository可供使用,因此使用时需要手动将其安装到本地repository。将下载好的memcached进行解压,然后编写一个pom文件,引用memcached所需要的其他的jar包,然后将memcached的jar安装到自己maven仓库。安装语句:mvn install:install-file -Dfile=F:\memcached\java_memcached-release_2.6.6.jar -DpomFile=F:\memcached\pom.xml

pom文件的内容

<?xml version="1.0" encoding="UTF-8"?>  
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"  
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  
 <modelVersion>4.0.0</modelVersion>
  <groupId>com.hello</groupId>
  <artifactId>memcached</artifactId>
  <version>2.6.6</version>
  <packaging>war</packaging>  
<dependencies>  
   <dependency>  
	   <groupId>com.danga</groupId>  
	  <artifactId>java-memcached</artifactId>  
	  <version>2.6.6</version> 
  </dependency> 
  <dependency>  
    <groupId>org.slf4j</groupId>  
    <artifactId>slf4j-simple</artifactId>  
    <version>1.6.1</version>  
  </dependency>  
  <dependency>  
    <groupId>org.slf4j</groupId>  
    <artifactId>slf4j-api</artifactId>  
    <version>1.6.1</version>  
  </dependency>  
  <dependency>  
    <groupId>commons-pool</groupId>  
    <artifactId>commons-pool</artifactId>  
    <version>1.5.6</version>  
  </dependency>  
</dependencies>  
</project>

1.2编写连接memcached客户端程序


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

public class Test {
	public static void main(String[] args) {

		MemCachedClient cachedClient = new MemCachedClient();
		// 设置连接池
		SockIOPool sockIOPool = SockIOPool.getInstance();

		// 服务器地址
		String servers[] = new String[] { "127.0.0.1:11211" };
		sockIOPool.setServers(servers);
		// 最大连接数
		sockIOPool.setMaxConn(50);
		// 最小连接数
		sockIOPool.setMinConn(10);
		// 初始化连接数
		sockIOPool.setInitConn(20);
		// 自查线程周期进行工作,其每次休眠时间
		sockIOPool.setMaintSleep(3000);
		// Socket阻塞建立连接的等待时间
		sockIOPool.setSocketConnectTO(3000);
		// Socket阻塞读取数据的超时时间
		sockIOPool.setSocketTO(3000);
		// 如果是true在写数据时不缓冲,立即发送出去
		sockIOPool.setNagle(false);
		sockIOPool.initialize();
		
		if (cachedClient != null) {// 为null,则表示连接不上
			boolean flag = cachedClient.set("hello", "world");
			System.out.println(flag);// 为true则插入成功
			//查找key为hello的值
			System.out.println(cachedClient.get("hello"));
		}
	}
}

1.3MemCachedClient的api

            // 插入(如果key存在,则替换,不存在,则新增)
			cachedClient.set("hello", "world", new Date(3000));
			// 新增(key存在则返回false)
			cachedClient.set("nihao", 100);
			//替换
			cachedClient.replace("nihao", 1000);
			// 查询
			Object object = cachedClient.get("hello");
			//查一组数据
			Map<String, Object> objects = cachedClient.getMulti(new String[] {"nihao","hello"});
			// 初始化一个计数器
			cachedClient.storeCounter("count", 10L);
			// 计数器增量操作
			cachedClient.addOrDecr("count");
			// 计数器减量操作
			cachedClient.addOrIncr("count");

2.Xmemcached

2.1导入xmemcached和slf4j的jar包

2.2编写链接程序

api与java memcached client的差不多

import java.io.IOException;
import java.util.concurrent.TimeoutException;

import net.rubyeye.xmemcached.MemcachedClient;
import net.rubyeye.xmemcached.MemcachedClientBuilder;
import net.rubyeye.xmemcached.XMemcachedClientBuilder;
import net.rubyeye.xmemcached.exception.MemcachedException;
import net.rubyeye.xmemcached.utils.AddrUtil;

public class Test2 {
	public static void main(String[] args)
			throws IOException, TimeoutException, InterruptedException, MemcachedException {
		MemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil.getAddresses("127.0.0.1:11211"));
		MemcachedClient client = builder.build();
		Object object = client.get("hello");
		System.out.println(object);
	}
}

3.SpyMemcached

3.1导入xmemcached和slf4j的jar包

3.2编写链接程序

import java.io.IOException;
import java.net.InetSocketAddress;

import net.spy.memcached.MemcachedClient;

public class Test3 {
	public static void main(String[] args) throws IOException {
		MemcachedClient memcacheCient = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211));
	
	}
}

总结:

memcached的特点:

  1. 全内存运转
  2. 哈希方式存储
  3. 简单文本协议进行数据通信
  4. 只操作字符型数据
  5. 其它类型数据由应用解释,序列化以及反序列化
  6. 集群也由应用进行控制,采用一致性散列(哈希)算法

Memcached的缺点

  • 纯内存操作,关机后数据全部丢失
  • 保存字节数据,数据类型贫乏
  • LRU算法导致数据不可控的丢失
  • 一致性处理简单
  • 应用端太厚,服务器端太薄
  • 应用场景有限,难以被看成是完整的数据库产品

API的实现总结

Java Memcache Client for Java应用最广泛,也是当前最稳定的客户端, 在线上系统大量的使用此客户端。特点: 较早推出的memcached JAVA客户端API,应用广泛,运行比较稳定,使用阻塞IO,不支持CAS操作。

SpyMemecache基于Java NIO的客户端,存取速度会高于前者,但是稳定性不好,测试中常报timeOut等相关异常,支持CAS操作。

XMemcached同样是基于Java NIO的客户端,Java NIO相比于传统阻塞IO模型来说,有效率高(特别在高并发下)和资源耗费相对较少的优点。

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Java连接和使用Memcached(内存缓存数据库)在Windows操作系统上进行如下步骤: 1. 首先,确保你已经在Windows上安装了Java开发环境(JDK)和Memcached服务。你可以从官方网站上下载并安装它们。 2. 打开Memcached服务:在Windows命令提示符中,输入`memcached -d start`命令来启动服务。这将在默认端口(11211)上启动Memcached服务。 3. 在Java代码中添加对Memcached客户端库的依赖。你可以使用一些流行的Java库(如Spymemcached或Xmemcached)来连接和操作Memcached。 4. 在Java代码中创建Memcached客户端连接对象。这个对象将被用来执行与Memcached的交互操作,比如存储和获取数据。示例代码如下: ```java import net.spy.memcached.MemcachedClient; // 创建连接对象 MemcachedClient memcachedClient = new MemcachedClient(new InetSocketAddress("localhost", 11211)); ``` 5. 使用创建的Memcached客户端对象进行相关操作。例如,你可以使用`set`方法来存储数据,并使用`get`方法来获取已存储的数据。示例代码如下: ```java // 存储数据 memcachedClient.set("key", 3600, "value"); // 获取数据 Object value = memcachedClient.get("key"); System.out.println(value); ``` 6. 最后,在代码结束时关闭Memcached客户端连接。这可以通过调用`shutdown`方法来实现。示例代码如下: ```java // 关闭连接 memcachedClient.shutdown(); ``` 通过遵循以上步骤,你可以在Windows上使用Java连接和使用Memcached进行数据缓存操作。记得在开发过程中,要检查和处理异常情况,以确保代码的正确执行。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值