Memcache缓存系统构建一
在如今这个高效率的社会中,怎样将这个高效率应用到自己的程序中,是一个值得追寻和值得探讨的问题。因为这个memcache能够很好的提高检索速度,提升用户体验,而且重要的是减少数据库的访问。这就大大的提高了整个应用系统的档次。因此,在应用程序的开发中加入这样的一个技术无疑是给自己的程序锦上添花。瞬间就会显得高大上,像现在很多的web应用,都将一些基础信息直接放到远程缓存系统中,而且该缓存中的key的有效时间也是可以进行任意设定的。这就显得更加人性化,用起来更加方便!好了,废话不多说,实践是检验真理的唯一标准。
作者:itRed 邮箱:it_red@sina.com 博客:http://www.cnblogs.com/itred
一.关于Memcache:
我认为在正式开始操作memcache之前还是应该了解一下即将要操作的这个是什么。Memcached基于一个存储键/值对的hashmap。其守护进程是用C语言写的,但是客户端的应用操作上是可以用任何语言编写,并通过memcached协议与守护进程通信。服务器端可以是windows,也可以是Linux。本博文将先介绍在windows下搭建和配置缓存服务器系统,在后面的博文中再进行介绍在linux中的安装和配置。
memcached是高性能的分布式内存缓存服务器。相当于开辟一大块儿内存用来存储,一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。
Memcached的官网:http://memcached.org/ ,任何版本和一些操作api都可以从上面下载。
二.安装服务器端:
- 首先需要下载memcache的windows稳定版。即:有memcache.exe的文件,而这个的安装并不是直接在windows下双击就开始安装了,而是需要在dos命令行下,进行命令行形式的安装;
- 将下载后的文件放到一个较近路径下,这样在dos下操作比较方便,我直接放到e盘目录下的memcached文件夹下的memcached121文件夹下中;
- 安装过程,首先是找到自己机器上的cmd.exe文件的路径,一般情况下,windows中cmd.exe是在C盘/Windows/System32的文件中。直接进入这个文件中,然后找到cmd.exe,鼠标右键,以管理员身份运行这个程序,在打开的dos窗口中,输入以下命令进行安装:
>E:
>cd memcached
>cd memcached121
>memcached.exe –d install
>memcached.exe –d start
安装过程如图示:

4. 验证安装是否成功:
待安装完成后,需要验证自己的memcache是否安装成功,这个时候,打开windows的服务界面就可以查看到安装后的memcache是否在列表中,并且可以看到该服务是否已经启动。
效果如图:

5. 此时安装已经完成,我们可以先在dos下体验一下缓存服务器的作用。打开dos窗口,输入以下命令:
>telnet 127.0.0.1
注意这个的默认端口是11211

输入完成,确认后会进入缓存服务器的界面,然后就 可以用命令进行操作了。
基础命令:
格式:<command name> <key> <flags> <exptime> <bytes>
<data block>
解释:
|
<command name> |
set/add/replace/get 等 |
|
<key> |
查找关键字 |
|
<flags> |
客户机使用它存储关于键值对的额外信息 |
|
<exptime> |
该数据的存活时间,0表示永远 |
|
<bytes> |
存储字节数 |
|
<data block> |
存储的数据块(可直接理解为key-value结构中的value) |
图示:
在缓存服务器上存储username,有效时间是20s,当我在20秒时间内输入get username 时,就会得到最开始设置的那个itRed值。相当于就是key-value ====》username-itRed (键值对);但是,当username的有效期已经过了时,即超过20秒后,我再去取username的值时就会出现END,NULL空值。因为已经失效。如下图所示:

6. 接下来需要做的事用java程序进行操作:
在myeclipse中新建一个java工程,导入jar包。如图示:

