OpenFire源码学习之十九:在openfire中使用redis插件(上)
Redis插件
介紹
Redis是目前比較流行的NO-SQL,基于K,V的數(shù)據(jù)庫系統(tǒng)。關(guān)于它的相關(guān)操作信息,本人這里就不做重復(fù)了,相關(guān)資料可以看這個網(wǎng)站http://www.redis.io/(官網(wǎng))、http://www.redis.cn/(中文站)。
這里本人想說的是,拿Redis做openfire的緩存數(shù)據(jù)庫。能夠大大的提高openfire連接的吞吐量。Openfire自身在本地使用Map、Cache的方式緩存了Group、roster、MUC等信息。但是當系統(tǒng)用戶過大的時候,需要緩存的數(shù)據(jù)更多了。那么JVM的對上百G的緩存控制貌似不是很好。當然一般情況下也不會那么大。而且在openfire集群的模式,讀取其他節(jié)點的消息(比如用戶session)需要夸節(jié)點甚至夸機房。這樣也會影響訪問速度。更多情況下,單獨的傳統(tǒng)數(shù)據(jù)庫對大數(shù)據(jù)的并發(fā)并不理想。還有比較重要的因素就是,當多個系統(tǒng)同時使用的時候,比較門戶網(wǎng)站上的用戶登陸與APP上的用戶登陸就會造成很大的麻煩,大多情況下,兩者系統(tǒng)的數(shù)據(jù)庫表設(shè)計本身就不一致,查詢起來就不叫麻煩,那么把多個系統(tǒng)需要用到的數(shù)據(jù)都以同一種數(shù)據(jù)格式緩存的話,會省去很多的麻煩!
廢話不多說,直接上插件吧。
Redis插件
首先看我的控制臺配置頁面:
這里本人將openfire需要的緩存做了8個大類。每一類設(shè)置成了一個數(shù)據(jù)庫。下面簡單的描述下這幾個大類。
| 分類 | 描述 |
| REDIS_USER | 用戶庫,緩存用戶的相關(guān)信息(認證資料、用戶名片、用戶搜索分詞表)根據(jù)用戶量的大小,可以根據(jù)不用的業(yè)務(wù)場景來分 |
| REDIS_GROUP | Group的相關(guān)信息,包括Group與用戶的關(guān)系。當然本人使用的業(yè)務(wù)場景group的數(shù)據(jù)量可能非常的大 |
| REDIS_ROSTER | 用戶花名冊,存儲用戶好友關(guān)系。包括用戶添加好友發(fā)送等待的數(shù)據(jù) |
| REDIS_MUC | 聊天室相關(guān)信息包括聊天室用戶關(guān)系、角色類 |
| REDIS_MUC_MESSAGE | 聊天室產(chǎn)生的會話消息。該消息需要保存最近聊天50~200條消息。根據(jù)需求不同,這個設(shè)置也不同。 |
| REDIS_OFFLINE_MESSAGE | 離線消息,這里是指。用戶不在線的時候,不同終端好友或者是其他系統(tǒng)的會話消息保存。個人把這個離線存儲為時間周期為單位,比如只保存一個月。 |
| REDIS_CHAT_MESSAGE | 這個就是簡單的聊天的會話消息。為什么需要存儲普通聊天的呢。本人這里是考慮到需要多消息回執(zhí),而存儲的。這個庫存讀寫量會非常的平凡,所以打算單獨拿出來 |
| REDIS_SEARCH | 用戶搜索,本人在這里只是把用戶名稱分詞存儲了。終端用戶可以搜索關(guān)鍵詞搜索用戶。 |
插件流程
1、需要配置Redis插件的信息(ip、端口、連接密碼等)。這里本人配置到了關(guān)系數(shù)據(jù)庫。如圖:
redisConfiguration
2、Redis的安裝。
關(guān)于Redis的安裝或者調(diào)優(yōu)無論是windows環(huán)境還是Linux環(huán)境在Redis官網(wǎng)作了非常詳細的介紹,這里本人就不貼圖啰嗦了。
3、添加你需要修改的DAO操作
如:在系統(tǒng)屬性表中修改
| provider.auth.className | org.jivesoftware.util.redis.expand.RedisAuthProvider |
4、預(yù)初始化數(shù)據(jù)。
這里的預(yù)初始化數(shù)據(jù),是將系統(tǒng)啟動后,由控制臺管理員才設(shè)置。預(yù)初始化的目的是要在原有系統(tǒng)上加載用戶。
?
關(guān)于上面接個步驟,Redis就介紹到這了。下面會具體講講源碼實現(xiàn)。
轉(zhuǎn)載于:https://www.cnblogs.com/huwf/p/4273349.html
總結(jié)
以上是生活随笔為你收集整理的OpenFire源码学习之十九:在openfire中使用redis插件(上)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 请问下莫干山科技木好不好用?
- 下一篇: 点赚接口(第二版)