Java操作memcached(一)
Memcached事实上,两次Hash算法
第一次hash算法被用于定位Memcached示例
第二次hash算法是底部HashMap中间hash算法
Hash算法
1.依据余数来进行计算(事实上java中的HashMap的hash算法也是用的这样的方式)
2.一致性hash算法
C的client --->libMemcached已经实现了该功能,C的开发者直接使用它。
新浪----->Memcachedb 实现了持久化功能
java的client
a官方的 memcached client for java
比較稳定
用了jdk比較早的版本号。性能稍差,而且使用的BIO
b.spyMemcached
NIO,线程池框架
一致性hash
稳定性差,报timeout异常
c.xMemcached
java nio
java 线程池
性能比spyMemcached要好
而且比較稳定,且和spring等框架可以非常好的结合使用
一致性hash
d.淘宝包装的javaclient
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 {
@Test
public void testOne() throws Exception { MemCachedClient client = new MemCachedClient();
//memserver地址
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"));
} @Test
public void two(){
MemCachedClient client = new MemCachedClient();
//memserver地址
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 存进了两台memserver中
假设当中一台宕机了 获取数据的时候不会影响另外一台
假设没有实现一致哈希的话 就会影响其它server 导致全部的数据无法获取
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;
}
@Override
public String toString() {
return "[id:"+this.id+",name"+this.name+"]";
}
}
这是实体类 为了实现系列化
版权声明:本文博主原创文章,博客,未经同意不得转载。
Java操作memcached(一)的更多相关文章
- Java操作Memcached
本文复制其他播客,有好的技术文章希望各位大神能告知... 谢谢. 如何使用Java操作Memcached实例: 代码一: package com.ghj.packageoftool; import j ...
- memcached—Java操作Memcached实例
前面博客介绍了如何在Windows操作系统中安装Memcached,总结一下如何使用Java操作Memcached实例: 代码一: package com.ghj.packageoftool; imp ...
- Java操作memcache
[本文出自天外归云的博客园] 准备工作 Java操作memcache需要spymemcache类库的支持,在Eclipse中修改maven项目的pom.xml文件—— 添加仓库: <reposi ...
- Redis基础知识、命令以及java操作Redis
1 nosql的概念 sql:操作(关系型)数据库的标准查询语言 关系型数据库(rdbms):以关系(由行和列组成的二维表)模型为核心数据库,有表的储存系统.(mysql.oracle.sqlserv ...
- Redis-基本概念、java操作redis、springboot整合redis,分布式缓存,分布式session管理等
NoSQL的引言 Redis数据库相关指令 Redis持久化相关机制 SpringBoot操作Redis Redis分布式缓存实现 Resis中主从复制架构和哨兵机制 Redis集群搭建 Redis实 ...
- Java操作Sqlite数据库-jdbc连接
Java操作Sqlite数据库步骤: 1. 导入Sqlite jdbc 本文使用sqlite-jdbc-3.7.2.jar,下载地址 http://pan.baidu.com/s/1kVHAGdD 2 ...
- 【MongoDB for Java】Java操作MongoDB
上一篇文章: http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html介绍到了在MongoDB的控制台完成MongoDB的数据操作,通过 ...
- Java操作Oracle
public class DBCon { // 数据库驱动对象 public static final String DRIVER = "oracle.jdbc.driver.OracleD ...
- JAVA操作ORACLE数据库的存储过程
一.任务提出 JAVA操作oracle11g存储过程实验需要完成以下几个实例: 1.调用没有返回参数的过程(插入记录.更新记录) 2.有返回参数的过程 3.返回列表的过程 4.返回带分页的列表的过程. ...
随机推荐
- Eclipse常用热键
,Ctrl+D 删除选中的几行 ,Alt+上下箭头 移动选中的代码块 ,Alt+左右箭头 回退 前进 ,Alt+Shift+上下箭头 复制选中的代码块 ,sysout+Ctrl space 生成Sys ...
- Spring——AOP配置时的jar包异常
首先:这不是SSH整合的,这是单独配置Spring AOP的一个小例子. 所需要的jar包:如图: 我在这里出现的两个问题: 1.没有导入asm的jar包. 所报的异常为: java.lang.Cla ...
- python版本wifi共享工具
原先不知道win7系统也可以当作无线路由器,既然知道了这个东西那么就搞搞了 使用python写的一个wifi共享工具,还不够完善,有些功能还没做(说明:internet共享连接需要手动设置)..... ...
- discuz 插件开发 新手入门
作为一个新手,目前也是刚刚玩转discuz的插件功能,好东西不敢独享,就拿出来大家一起分享入门的过程.现在网上很多关于discuz的插件教程都是很简单的教程,原因可能是这个东西是商业化的东西,本着分享 ...
- Java中的反射——(1)什么是反射
Java程序中的各个Java类属于同一类事物,描写叙述这类事物的Java类名就是Class. public class ReflectTest { public static void main(St ...
- App如何选择移动广告平台的开发者3 - 选择标准广告平台
App开发公司.通常他们不能走品牌.要挑品牌的能力,我们将面临两大问题:业务团队.广告填充率.一系列的问题,以现金周期. 无线商务本才刚刚开始,大多数都是没有商业经验.产品.设计.运营.销售的人才都不 ...
- windows phone 三种数据共享的方式(8)
原文:windows phone 三种数据共享的方式(8) 本节实现的内容是数据共享,实现的效果描述:首先是建立两个页面,当页面MainPage通过事件导航到页面SecondPage是,我们需要将Ma ...
- (23)unity4.6学习Ugui中国文档-------非官方Demo1
大家好,我是广东太阳. 转载请注明出处:http://write.blog.csdn.net/postedit/38922399 更全的内容请看我的游戏蛮牛地址:http://www.unitym ...
- paip.关于动画效果的原则 html js 框架总结
paip.关于动画效果的原则 html js 框架总结 1. 动画框架的来源:flex,jqueryui 3 2. 特效的分类 3 2.1. Property effects 动态改变一个或多个目标对 ...
- 间隔DP基础 POJ2955——Brackets
取血怒.first blood,第一区间DP,这样第一次没有以某种方式在不知不觉中下降~~~ 题目尽管是鸟语.但还是非常赤裸裸的告诉我们要求最大的括号匹配数.DP走起~ dp[i][j]表示区间[i, ...