贴出测试的源代码,附上代码注释。运行后的测试结果完全和在dos下操作一样。测试方法,运行程序后,在dos中用get方法查看是否能拿到开始设置的值。
package com.red.memcached; import java.util.Date;
import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool; public class Cache { public static void main(String[] args) { MemCachedClient memcacheClient = new MemCachedClient();
String[] address = { "127.0.0.1:11211" };//缓存服务器列表
Integer[] weights = { 3 };
SockIOPool pool = SockIOPool.getInstance();
pool.setServers(address);
pool.setWeights(weights);
pool.setInitConn(5);
pool.setMinConn(5);
pool.setMaxConn(200);
pool.setMaxIdle(1000 * 30 * 30); // 设置可用连接池的最长等待时间
pool.setMaintSleep(30);
pool.setNagle(false); // 设置是否使用Nagle算法,因为我们的通讯数据量通常都比较大(相对TCP控制数据)而且要求响应及时,因此该值需要设置为false(默认是true)
pool.setSocketTO(30);// 设置socket的读取等待超时值
pool.setSocketConnectTO(0);
pool.initialize();
// 将数据放入缓存
memcacheClient.set("username", "Red"); // 将数据放入缓存,并设置失效时间
Date date = new Date(2000000);
memcacheClient.set("user", "itRed", date); // 删除缓存数据
// memcacheClient.delete("user");
// memcacheClient.delete("username"); // 获取缓存数据
String str = (String) memcacheClient.get("username");
System.out.println(str);
}
}
这个案例只是用java语言实现,其实是用memcached的客户端可以用任何语言进行实现,如果你看懂了这个程序,但是你不知道如何将这个缓存加入到你的程序中?其实这是很好办的,只需要将这个demo放入工具包中,将这个demo作为一个工具类,需要用的时候,只需要将这个调用这个方法就可以了。很简单,是吧!哈哈。在下一篇博文中就会介绍在linux环境下搭建一个和这个一样的memcached缓存系统。两种相比之下,其实我认为第二种应该是目前很多公司都会采用的。
作者:itRed
邮箱:it_red@sina.com
博客:http://www.cnblogs.com/itred
***版权声明:本文版权归作者和博客园共有,欢迎转载,但请在文章显眼位置标明文章出处。未经本人书面同意,将其作为他用,本人保留追究责任的所有权利。
Memcache缓存系统构建一的更多相关文章
- 云计算openstack共享组件——Memcache 缓存系统
一.缓存系统 静态web页面: 1.工作流程: 在静态Web程序中,客户端使用Web浏览器(IE.FireFox等)经过网络(Network)连接到服务器上,使用HTTP协议发起一个请求(Reques ...
- 云计算openstack共享组件(2)——Memcache 缓存系统
一.缓存系统 在大型海量并发访问网站及openstack等集群中,对于关系型数据库,尤其是大型关系型数据库,如果对其进行每秒上万次的并发访问,并且每次访问都在一个有上亿条记录的数据表中查询某条记录时, ...
- memcache缓存系统
一.缓存系统 静态web页面: 1.在静态Web程序中,客户端使用Web浏览器(IE.FireFox等)经过网络(Network)连接到服务器上,使用HTTP协议发起一个请求(Request),告诉服 ...
- OpenStack共享组件-Memcache缓存系统
1. 缓存系统 1.1 静态web页面 1> 在静态Web程序中,客户端使用Web浏览器(IE.FireFox等)经过网络(Network)连接到服务器上,使用HTTP协议发起一个请求(Requ ...
- 云计算共享组件--Memcache缓存系统(4)
一.缓存系统 一.静态web页面: 1.在静态Web程序中,客户端使用Web浏览器(IE.FireFox等)经过网络(Network)连接到服务器上,使用HTTP协议发起一个请求(Request),告 ...
- openstack共享组件——Memcache 缓存系统(4)
云计算openstack共享组件——Memcache 缓存系统(4) 一.缓存系统 一.静态web页面: 1.在静态Web程序中,客户端使用Web浏览器(IE.FireFox等)经过网络(Netw ...
- 云计算openstack共享组件——Memcache 缓存系统(4)
一.缓存系统 一.静态web页面: 1.在静态Web程序中,客户端使用Web浏览器(IE.FireFox等)经过网络(Network)连接到服务器上,使用HTTP协议发起一个请求(Request),告 ...
- 云计算OpenStack共享组件---Memcache缓存系统(3)
一.缓存系统 1.静态web页面: (1)在静态Web程序中,客户端使用Web浏览器(IE.FireFox等)经过网络(Network)连接到服务器上,使用HTTP协议发起一个请求(Request), ...
- Memcache缓存系统原理
在Web服务开发中,服务端缓存是服务实现中所常常采用的一种提高服务性能的方法.其通过记录某部分计算结果来尝试避免再次执行得到该结果所需要的复杂计算,从而提高了服务的运行效率. 除了能够提高服务的运行效 ...
随机推荐
- JavaScript function函数种类
本篇主要介绍普通函数.匿名函数.闭包函数 目录 1. 普通函数:介绍普通函数的特性:同名覆盖.arguments对象.默认返回值等. 2. 匿名函数:介绍匿名函数的特性:变量匿名函数.无名称匿名函数. ...
- video.js
1.github地址 2.常用API: class : video-js: video-js应用视频所需的风格.js功能,比如全屏和字幕. vjs-default-skin: vjs-default- ...
- 深入理解BFC
定义 在解释BFC之前,先说一下文档流.我们常说的文档流其实分为定位流.浮动流和普通流三种.而普通流其实就是指BFC中的FC.FC是formatting context的首字母缩写,直译过来是格式化上 ...
- 苹果强制使用HTTPS传输了怎么办?——关于HTTPS,APP开发者必须知道的事
WeTest 导读 2017年1月1日起,苹果公司将强制使用HTTPS协议传输.本文通过对HTTPS基础原理和通信过程内容的讲解,介绍APP开发者在这个背景下的应对办法. 几周前,我们在<htt ...
- 谈谈一些有趣的CSS题目(五)-- 单行居中,两行居左,超过两行省略
开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉 ...
- 微软发布VSBT,无需安装Visual Studio即可实现项目编译
安装了Visual Studio的那些使用微软平台的开发者通常能够非常容易地操作自己的项目:打开解决方案,修改内容,设置好所有必须的文件以及配置后编译项目.但是在构建服务器或者持续交付系统等没有安装V ...
- C#~异步编程再续~await与async引起的w3wp.exe崩溃-问题友好的解决
返回目录 关于死锁的原因 理解该死锁的原因在于理解await 处理contexts的方式,默认的,当一个未完成的Task 被await的时候,当前的上下文将在该Task完成的时候重新获得并继续执行剩余 ...
- isEmpty和isNull()区别
isEmpty和isNull()区别一个NULL字符串一定是一个空串,一个空串未必是一个NULL字符串例如:QString().isNull(): //结果为trueQString().isEm ...
- 简单酷炫的canvas动画
作为一个新人怀着激动而紧张的心情写了第一篇帖子还请大家多多支持,小弟在次拜谢. 驯鹿拉圣诞老人动画效果图如下 html如下: <div style="width:400px;heigh ...
- Android—基于微信开放平台v3SDK,开发微信支付填坑。
接触微信支付之前听说过这是一个坑,,,心里已经有了准备...我以为我没准跳坑出不来了,没有想到我填上了,调用成功之后我感觉公司所有的同事都是漂亮的,隔着北京的大雾霾我仿佛看见了太阳~~~好了,装逼结束 ...