memcached 使用 java_java中Memcached的使用(包括与Spring整合)

一、什么是Memcached?

Memcached是danga.com开发的分布式内存对象缓存系统,所谓分布式,意味着它不是本地的,而是基于网络连接完成服务。Memcached把一些数据通过key=value数据存储到内存中,这样访问更加方便快捷。但是随之而来的问题是如果Memcached关闭或者Memcached的服务器关闭那么所保存的内容也就没有了。

二、安装Memcached服务端

我是在Win下做的实验。

首先下载Win下的Memcached,解压到指定目录。

memcached.exe -d install 安装memcached服务

然后通过Memcached  start  memcached就启动了。

常用命令:

-p 监听的端口

-l 连接的IP地址, 默认是本机

-d start 启动memcached服务

-d restart 重起memcached服务

-d stop|shutdown 关闭正在运行的memcached服务

-d install 安装memcached服务

-d uninstall 卸载memcached服务

-u 以的身份运行 (仅在以root运行的时候有效)

-m 最大内存使用,单位MB。默认64MB

-M 内存耗尽时返回错误,而不是删除项

-c 最大同时连接数,默认是1024

-f 块大小增长因子,默认是1.25

-n 最小分配空间,key+value+flags默认是48

-h 显示帮助

三、java下使用Memcached(java客户端程序)

目前常用客户端有三种,我使用的是java_memcached-release_2.6.6,该系列是最早推出也应用最为广泛的客户端。

所需全部的jar:commons-pool-1.5.6.jar、java_memcached-release_2.6.6.jar、slf4j-api-1.6.1.jar、slf4j-simple-1.6.1.jar

1、基本使用:

@Test

public void show(){

MemCachedClient client=new MemCachedClient();

//使用的服务器,由于是在本地测试,只有一个服务器地址。默认端口是11211

//格式为 服务器IP:端口号

String [] addr={"127.0.0.1:11211"};

/**

* 设置权重,与设定的服务器一一对应

*/

Integer[] weight={3};

//建立通信的连接池

SockIOPool pool=SockIOPool.getInstance();

//设置连接池可用cache服务器列表,服务器构成形式:ip地址+端口号

pool.setServers(addr);

//设置连接池可用cache服务器的权重,和server数组的位置一一对应

pool.setWeights(weight);

//设置初始连接数

pool.setInitConn(5);

//设置最小连接数

pool.setMinConn(5);

//设置最大连接数

pool.setMaxConn(200);

//设置可用连接的最长等待时间

pool.setMaxIdle(1000*30*30);

//设置连接池维护线程的睡眠时间,设置为0,维护线程不启动

pool.setMaintSleep(30);

//设置Nagle算法,设置为false,因为通讯数据量比较大要求相应及时

pool.setNagle(false);

//设置socket读取等待超时时间

pool.setSocketTO(30);

//设置连接等待超时值

pool.setSocketConnectTO(0);

//设置完参数后,启动pool

pool.initialize();

client.set("value","Ok");

String value= (String) client.get("value");

//设置定时时间2s后消失

client.set("value1","OK2",new Date(2000));

String value2= (String) client.get("value1");

System.out.println(value);

System.out.println(value2);

}

2、spring整合memcached

classpath:property/memcached.properties

init-method="initialize" destroy-method="shutDown">

${memcached.server}

properties配置文件:

#服务器地址

memcached.server=127.0.0.1:11211

#初始连接数目

memcached.initConn=20

#每个服务器建立最大连接数

memcached.maxConn=50

#自查线程周期工作,其每次休眠时间

memcached.maniSleep=3000

#是否使用nagle算法(Socket参数,如果是true,写数据不缓冲,直接发送)

memcached.nagle=false

#Socket阻塞读取数据的超时时间

memcached.socketTO=3000

测试:

@RunWith(SpringJUnit4ClassRunner.class)//表示整合JUnit进行测试

@ContextConfiguration(locations ={"classpath:applicationContext.xml"})

