999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Redis在外勤通系統(tǒng)高速緩存中的應用研究

2014-07-02 18:04:45李彬朱亞興
無線互聯(lián)科技 2014年1期

李彬 朱亞興

摘 要:本文基于Redis的高速緩存機制在外勤通系統(tǒng)中的應用進行了研究,詳細說明了Redis這個高速緩存數(shù)據(jù)庫的支持持久化,豐富的數(shù)據(jù)結構,主從復制以及Virtual Memory功能等特性。

關鍵詞:Redis;Memcached;高速緩存

1 引言

在低碳經(jīng)濟的時代背景下,全球各大行業(yè)都在尋求節(jié)能、環(huán)保、高效的管理模式。這既是保證企業(yè)正常生產經(jīng)營,實現(xiàn)公司健康可持續(xù)發(fā)展的長久之計,也是企業(yè)適應市場需要,降低成本,增加效益,改善環(huán)境,提高企業(yè)競爭力的必要選擇。我們開發(fā)的外勤通系統(tǒng)就是遵循綠色辦公的宗旨,為所有具有外巡,外服的戶外工作業(yè)務的中小企業(yè)降低成本,企業(yè)初期零投入,不需服務器、系統(tǒng)研發(fā)等軟硬件投入;將定位技術與智能手機客戶端相結合,利用運營商的GSM/WCDMA等無線網(wǎng)絡,為企業(yè)提供對外勤人員實時、精準的管理手段。企業(yè)能隨時掌握在外工作人員的具體位置和行走軌跡,同時實現(xiàn)考勤簽到、快速審批、位置標注、語音群聊,數(shù)據(jù)上報,區(qū)域預警,更好地進行地理化分析、業(yè)績審視,改變傳統(tǒng)的辦公模式,實現(xiàn)無紙化和移動化辦公,快速響應客戶需求和有效管理員工,管理更加方便和人性化,深度鞏固企業(yè)在市場中主體地位和增強企業(yè)核心競爭力。

外勤通系統(tǒng)在給所有客戶帶來方便的同時,也需要面對網(wǎng)站訪問量漸增大、內容不斷豐富和用戶期望值不斷提高,用戶應用需要提供更快的訪問速度和承受更大的負荷量,所有這些都依賴于網(wǎng)站服務器的基礎設施,擴展服務器或者鏡像服務器是一個基本的解決方案,但擴展服務器會增加大量的運行維護工作,同時增加了運營成本,為了解決這個問題高速緩存服務器Cache不失為一個較好的解決方案,本文主要介紹開源內存數(shù)據(jù)庫Redis在高速緩存方面的的特性及其應用。

2 Redis

2.1 Redis簡介

Redis是一個基于內存的高性能key/value數(shù)據(jù)庫[1],全名為遠程字典服務(Remote Dictionary Server),與Memcached一樣,為了保證效率,數(shù)據(jù)都是緩存在內存中,也可以這樣說Redis就是用空間來換取時間,從而達到提高響應速度的目的。Memcached是一個免費開源的、高性能的、具有分布式內存對象的緩存系統(tǒng),它通過減輕數(shù)據(jù)庫負載加速動態(tài)Web應用。目前全球很多用戶都在使用它來構建自己的大負載網(wǎng)站或提高訪問量超大網(wǎng)站的響應速度[1]。相對于Redis來說,Memcached具有協(xié)議簡單,便捷的libenent事件處理,內存管理方式的高效性,以及互不通信的分布式等特性。

Redis與Memcached的最大區(qū)別是Redis會周期性把更新的數(shù)據(jù)備份到磁盤上或者把修改操作寫入記錄文件,并在此基礎上實現(xiàn)了主從同步。Redis很大程度補償了Memcached鍵值存儲的不足,在部分場合對關系數(shù)據(jù)庫起到很好的補充作用。Redis提供了更豐富的數(shù)據(jù)類型,如字符串(String),鏈表(List)、集合(Set)、有序集合(Zset)、哈希(Hash)等。

2.2 Redis的特性

Redis和Memached都是C/S結構的遠程Cache實現(xiàn),它們都可以作為緩存,但是Redis又有自己獨特的地方。這里重點講解Redis區(qū)別于Memcached的特征。

2.2.1 支持持久化

