java實(shí)現(xiàn)memcache服務(wù)器的示例代碼-創(chuàng)新互聯(lián)

什么是Memcache?

創(chuàng)新互聯(lián)主要從事網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)嶺東,10多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108

Memcache集群環(huán)境下緩存解決方案


Memcache是一個(gè)高性能的分布式的內(nèi)存對(duì)象緩存系統(tǒng),通過在內(nèi)存里維護(hù)一個(gè)統(tǒng)一的巨大的hash表,它能夠用來存儲(chǔ)各種格式的數(shù)據(jù),包括圖像、視頻、文件以及數(shù)據(jù)庫(kù)檢索的結(jié)果等。簡(jiǎn)單的說就是將數(shù)據(jù)調(diào)用到內(nèi)存中,然后從內(nèi)存中讀取,從而大大提高讀取速度?! ?/p>

 Memcache是danga的一個(gè)項(xiàng)目,最早是LiveJournal 服務(wù)的,最初為了加速 LiveJournal 訪問速度而開發(fā)的,后來被很多大型的網(wǎng)站采用?! ?/p>

Memcached是以守護(hù)程序方式運(yùn)行于一個(gè)或多個(gè)服務(wù)器中,隨時(shí)會(huì)接收客戶端的連接和操作


為什么會(huì)有Memcache和memcached兩種名稱?

其實(shí)Memcache是這個(gè)項(xiàng)目的名稱,而memcached是它服務(wù)器端的主程序文件名,知道我的意思了吧。一個(gè)是項(xiàng)目名稱,一個(gè)是主程序文件名,在網(wǎng)上看到了很多人不明白,于是混用了。

Memcached是高性能的,分布式的內(nèi)存對(duì)象緩存系統(tǒng),用于在動(dòng)態(tài)應(yīng)用中減少數(shù)據(jù)庫(kù)負(fù)載,提升訪問速度。Memcached由Danga Interactive開發(fā),用于提升LiveJournal.com訪問速度的。LJ每秒動(dòng)態(tài)頁(yè)面訪問量幾千次,用戶700萬。Memcached將數(shù)據(jù)庫(kù)負(fù)載大幅度降低,更好的分配資源,更快速訪問。


這篇文章將會(huì)涉及以下內(nèi)容:

  1. Java Socket多線程服務(wù)器
  2. Java IO
  3. Concurrency
  4. Memcache特性和協(xié)議

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.


即內(nèi)存緩存數(shù)據(jù)庫(kù),是一個(gè)鍵值對(duì)數(shù)據(jù)庫(kù)。該數(shù)據(jù)庫(kù)的存在是為了將從其他服務(wù)中獲取的數(shù)據(jù)暫存在內(nèi)存中,在重復(fù)訪問時(shí)可以直接從命中的緩存中返回。既加快了訪問速率,也減少了其他服務(wù)的負(fù)載。這里將實(shí)現(xiàn)一個(gè)單服務(wù)器版本的Memcache,并且支持多個(gè)客戶端的同時(shí)連接。

客戶端將與服務(wù)器建立telnet連接,然后按照Memcache協(xié)議與服務(wù)器緩存進(jìn)行交互。這里實(shí)現(xiàn)的指令為get,set和del。先來看一下各個(gè)指令的格式

set


set屬于存儲(chǔ)指令,存儲(chǔ)指令的特點(diǎn)時(shí),第一行輸入基本信息,第二行輸入其對(duì)應(yīng)的value值。

set <key> <flags> <exptime> <bytes> [noreply]\r\n
<value>\r\n


如果存儲(chǔ)成功,將會(huì)返回STORED,如果指令中包含noreply屬性,則服務(wù)器將不會(huì)返回信息。


該指令中每個(gè)域的內(nèi)容如下:

  1. key: 鍵
  2. flags: 16位無符號(hào)整數(shù),會(huì)在get時(shí)隨鍵值對(duì)返回
  3. exptime: 過期時(shí)間,以秒為單位
  4. bytes:即將發(fā)送的value的長(zhǎng)度
  5. noreply:是否需要服務(wù)器響應(yīng),為可選屬性

如果指令不符合標(biāo)準(zhǔn),服務(wù)器將會(huì)返回ERROR。

get


get屬于獲取指令,該指令特點(diǎn)如下:

get <key>*\r\n


它支持傳入多個(gè)key的值,如果緩存命中了一個(gè)或者多個(gè)key,則會(huì)返回相應(yīng)的數(shù)據(jù),并以END作為結(jié)尾。如果沒有命中,則返回的消息中不包含該key對(duì)應(yīng)的值。格式如下:

VALUE <key> <flags> <bytes>\r\n
<data block>\r\n
VALUE <key> <flags> <bytes>\r\n
<data block>\r\n
END
del

分享名稱:java實(shí)現(xiàn)memcache服務(wù)器的示例代碼-創(chuàng)新互聯(lián)
標(biāo)題URL:http://muchs.cn/article12/pdcdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、軟件開發(fā)、全網(wǎng)營(yíng)銷推廣服務(wù)器托管、小程序開發(fā)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)