public class SpringTest {

@Test

public void test1(){

MemCachedClient memCachedClient=new MemCachedClient();

memCachedClient.set("username","luck");

String value= (String) memCachedClient.get("username");

System.out.println(value);

}

}

四、个人学习中遇到的问题:

我们通过客户端添加与获得数据,那么这个客户端如何与pool联系的,通过别人的博客找到答案。客户端是通过pool的name关联到某个pool上的。客户端与Pool都没有指定名称的时候,默认是创建名称为“default”的pool,客户端与它关联。如果pool设置了名字,那么客户也要指定名称。

ps:参考博客:http://blog.csdn.net/sup_heaven/article/details/32337711

java_memcached-releasejava_memcached-release常用api:

http://blog.csdn.net/qqiabc521/article/details/6438429

菜鸟一枚,如有不对,敬请指正。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/264584.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P1137 旅行计划

前言: 这是道图论题,当然,搜索也行; 做题的中心我放在拓扑排序上 需要帮助吗(什么是拓扑排序?) 分析: 拓扑排序的模板一个!!! 题目:P1…

[导入]关于阶乘的两个常见算法及一个相关面试题

摘要: 本文首先给出了阶乘的数学定义,然后说明了它的两种简单算法,最后提供了一个很有意思的与阶乘相关的面试题的思路。 阅读全文Anders Cui 2008-05-19 12:12 发表评论文章来源:http://www.cnblogs.com/anderslly/archive/2008/05/19/factorial-algor…

autoresetevent java_[原创]AutoResetEvent, ManualResetEvent的Java模拟

AutoResetEvent, ManualResetEvent是C#中常用的线程同步方法,在Java中可以模拟,AutoResetEvent使用Semaphore,增加的是许可证数量,程序里只有一个许可证,那么当这个许可被使用后,就会自动锁定。相反&#x…

用Jfree实现条形柱状图表,java代码实现

用Jfree实现条形柱状图表,java代码实现。可经经常使用于报表的制作,代码自己主动生成后能够自由查看。能够自由配置图表的各个属性,用来达到自己的要求和目的package test1;import org.jfree.chart.*; import org.jfree.chart.plot.*; import…

bzoj 2160: 拉拉队排练

Description 艾利斯顿商学院篮球队要参加一年一度的市篮球比赛了。拉拉队是篮球比赛的一个看点,好的拉拉队往往能帮助球队增加士气,赢得最终的比赛。所以作为拉拉队队长的楚雨荨同学知道,帮助篮球队训练好拉拉队有多么的重要。拉拉队的选拔工…

java long double精度丢失_long long类型转double类型部分精度丢失问题

我最近做了一道题,一个64位(unsigned __int64)范围内的数输出其除以1000的值,并按四舍五入保留小数点后三位。我刚开始直接写WA,结果发现当数比较大的时候,结果后几位精度总会丢失,只好手动模拟了一个,水过…

从服务器上自动更新系统补丁

