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就介紹到這了。下面會具體講講源碼實現。