OpenFire原始碼學習之十九:在openfire中使用redis外掛(上)
Redis外掛
介紹
Redis是目前比較流行的NO-SQL,基於K,V的資料庫系統。關於它的相關操作資訊,本人這裡就不做重複了,相關資料可以看這個網站http://www.redis.io/(官網)、http://www.redis.cn/(中文站)。
這裡本人想說的是,拿Redis做openfire的快取資料庫。能夠大大的提高openfire連線的吞吐量。Openfire自身在本地使用Map、Cache的方式快取了Group、roster、MUC等資訊。但是當系統使用者過大的時候,需要快取的資料更多了。那麼JVM的對上百G的快取控制貌似不是很好。當然一般情況下也不會那麼大。而且在openfire叢集的模式,讀取其他節點的訊息(比如使用者session)需要誇節點甚至誇機房。這樣也會影響訪問速度。更多情況下,單獨的傳統資料庫對大資料的併發並不理想。還有比較重要的因素就是,當多個系統同時使用的時候,比較入口網站上的使用者登陸與APP上的使用者登陸就會造成很大的麻煩,大多情況下,兩者系統的資料庫表設計本身就不一致,查詢起來就不叫麻煩,那麼把多個系統需要用到的資料都以同一種資料格式快取的話,會省去很多的麻煩!
廢話不多說,直接上外掛吧。
Redis外掛
首先看我的控制檯配置頁面:
這裡本人將openfire需要的快取做了8個大類。每一類設定成了一個資料庫。下面簡單的描述下這幾個大類。
分類 |
描述 |
REDIS_USER |
使用者庫,快取使用者的相關資訊(認證資料、使用者名稱片、使用者搜尋分詞表)根據使用者量的大小,可以根據不用的業務場景來分 |
REDIS_GROUP |
Group的相關資訊,包括Group與使用者的關係。當然本人使用的業務場景group的資料量可能非常的大 |
REDIS_ROSTER |
使用者花名冊,儲存使用者好友關係。包括使用者新增好友傳送等待的資料 |
REDIS_MUC |
聊天室相關資訊包括聊天室使用者關係、角色類 |
REDIS_MUC_MESSAGE |
聊天室產生的會話訊息。該訊息需要儲存最近聊天50~200條訊息。根據需求不同,這個設定也不同。 |
REDIS_OFFLINE_MESSAGE |
離線訊息,這裡是指。使用者不線上的時候,不同終端好友或者是其他系統的會話訊息儲存。個人把這個離線儲存為時間週期為單位,比如只儲存一個月。 |
REDIS_CHAT_MESSAGE |
這個就是簡單的聊天的會話訊息。為什麼需要儲存普通聊天的呢。本人這裡是考慮到需要多訊息回執,而儲存的。這個庫存讀寫量會非常的平凡,所以打算單獨拿出來 |
REDIS_SEARCH |
使用者搜尋,本人在這裡只是把使用者名稱稱分詞儲存了。終端使用者可以搜尋關鍵詞搜尋使用者。 |
外掛流程
1、需要配置Redis外掛的資訊(ip、埠、連線密碼等)。這裡本人配置到了關聯式資料庫。如圖:
redisConfiguration
2、Redis的安裝。
關於Redis的安裝或者調優無論是windows環境還是Linux環境在Redis官網作了非常詳細的介紹,這裡本人就不貼圖囉嗦了。
3、新增你需要修改的DAO操作
如:在系統屬性表中修改
provider.auth.className |
org.jivesoftware.util.redis.expand.RedisAuthProvider |
4、預初始化資料。
這裡的預初始化資料,是將系統啟動後,由控制檯管理員才設定。預初始化的目的是要在原有系統上載入使用者。
關於上面接個步驟,Redis就介紹到這了。下面會具體講講原始碼實現。
相關文章
- OpenFire原始碼學習之十八:IOS離線推送原始碼iOS
- 基於xmpp openfire smack開發之openfire介紹和部署[1]Mac
- iOS開發之mac上搭建openfire伺服器iOSMac伺服器
- openfire使用自定義使用者表
- Openfire 效能優化優化
- openfire 3.8.2 原始碼部署 /開發配置 / 二次開發原始碼
- Bootstrap外掛modal原始碼的學習boot原始碼
- redis原始碼學習之slowlogRedis原始碼
- redis原始碼學習Redis原始碼
- 重新配置OpenFire資料庫資料庫
- redis原始碼學習之工作流程初探Redis原始碼
- redis原始碼學習之lua執行原理Redis原始碼
- 基於xmpp openfire smack開發之smack類庫介紹和使用[2]Mac
- php實現openfire使用者同步新增,刪除,修改PHP
- iOS實現XMPP通訊(一)搭建OpenfireiOS
- XMPPFramework開發(一):Openfire伺服器搭建Framework伺服器
- smack和openfire通訊的簡單例子Mac單例
- octobercms 外掛學習 驗證碼
- android基於openfire+smack開發之【架構瞭解】AndroidMac架構
- 即時通訊軟體openfire+spark+smackSparkMac
- mybatis原始碼學習:外掛定義+執行流程責任鏈MyBatis原始碼
- Redis原始碼學習——基礎資料結構之SDSRedis原始碼資料結構
- QT外掛學習QT
- Spring原始碼學習之:FactoryBean的使用Spring原始碼Bean
- jQuery原始碼學習之$()jQuery原始碼
- Redis 學習-上Redis
- C#連線基於Java開發IM——OpenfireC#Java
- Openfire安裝準備-MySQL資料庫準備MySql資料庫
- 採用spark和openfire實現即時通訊系統Spark
- 基於xmpp openfire smack開發之Android客戶端開發[3]MacAndroid客戶端
- Qt Creator 原始碼學習筆記04,多外掛實現原理分析QT原始碼筆記
- Redis 原始碼學習之事件驅動Redis原始碼事件
- redis學習筆記4: 在Java中操作RedisRedis筆記Java
- vue 原始碼學習 - 例項掛載Vue原始碼
- C#中使用Redis學習二 在.NET4.5中使用redis hash操作C#Redis
- redis命令之-script指令碼學習Redis指令碼
- Egg 學習筆記 - 外掛的使用筆記
- immutability-helper 外掛的基本使用(附原始碼)原始碼