Redis和Memeache一樣都是把數(shù)據(jù)全部存在內存中,但是Redis會根據(jù)數(shù)據(jù)的更新量和更新間隔時間定期進行異步更新,將數(shù)據(jù)保存在磁盤上,實現(xiàn)數(shù)據(jù)的持久化操作。另外也可以通過配置redis.conf文檔配置持久化操作的時間間隔和臨界數(shù)據(jù)量,這樣Redis就自動在一定的時間間隔和數(shù)據(jù)超過臨界值時進行持久化操作。如果在Redis 宕機或者突然斷電的情況下,保存在Redis中的數(shù)據(jù)還是會丟失,所以Redis還提供了一種附加檔案功能AOF[2]。

通過把redis.cong中的appendonly屬性設置為“yes”來使用AOF功能,配置好AOF之后Redis每次接受到持久化命令時,就會將命令添加在配置文檔中,重新啟動Redis時,配置文檔中的指令會重新執(zhí)行,從而達到恢復Redis數(shù)據(jù)庫的狀態(tài)。

2.2.2 豐富的數(shù)據(jù)結構

Redis的數(shù)據(jù)結構非常豐富,Redis支持簡單的key/value類型數(shù)據(jù),其中Key是String類型,而value除了常規(guī)的String之外,還包括list,set,zset,hash等。這些新的屬性都是在Redis2.0中才有。Redis對所有的數(shù)據(jù)類型都提供 push/pop、add/remove、執(zhí)行服務端的并集、交集等功能,這些操作都是具有原子性的,它還支持各種不同的排序能力[1]。

2.2.3 支持主從復制

Redis的主從復制可以通過配置redis.conf文件中的Replication字段來實現(xiàn),Redis的主從復制具有如下特點:

(1)支持多級主從(master/slave),即一個主服務器可以連接多個從服務器

(2)從服務器可以再連接其他的從服務器

(3)主服務器和從服務器同步的數(shù)據(jù)復制是非阻塞的

其中利用Redis的主從復制特性,可以實現(xiàn)以下功能:

(1)實現(xiàn)讀寫分離,如用主服務實現(xiàn)讀操作,從服務實現(xiàn)寫操作。

(2)備份數(shù)據(jù),利用主從服務器的方便性來備份,專門做臺從服務器用于備份功能。

2.2.4 Virtual Memory功能

由于Redis受到了物理內存的限制,數(shù)據(jù)庫的容量有限,對于海量數(shù)據(jù)的高性能讀寫并不適合。Virtual Memory的功能就是為了解決這個問題而生,Virtual Memory功能也是Redis 2.0新增的功能,目的就是為了提高Redis對海量數(shù)據(jù)的高性能讀寫能力,它把很少使用的value保存再磁盤中,而只把key存在內存中,從而達到提高系統(tǒng)性能的目的。

3 Redis的應用

隨著外勤通系統(tǒng)客戶量不斷增加,每天客戶上傳和請求的數(shù)據(jù)量也是呈幾百,幾千倍的增加,面對不斷增加的龐大信息量數(shù)據(jù)庫的負擔越來越重,單純的靠增加服務器的數(shù)量所產生的運營和維護費用又特別大,而在速度就是市場的互聯(lián)網(wǎng)時代,快速相應是一個不變的需求。Redis由于其豐富數(shù)據(jù)結構,良好的性能,優(yōu)良的數(shù)據(jù)持久化能力占領了越來越大市場。我們的外勤通系統(tǒng)也引入了對Redis的應用。

Redis在外勤通系統(tǒng)中的應用主要表現(xiàn)在一下幾個方面:

⑴在應用集群中,作為中央會話,保存web中會話,保存終端鑒權后的token,通過鑒權之后不同的用戶登錄就展示不同的功能模塊。

save(String key, String value, Integer seconds){

Jedis jedis = null;

try {

jedis=(Jedis) pool.getResource();

jedis.set(key, value);

jedis.expire(key, seconds);

} catch (Exception e) {

e.printStackTrace();

}finally{

pool.returnResource(jedis);

}

}

⑵在通信中,作為發(fā)布訂閱隊列使用,web 發(fā)布消息,進入Redis 發(fā)布訂閱頻道,通信中心消費此頻道消息,所有的信息發(fā)布都在Redis中進行,從而提高了響應的速度。

public boolean sendMsg(String msg){

boolean rebool = true;

Jedis jedis = null;

try {

jedis=(Jedis) pool.getResource();

jedis.publish("kingfisher.*", msg);

} catch (Exception e) {

e.printStackTrace();

rebool = false;

}finally{

pool.returnResource(jedis);

}

return rebool;

}

