Java操作memcached(一)
来源:互联网 发布:网络的特点有哪些 编辑:程序博客网 时间:2024/05/22 14:29
Memcached实际上就是两次Hash算法
第一次hash算法是用来定位Memcached实例的
第二次hash算法是底层HashMap中的hash算法
Hash算法
1.根据余数来进行计算(其实java中的HashMap的hash算法也是用的这种方式)
2.一致性hash算法
C的客户端 --->libMemcached已经实现了该功能,C的开发人员直接使用它。
新浪----->Memcachedb 实现了持久化功能
java的客户端
a官方的 memcached client for java
比较稳定
用了jdk比较早的版本,性能稍差,并且使用的BIO
b.spyMemcached
NIO,线程池框架
一致性hash
稳定性差,报timeout异常
c.xMemcached
java nio
java 线程池
性能比spyMemcached要好
并且比较稳定,且和spring等框架能够很好的结合使用
一致性hash
d.淘宝包装的java客户端
java nio
线程池框架
cluster机制
这是实体类 要实现序列化
第一次hash算法是用来定位Memcached实例的
第二次hash算法是底层HashMap中的hash算法
Hash算法
1.根据余数来进行计算(其实java中的HashMap的hash算法也是用的这种方式)
2.一致性hash算法
C的客户端 --->libMemcached已经实现了该功能,C的开发人员直接使用它。
新浪----->Memcachedb 实现了持久化功能
java的客户端
a官方的 memcached client for java
比较稳定
用了jdk比较早的版本,性能稍差,并且使用的BIO
b.spyMemcached
NIO,线程池框架
一致性hash
稳定性差,报timeout异常
c.xMemcached
java nio
java 线程池
性能比spyMemcached要好
并且比较稳定,且和spring等框架能够很好的结合使用
一致性hash
d.淘宝包装的java客户端
java nio
线程池框架
cluster机制
结合本地缓存
接下来我们使用第一种
这是需要的jar
package com.chengxi.memc.test;import org.junit.Test;import com.danga.MemCached.MemCachedClient;import com.danga.MemCached.SockIOPool;public class MemcachedTest01 {@Testpublic void testOne() throws Exception {MemCachedClient client = new MemCachedClient();//mem服务器地址String[] addr = {"192.168.0.140:11211"};//对应的权重Integer[] weight = {3};SockIOPool pool = SockIOPool.getInstance();pool.setServers(addr);pool.setWeights(weight);pool.setInitConn(5);pool.setMinConn(5);pool.setMaxConn(200);pool.setMaxIdle(1000*30*30);pool.setMaintSleep(30);//socket param timeout pool.setNagle(false);pool.setSocketTO(30);pool.setSocketConnectTO(0);//start pool.initialize();//client.set("name", "wzh");//System.out.println(client.get("name"));Student student = new Student();student.setId(1);student.setName("呵呵");client.set("student1",student);System.out.println(client.get("student1"));}@Testpublic void two(){MemCachedClient client = new MemCachedClient();//mem服务器地址String[] addr = {"192.168.0.140:11211","192.168.0.140:11212"};//对应的权重Integer[] weight = {5,5};SockIOPool pool = SockIOPool.getInstance();pool.setServers(addr);pool.setWeights(weight);pool.setInitConn(5);pool.setMinConn(5);pool.setMaxConn(200);pool.setMaxIdle(1000*30*30);pool.setMaintSleep(30);//socket param timeout pool.setNagle(false);pool.setSocketTO(30);pool.setSocketConnectTO(0);//start pool.initialize();for(int i = 0;i<10;i++){client.set("test"+i,"test"+i);}}}
官方的jar包实现了 哈希一致性
也就是说 上面的 two的方法 分别将test0-9 存进了两台mem服务器中
如果其中一台宕机了 获取数据的时候不会影响另外一台
如果没有实现一致哈希的话 就会影响其他服务器 导致所有的数据无法获取
package com.chengxi.memc.test;import java.io.Serializable;public class Student implements Serializable {private Integer id;private String name;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "[id:"+this.id+",name"+this.name+"]";}}
这是实体类 要实现序列化
1 0
- Java操作memcached(一)
- memcached—Java操作Memcached
- java操作MemCached
- MemCached java 操作
- Java操作memcached
- Java操作memcached
- java操作memcached 例子
- Java操作memcached
- Java操作memcached
- java操作Memcached
- memcached 学习(一)
- memcached(一)--安装
- java操作memcached入门教程demo代码
- java对Memcached的基本操作
- java代码链接memcached集群,操作实例
- memcached的使用(一)
- Memcached 内存管理(一)
- Memcached命令列表(一)
- MFC中添加GIF图片
- Android异步消息机制
- C++类型转换总结
- 纽约大学黑客马拉松之行
- d
- Java操作memcached(一)
- 嵌入式开发 Ubuntu 配置
- git 分支
- 第12周偶oj项目2分离正整数
- Java中注解
- Eclipse+Maven+Spring+CXF 构建webservice 服务
- 第一篇CSDN博客
- IOS 推送消息 php做推送服务端
- Leetcode:N-Queens II