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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/376269.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

没有文件扩展“.js”的脚本引擎问题解决

安装MinGW的时候提示没有文件扩展“.js”的脚本引擎。原因:系统安装Dreamwear、UltraEdit、EditPlus后修改了.js文件的默认打开方式。当想直接执行js脚本时就会出现此错误。解决办法:打开注册表编辑器,定位[HKEY_CLASSES_ROOT.js]这一项&…

160 - 54 eKH

环境:windows xp 工具: 1、OllyDBG 2、IDA 3、exeinfo 查壳发现是程序无壳且用Delphi语言编写 可以通过搜索字符串的方式定位关键函数地址 这里定位到是 00427B44ReadInput(a2, &v17); // 读取输入的usernameif ( StrL…

cpri带宽不足的解决方法_白皮书:FPGA赋能下一代通信和网络解决方案(第四部分)...

对PCIe Gen 5的支持除了以太网和存储控制器,Speedster7t FPGA上提供的对PCIe Gen 5的支持还能够与主机处理器紧密集成,以支持诸如sidecar智能网卡(SmartNIC)设计等高性能加速器应用。PCI Gen 5控制器使其能够读取和写入存储在FPGA内存层级结构中的数据&a…

山体等高线怎么看_每日一题 | 此处向斜山,你看出来了吗?

每日一题 | 此处向斜山,你看出来了吗?(2018江苏高考)如图为某区域地质简图。该区沉积地层有Q、P、C、D、S2、S1,其年代依次变老。读图回答1~2题。1.从甲地到乙地的地形地质剖面示意图是(  )2.为揭示深部地…

java和c++的区别大吗_大空间消防水炮ZDMS0.8/30S坐装和吊装有区别吗?

大空间消防水炮现在是高大建筑的消防必备的设备之一,其型号按照流量可分为4种,ZDMS0.6/5S,ZDMS0.6/10S,SZDMS0.8/20S,ZDMS0.8/30S。在这中间使用较多的是5L和30L的,5L的消防水炮都是吊装,但是30…

Windows Hook(1)加载DLL

DLL代码 #include <Windows.h> BOOL APIENTRY DllMain( HMODULE hModule,DWORD ul_reason_for_call,LPVOID lpReserved) {switch (ul_reason_for_call){case DLL_PROCESS_ATTACH:MessageBox(NULL, L"dllHook", L"Hook", MB_OK);break;case DLL_THR…

silverligh的数据访问

对于在Silverlight中访问数据&#xff0c;初学者的误解之一就是他们在Silverlight中寻找ADO.NET类库。别找了&#xff0c;找不到的。记住&#xff0c;Silverlight是部署在互联网上的客端技术&#xff0c;你不能要求一个浏览器插件去直接访问你的数据库……除非你想把数据库直接…

cacheinterceptor第二次访问没被调用_访问者设计模式在OSG中的应用

为什么要谈谈访问者设计模式呢&#xff1f;因为OSG整个引擎就是用访问者设计模式建立起来的&#xff0c;不论是遍历节点图&#xff0c;还是做各种实用的功能&#xff0c;都需要大量的用到访问者设计模式。先谈谈访问者设计模式的定义。1&#xff1a;什么是访问者模式访问者模式…

Windows Hook(2)调用DLL函数

DLL代码 #include <Windows.h>BOOL APIENTRY DllMain( HMODULE hModule,DWORD ul_reason_for_call,LPVOID lpReserved) {switch (ul_reason_for_call){case DLL_PROCESS_ATTACH:MessageBox(NULL, L"dllHook", L"Hook", MB_OK);break;case DLL_THRE…

pygame只能编写游戏_游戏框架搭建

游戏框架搭建目标 —— 使用 面相对象 设计 飞机大战游戏类目标明确主程序职责实现主程序类准备游戏精灵组01. 明确主程序职责回顾 快速入门案例&#xff0c;一个游戏主程序的 职责 可以分为两个部分&#xff1a;游戏初始化游戏循环根据明确的职责&#xff0c;设计 PlaneGame 类…