⑶在重發(fā)消息以及離線消息的集合索引和隊列,保證在終端關機或者不在服務區(qū)范圍內沒有接受到的信息有一個重發(fā)機制,Redis中會保存近100小時之內的用戶信息,從而實現(xiàn)快速轉發(fā),超過100小時會自動清空Redis。

def sended(mobile,msgstr,msg):

row = MysqlDao().findClient(mobile)

if row is not None:

pool = MyRedis.getPool()

r = redis.Redis(connection_pool=pool)

r.sadd('sended_%s' % mobile,msg.bid)

r.set('s_msg_%s' % msg.bid,msgstr)

r.expire('s_msg_%s' % msg.bid,36000) #超過100小時不再為客戶端保留信息

⑷應用MONGODB附近位置的檢索

⑸應用mongodb gridFS=對文件中轉(PC ANDROID IOS)

⑹應用mongodb mapreduce并行計算,用戶從redis中調度生成當天用戶訪問行為,調度生成當天服務運行行為以及調度生成當天小時行為。

4 展望

外勤通系統(tǒng)由于其通用,高效,低碳等特點自推出以來就備受關注,現(xiàn)在外勤通的客戶群已經(jīng)達到了2000多人,隨著客戶的不斷增加,服務器的壓力也越來越大,引入了Redis之后系統(tǒng)的響應速度大大提高。但是隨著外勤通系統(tǒng)版本的不斷升級,客戶群的持續(xù)增加數(shù)據(jù)庫的壓力還是一個潛在的問題,為了更好的滿足客戶的需求,對服務器的優(yōu)化將是一個長期的工作。

[參考文獻]

[1]王心妍.emcached和Redis在高速緩存方面的應用[J].無線互聯(lián)科技,2012(9).

[2]楊艷,李煒,王純.內存數(shù)據(jù)庫在高速緩存方面的應用[J].現(xiàn)代電信科技,2011(12).

主站蜘蛛池模板: 2022国产91精品久久久久久| 国产美女视频黄a视频全免费网站| 亚洲91精品视频| 久久公开视频| 欧美一区二区三区国产精品| 国产精品网拍在线| 国产男女免费视频| 五月婷婷综合网| 丁香五月婷婷激情基地| 国产精品99久久久| 国内精品久久人妻无码大片高| 亚洲婷婷在线视频| 欧美日韩精品综合在线一区| 91久久偷偷做嫩草影院免费看 | 日韩毛片免费观看| 九九线精品视频在线观看| 91破解版在线亚洲| 99久久精品久久久久久婷婷| 在线国产三级| 国产拍揄自揄精品视频网站| 国产国产人成免费视频77777| 亚洲动漫h| 99视频在线免费| 欧美一级视频免费| www.99在线观看| 国产在线观看人成激情视频| 五月天综合婷婷| 国产在线一区视频| 91精品小视频| 99国产精品一区二区| 自慰高潮喷白浆在线观看| 日本三级黄在线观看| 午夜国产理论| 欧美亚洲国产精品第一页| 亚洲国产精品日韩av专区| 国产日本视频91| 国产呦视频免费视频在线观看| 久久中文字幕av不卡一区二区| 精品国产免费观看一区| 色综合天天操| 婷婷六月激情综合一区| 亚洲区视频在线观看| 波多野结衣爽到高潮漏水大喷| 亚洲视频欧美不卡| 国产永久免费视频m3u8| 国产成人调教在线视频| 免费国产无遮挡又黄又爽| 亚洲AV无码一二区三区在线播放| 中文字幕日韩视频欧美一区| 国内精品自在自线视频香蕉| 欧美一区中文字幕| 有专无码视频| 国内精品久久久久鸭| 国产AV无码专区亚洲精品网站| 亚洲欧美在线综合一区二区三区| 亚洲视频色图| 国产专区综合另类日韩一区| 亚洲啪啪网| 丁香五月婷婷激情基地| a色毛片免费视频| 四虎影视无码永久免费观看| 日韩在线永久免费播放| 91啦中文字幕| 国产精品视频系列专区| 国产高清无码第一十页在线观看| 久久香蕉国产线看观看精品蕉| 欧美中文字幕在线二区| 亚洲无码电影| 欧美天堂久久| 日本人又色又爽的视频| 成人韩免费网站| 国产香蕉97碰碰视频VA碰碰看| 国产福利在线观看精品| 日韩在线中文| 久久综合丝袜长腿丝袜| 国产成人久视频免费| 国产成人综合亚洲欧洲色就色| 国产剧情一区二区| 久久成人18免费| 91精品伊人久久大香线蕉| 久久久国产精品无码专区| 国产激情无码一区二区免费|