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).

主站蜘蛛池模板: 午夜毛片福利| 国产美女自慰在线观看| 免费观看欧美性一级| 福利一区在线| 高潮毛片无遮挡高清视频播放| 成人福利在线免费观看| 国产精品30p| 欧美亚洲一二三区| 亚洲区第一页| 伊人查蕉在线观看国产精品| 久久综合结合久久狠狠狠97色| av尤物免费在线观看| 国产高清免费午夜在线视频| 国产乱码精品一区二区三区中文 | 国产亚洲精久久久久久久91| 亚洲色图欧美| 91网址在线播放| 免费一级毛片| 亚洲精品色AV无码看| 成人av专区精品无码国产 | 理论片一区| 中文字幕在线观看日本| 在线免费看黄的网站| 无遮挡国产高潮视频免费观看| 成人噜噜噜视频在线观看| 日本一区中文字幕最新在线| 亚洲欧美日韩天堂| 91福利国产成人精品导航| 亚洲日本中文综合在线| 熟妇丰满人妻| 国产69精品久久久久孕妇大杂乱| 91精品国产麻豆国产自产在线| 亚洲无码A视频在线| 一级成人a毛片免费播放| 深夜福利视频一区二区| 播五月综合| 国产菊爆视频在线观看| 99久久精彩视频| 亚洲男人天堂久久| 国产91熟女高潮一区二区| 欧美成人精品在线| 亚洲高清国产拍精品26u| 又爽又大又黄a级毛片在线视频 | 午夜激情福利视频| 91毛片网| 伊人久久久久久久| 好紧太爽了视频免费无码| 凹凸精品免费精品视频| 一级毛片免费的| 亚洲精品天堂自在久久77| 91久久青青草原精品国产| 激情视频综合网| 国产精品福利社| 亚洲永久视频| 成人一区专区在线观看| 国产男人的天堂| 欧美a级完整在线观看| 美女视频黄频a免费高清不卡| 精品国产中文一级毛片在线看| 亚洲妓女综合网995久久| 国产在线观看人成激情视频| 免费看黄片一区二区三区| 久久国产精品影院| 经典三级久久| 日韩激情成人| 久久综合亚洲鲁鲁九月天| 国产白浆一区二区三区视频在线| 在线网站18禁| 亚洲全网成人资源在线观看| 午夜精品福利影院| a毛片在线播放| 亚洲美女一级毛片| 国产极品嫩模在线观看91| 91小视频在线播放| v天堂中文在线| 亚洲综合经典在线一区二区| 午夜不卡视频| 国产va在线观看| 国产白浆在线| 国产午夜人做人免费视频中文| 亚洲区视频在线观看| 67194在线午夜亚洲|