poj3335 半平面交

题意&#xff1a;给出一多边形。判断多边形是否存在一点&#xff0c;使得多边形边界上的所有点都能看见该点。 sol&#xff1a;在纸上随手画画就可以找出规律&#xff1a;按逆时针顺序连接所有点。然后找出这些line的半平面交。 题中给出的点已经按顺时针排好序了&#xff0c;所…

php进程间通信 yoc_续上篇Swoole多进程数据共享的问题

原因进程作为程序执行过程中资源分配的基本单位&#xff0c;拥有独立的地址空间,同一进程的线程可以共享本进程的全局变量&#xff0c;静态变量等数据和地址空间&#xff0c;但进程之间资源相互独立。由于PHP语言不支持多线程&#xff0c;因此Swoole使用多进程模式&#xff0c;…

解读Google分布式锁服务

背景介绍 在2010年4月&#xff0c;Google的网页索引更新实现了实时更新&#xff0c;在今年的OSDI大会上&#xff0c;Google首次公布了有关这一技术的论文。 在此之前&#xff0c;Google的索引更新&#xff0c;采用的的批处理的方式(map/reduce)&#xff0c;也就是当增量数据达到…

必应输入法产品分析

2013年4月&#xff0c;微软MSN(中国)宣布推出首款整合搜索体验的中文云输入法“必应Bing输入法”&#xff0c;其前身是“英库拼音输入法(于2012年8月发布测试版)” 在此&#xff0c;Fruits小组从宏观的软件工程角度和微观的产品实现细节对必应输入法进行了考察和分析。 &#x…

抓localhost包 - rawcap

抓localhost包的话用wireshark好像有点麻烦&#xff0c;所以用rawcap RawCap官网 RawCap下载连接 直接运行&#xff0c;首先根据需要选择监听相应的网卡&#xff0c;然后再填写抓包文件保存的名字

持续集成交付CICD:Jira 发布流水线

目录 一、实验 1.环境 2.GitLab 查看项目 3.Jira 远程触发 Jenkins 实现合并 GitLab 分支 4.K8S master节点操作 5.Jira 发布流水线 一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 主机架构版本IP备注master1K8S master节点1.20.6192.168.204.180 jenkins…

三个彩灯循环点亮程序_近百组彩灯点亮江畔,义渡灯会正式亮灯啦

10月23日晚上&#xff0c;大渡口区义渡古镇华灯初上。夜幕之下&#xff0c;2020第一届义渡灯会亮灯仪式在此举行&#xff0c;来自四川的近百组彩灯将在这里点亮夜空&#xff0c;一直陪伴广大市民游客至明年元宵节后。当晚6点半&#xff0c;义渡灯会亮灯仪式正式开启。本次灯会以…

QPushButton hover配置

鼠标移动到QPushButton上面时显示下划线 //下面是当鼠标移动到按钮上时&#xff0c;按钮上的文字显示下划线 QPushButton#Button_2:hover{ text-decoration:underline; }//下面是普通显示 QPushButton#Button_2{ color:rgba(52, 144, 255 ,255); border-radius:0px; backgrou…

eclipse没有日志_强化公共DHT以抵抗eclipse攻击,ipfs官方还说了什么?

近日&#xff0c;IPFS官方发布博客&#xff0c;就如何强化公共DHT以抵抗eclipse攻击进行详细介绍&#xff0c;星球君帮大家翻译了一下&#xff0c;让我们来看看官方都说了什么吧&#xff1a;IPFS 2020 年的一个主要焦点是随着网络规模的不断扩大而改进内容路由。虽然我们已经对…

HTTP基础10--web(2)

因输出值转义不完全引发的安全漏洞 实施 Web 应用的安全对策可大致分为以下两部分。 客户端的验证Web 应用端&#xff08;服务器端&#xff09;的验证: 输入值验证 / 输出值转义客户端允许篡改数据或关闭 JavaScript&#xff0c;不适合将 JavaScript 验证作为安全的防范对策。保…