对于经常重系统的用户或公司,每次安装系统后,必须得从微软网站上面下载补丁,这样很浪费时间. 如何从自己服务器上自动更新系统补丁,方法如下: 服务器端 服务器端需要安装一个更新服务器软件,如:SUS (下载地址http://www.onlinedown.net/soft/35844.htm) 客户端设置 开始 -- 运行…

搭建于 Cubieboard 之上的超小型实时监控平台 - mjpg篇

2019独角兽企业重金招聘Python工程师标准>>> 运行于 Cubieboard开发板 之上的个人笔记博客 http://cb.e-fly.org:81/archives/system-camera-monitor-mjpg-streamer.html 原文作者:Cannikin原文链接:http://forum.cubietech.com/forum ... p…

java 判断一个字符串是否由数字组成的_Java中怎样判断一个字符串是否是数字

展开全部1.使用Character.isDigit(char)判断String str "123abc";if (!"".equals(str)) {char num[] str.toCharArray();//把字符串转换为字符数组StringBuffer title new StringBuffer();//使用StringBuffer类,把非数e69da5e887aa323131333…

博客园的BLOG也申请了

BLOG申请了不少,但还没定居过------大都不怎么满意. 希望这回能让我安定下来... 20150413转载于:https://www.cnblogs.com/lxwy/archive/2008/05/28/4420771.html

Docker 入坑教程笔记

Docker 入坑教程笔记 视频网址B站:点这里 查询命令 man docker 简单启动和退出 docker run --name [容器名] -i -t ubuntu /bin/bash 交互启动虚拟机-t 提供伪tty终端docker ps [-a][-l]docker inspect [container name or id] 配置信息,有用数据docker …

安卓开发工具

Android 下载需要用到的工具:(1)下载JAVA的IDE开发工具– Eclipse到Eclipse官方网站下载Ecplise For Java EE的最新Windows版本 下载Ecplise(2)下载Java开发包 — Java SE Development Kit (JDK) JDK 6到Sun官方网站下载JDK6,选择JDK 6 Update 12 下载JDK6(3)下载Android开发包…

java http 返回码_【Java】Http返回状态码

来自HttpStatus,记录一下CONTINUE(100, "Continue"),SWITCHING_PROTOCOLS(101, "Switching Protocols"),PROCESSING(102, "Processing"),CHECKPOINT(103, "Checkpoint"),OK(200, "OK"),CREATED(201, "Creat…

启明星辰招聘

呵,好简单的工作。一狠心一咬牙不去了....... 不如现在的工作环镜好。岗位名称:安全工程师 人数:4工作地点:北京 薪水范围:4000-8000元/月投递简历邮箱:hrvenustech.com.cn公司网站:www.venuste…

515. 在每个树行中找最大值

您需要在二叉树的每一行中找到最大的值。 示例&#xff1a; 输入: 1/ \3 2/ \ \ 5 3 9 输出: [1, 3, 9]在真实的面试中遇到过这道题&#xff1f;class Solution {public List<Integer> largestValues(TreeNode root) {List<Integer> res new ArrayList&l…

加密的一些概念

明文&#xff1a;可以被人或程序识别的数据。例如一个文本文件、一段歌词、一个Word文档、一首MP3、一个图片文件、一段视频等等。 加密算法&#xff1a;将数据搞乱掉的方法。 密钥&#xff08;密码&#xff09;&#xff1a;一个你在进行加密操作时给出的字符串&#xff0c;让加…

java有装箱和拆箱吗_Java中装箱和拆箱,你真的都懂么?

在给部门做分享的时候&#xff0c;一位同学提问说一直没搞明白Java的装箱和拆箱&#xff0c;让我给讲解下&#xff0c;所以才有了下面这篇文章&#xff1a;本次文章根据PPT分享整理而成&#xff0c;会有5点&#xff1a;1、什么是装箱和拆箱&#xff1f;2、基本数据类型和包装类…

架构-浅谈MySQL数据库优化

主从复制博文&#xff1a;http://lizhenliang.blog.51cto.com/7876557/1290431 读写分离博文&#xff1a;http://lizhenliang.blog.51cto.com/7876557/1305083 MySQL-MMM博文&#xff1a;http://lizhenliang.blog.51cto.com/7876557/1354576 &#xff08;一&#xff09;数据库部…

项目发布相关

1.证书 cer文件需要上传电脑CSR文件&#xff0c;所以其他电脑如需使用需要创建者导出&#xff0c;用于在项目在真机运行或archive的时候签名&#xff0c;Code Signing Identity. 项目App ID&#xff0c;Provisioning Profile只要有管理员权限就可以申请&#xff0c;与cer文件对…

端午随笔

今天是端午节&#xff0c;我也毕业了正式开始了工作生涯&#xff0c;四年的大学生活画上了句号。面临我是什么&#xff0c;我该何去何从。人生的道路已经脱离自己在大学期间的人生规划。新的开始&#xff0c;就要有新的计划。我在一家公司已经实习了三个月了&#xff0c;我是我…