java实现memcache服务器的示例代码-创新互联

什么是Memcache?

创新互联主要从事网站建设、网站制作、网页设计、企业做网站、公司建网站等业务。立足成都服务岭东,10多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108

Memcache集群环境下缓存解决方案


Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。  


 Memcache是danga的一个项目,最早是LiveJournal 服务的,最初为了加速 LiveJournal 访问速度而开发的,后来被很多大型的网站采用。  


Memcached是以守护程序方式运行于一个或多个服务器中,随时会接收客户端的连接和操作


为什么会有Memcache和memcached两种名称?

其实Memcache是这个项目的名称,而memcached是它服务器端的主程序文件名,知道我的意思了吧。一个是项目名称,一个是主程序文件名,在网上看到了很多人不明白,于是混用了。

Memcached是高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。Memcached由Danga Interactive开发,用于提升LiveJournal.com访问速度的。LJ每秒动态页面访问量几千次,用户700万。Memcached将数据库负载大幅度降低,更好的分配资源,更快速访问。


这篇文章将会涉及以下内容:

  1. Java Socket多线程服务器
  2. Java IO
  3. Concurrency
  4. Memcache特性和协议

Memcache


Memcache is an in-memory key-value store for small chunks of arbitrary data (strings, objects) from results of databasecalls, API calls, or page rendering.


即内存缓存数据库,是一个键值对数据库。该数据库的存在是为了将从其他服务中获取的数据暂存在内存中,在重复访问时可以直接从命中的缓存中返回。既加快了访问速率,也减少了其他服务的负载。这里将实现一个单服务器版本的Memcache,并且支持多个客户端的同时连接。

客户端将与服务器建立telnet连接,然后按照Memcache协议与服务器缓存进行交互。这里实现的指令为get,set和del。先来看一下各个指令的格式

set


set属于存储指令,存储指令的特点时,第一行输入基本信息,第二行输入其对应的value值。

set [noreply]\r\n
\r\n


如果存储成功,将会返回STORED,如果指令中包含noreply属性,则服务器将不会返回信息。


该指令中每个域的内容如下:

  1. key: 键
  2. flags: 16位无符号整数,会在get时随键值对返回
  3. exptime: 过期时间,以秒为单位
  4. bytes:即将发送的value的长度
  5. noreply:是否需要服务器响应,为可选属性

如果指令不符合标准,服务器将会返回ERROR。

get


get属于获取指令,该指令特点如下:

get *\r\n


它支持传入多个key的值,如果缓存命中了一个或者多个key,则会返回相应的数据,并以END作为结尾。如果没有命中,则返回的消息中不包含该key对应的值。格式如下:

VALUE   \r\n
\r\n
VALUE   \r\n
\r\n
END
del

分享名称:java实现memcache服务器的示例代码-创新互联
文章出自:http://scyanting.com/article/pdcdc.html