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就介绍到这了。下面会具体讲讲源码实现。
转载于:https://www.cnblogs.com/huwf/p/4273349.html
OpenFire源码学习之十九:在openfire中使用redis插件(上)相关推荐
- (转)OpenFire源码学习之十八:IOS离线推送
转:http://blog.csdn.net/huwenfeng_2011/article/details/43458213 IOS离线推送 场景: 如果您有iOS端的APP,在会话聊天的时候,用户登 ...
- OpenFire源码学习之二十一:openfie对用户的优化(上)
用户类 优化用户主要是要解决用户的连接量.已经对用户的访问速度和吞吐量. 预初始化 在前面的带面中提出来了用户的预初始化.这里就不在贴出来了.下面将redis用户库连接池处理贴出来UserJedisP ...
- Spring Cloud 2.2.2 源码之二十九nacos客户端获取配置原理四
Spring Cloud 2.2.2 源码之二十九nacos客户端获取配置原理四 MetricsHttpAgent的httpGet ServerHttpAgent的httpGet HttpSimple ...
- Go-Excelize API源码阅读(十九)——SetHeaderFooter
Go-Excelize API源码阅读(十九)--SetHeaderFooter 开源摘星计划(WeOpen Star) 是由腾源会 2022 年推出的全新项目,旨在为开源人提供成长激励,为开源项目提 ...
- spark 源码分析之十九 -- DAG的生成和Stage的划分
上篇文章 spark 源码分析之十八 -- Spark存储体系剖析 重点剖析了 Spark的存储体系.从本篇文章开始,剖析Spark作业的调度和计算体系. 在说DAG之前,先简单说一下RDD. 对RD ...
- OpenFire源码学习之二十九:openfire集群配置
集群 Openfire的给集群提供了多种方案.一种是基于Hazelcast插件,还有基于Oracle的coherence插件. Oracle的coherence插件中文开发文档:http://down ...
- OpenFire源码学习之七:组与花名册
Group 在openfire中的gorop--组,也可以理解为共享组.什么叫共享组呢.当有一个组名字为"学习组",当其他用户加入这个组的时候,那么他们会自动成为相互的好友.实际上 ...
- 【转】ABP源码分析二十九:ABP.MongoDb
这个Module通过建立一个MongoDbRepositoryBase<TEntity> 基类,封装了对MongoDb数据库的操作. 这个module通过引用MongoDB.Driver, ...
- OpenGL蓝宝书源码学习(十)第五章——纹理的应用、Mip贴图、各项异性过滤和纹理压缩基础
一.纹理应用 1.纹理坐标 我们是通过为每个顶点指定一个纹理坐标而直接在几何图形上进行纹理贴图的.纹理坐标要么是指定为着色器的一个属性,要么通过算法计算出来.纹理贴图中的纹理单元是作为一个更加抽象的纹 ...
最新文章
- 如何将OutputStream转换为InputStream?
- spring五:获取容器中对象信息
- BZOJ 1800: [Ahoi2009]fly 飞行棋( 枚举 )
- Cool Kitten:新鲜出炉的视差滚动 响应式框架
- 使用go来实现类似erlang otp里面的gen_server功能
- pgsql 前10条_未来3年,广州83条城中村、285个旧街区将迎来改造
- 27日直播预告丨Oracle运营商行业生产实践分享
- 关于Cocos2d-x中GameController的定义
- Objective-C 学习 (一):Objective-C 概述
- 开源,才是科技巨头的最佳实践!| 技术头条
- Windows server 2008 r2搭建FTP服务器
- atitit 数字音频技术概论 艾提拉著 目录 1. 声学基础	2 1.1. 1.2人耳的听觉效应9	2 2. 第1章数字音频基础	2 2.1. 1.1音频的发展历史	2 2.2. 1.2音频的发展
- 转:著名的100个管理定律点评9 - 成也细节,败也细节略
- 我在蚂蚁金服做后端:那些坚持在一个岗位做八年的人,后来怎么样了?
- 重启计算机后回收站,电脑回收站文件被清空了该如何恢复
- 成都盛铭轩:如何增加店铺流量
- 【工具】PrimoCache和Qiling:快速缓存优化加速软件
- Python批量识别图片中的文字并保存到txt文档中
- Prim算法求图的最小生成树(Java)
- 港科喜讯 | 36名香港科大教授获得表彰!
热门文章
- [原创]ActionScript3游戏中的图像编程(连载五)
- 转载[POJ题型分类]
- 函数重载 覆盖 隐藏
- 七个重要习惯——读《高效能人士的七个习惯》整理
- 将Android源码集成到Eclipse中的方法
- 火狐 和 IE 透明度的设置。
- 计算机对中断的处理是在用户态下进行的,电大本科生作业系统作业3与答案.doc...
- python 与别的程序通信_《Python》进程之间的通信(IPC)、进程之间的数据共享、进程池...
- 算术运算导致溢出_CPU的控制器与运算器
- MFC状态栏编程(显示系统时间和进度条)