聊天系统,以下设计是否合理

yingyangcz 2018-10-03 12:22:40
聊天系统,所有逻辑业务主要都使用mysql。
用户聊天时需要判断是否为好友关系,如果每次聊天都从mysql中去查询判断是否为好友,频率太高了,个人觉得不合理。
(存在删除了好友,聊天界面未刷新或其他情况,所以聊天时有必要判断是否为好友)

方案一:
于是使用redis string 的 key value结构来判断是否为好友关系:
friend_relation_maxid_minid
maxid是userId friendId最大值,minid为userId friendId最小值。
添加好友时,创建对应的friend_relation_maxid_minid:1来存储,删除好友时,移除对应的key(该系统逻辑是删除了好友,双方同时都删除)
在聊天时判断friend_relation_maxid_minid是否为1,如果不是,则返回错误信息。

方案二:添加好友或删除好友时,mysql同步好友列表到redis ,用无序集合存储
在聊天时取出我的好友列表,判断对方用户ID是否在这个列表中。如果不是,返回错误信息。



以上两种方案哪种合适,或者有其它更好的方案?求推荐!
方案二可能更强大,可以实现交集并集之类的。
...全文
925 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
1, 判断是否为好友关系: 正如你们现在所想的一样, 将自己的ID与好友的ID 存入Redis缓存之中,然后进行读取判断即可.
2,针对删除了好友,聊天界面未刷新情况: 可以使用GatewayWorker实现即时通知处理,使页面自动将移除的好友去掉.
nsqs 2018-10-17
  • 打赏
  • 举报
回复
1、好友存到MySQL表中,用户登陆后 将好友ID从表中取出 序列化后缓存到 redis
2、每次发消息时从redis中取到缓存值,反序列后到php数组中,再核对是否为好友,php运算还是相当快的。
3、将此用户近10个聊天的好友缓存到 redis中 ,每次先对此次发起的聊天对象是否在此列表中作对比,如果不在,再执行第2步。
至于删除添加好友时,更新redis的值即可

全部手打,好累
资源名字:基于SSM+mysql的见福便利店信息管理系统设计与实现(源码+设计文档+部署说明+视频演示).zip 资源内容:项目全套源码+完整文档 源码说明: 全部项目源码都是经过测试校正后百分百成功运行。 基于SSM+MySQL的见福便利店信息管理系统是一个用于管理便利店信息的系统,主要提供商品管理、库存管理、销售记录、员工管理等功能,具有以下主要特点: 技术栈:该系统采用了Java技术栈中的SSM框架,包括Spring、SpringMVC和MyBatis,结合MySQL数据库,具备较高的技术稳定性和可靠性。 个人中心、员工管理、供应商管理、商品信息管理、商品类型管理、供应商商品管理、进货信息管理、销售统计管理、投诉信息管理、聊天信息管理、聊天回复管理 商品管理功能:系统支持商品信息的录入和管理,包括商品名称、价格、库存量等详细信息,方便管理员进行商品管理和更新。 库存管理功能:系统记录商品的库存情况,包括库存数量、进货和销售记录等,方便管理员进行库存监控和补充,确保商品供应的及时性和充足性。 销售记录功能:系统记录销售的相关信息,包括销售日期、商品名称、销售数量和销售金额等,方便管理员查看销售情况和统计数据,支持销售分析和报表生成。 员工管理功能:系统支持员工信息的管理,包括员工姓名、职位、工号等详细信息,方便管理员进行员工管理和权限分配。 用户友好:系统具有简洁明了的用户界面和良好的操作体验,管理员和员工可以轻松进行商品管理、库存监控、销售记录和员工管理等操作,提供便捷的信息管理服务。 数据库设计合理系统的数据库设计符合规范,包括商品信息、库存记录、销售记录、员工信息等表结构,能够满足便利店信息管理的需求,保证数据的一致性和完整性。 实时更新:系统支持实时更新商品库存和销售记录,管理员和员工可以及时查看最新的库存情况和销售数据,提高信息的准确性和及时性。 安全性和权限管理:系统采用安全措施,设置合理的权限管理,保护管理员和员工信息的安全和隐私,确保数据的保密性和安全性。 扩展性强:系统采用模块化设计,方便进行功能扩展和系统升级,满足不同便利店规模和信息管理需求的要求。 总之,基于SSM+MySQL的见福便利店信息管理系统具有技术稳定性高、商品管理和销售记录功能完善、用户友好、数据库设计合理、实时更新和安全性保护等特点,是一款便捷而高效的便利店信息管理工具。
【毕业设计】基于JAVA的局域网飞鸽传书软件设计与实现(源代码+论文) 根据对飞鸽传输系统的调研,我认为本设计需要满足以下几个系统设计目标: (1)实用性原则:真正为局域网的实际工作服务,按照需求的轻重缓急,合理设计系统。 (2)可靠性原则:必须为用户提供安全的服务,尤其是要保证传输的稳定性。 (3)友好性原则:使用本系统的用户相当一部分对计算机知识了解很少,所以系统操作上要求简单方便,便于用户掌握。 (4)可扩展性原则:采用开放的标准和接口,便于系统向更大的规模和功能扩展。 2.2系统总体需求分析 根据用户需求,本系统分为两个子系统:1:局域网内简单文字聊天系统,它是在局域网内选择相应的用户,以便对之发送文字信息,2:文件、文件夹传输系统,它是在先把需要传输的文件、文件夹转换成相就的数据流传关,到了目的主机再由之还原。本系统的文字聊天系统实现的功能类似于QQ用户之间的聊天。在设计系统时,应根据简洁、流畅的特点安排布局,在编制程序时应充分考虑这一点传输的稳定、快捷,真正做到“简洁、高效、流畅、安全”的使用环境。用户使用的过程为,先是用户登开启本软件,软件自动检索局域网的其它用户,
java局域网聊天程序 根据对飞鸽传输系统的调研,我认为本设计需要满足以下几个系统设计目标: (1)实用性原则:真正为局域网的实际工作服务,按照需求的轻重缓急,合理设计系统。 (2)可靠性原则:必须为用户提供安全的服务,尤其是要保证传输的稳定性。 (3)友好性原则:使用本系统的用户相当一部分对计算机知识了解很少,所以系统操作上要求简单方便,便于用户掌握。 (4)可扩展性原则:采用开放的标准和接口,便于系统向更大的规模和功能扩展。 根据用户需求,本系统分为两个子系统:1:局域网内简单文字聊天系统,它是在局域网内选择相应的用户,以便对之发送文字信息,2:文件、文件夹传输系统,它是在先把需要传输的文件、文件夹转换成相就的数据流传关,到了目的主机再由之还原。本系统的文字聊天系统实现的功能类似于QQ用户之间的聊天。在设计系统时,应根据简洁、流畅的特点安排布局,在编制程序时应充分考虑这一点传输的稳定、快捷,真正做到“简洁、高效、流畅、安全”的使用环境。用户使用的过程为,先是用户登开启本软件,软件自动检索局域网的其它用户,并以之成为用户列表,让用户选择。当用户发现所要连接的用户之后。
java局域网聊天程序 根据对飞鸽传输系统的调研,我认为本设计需要满足以下几个系统设计目标: (1)实用性原则:真正为局域网的实际工作服务,按照需求的轻重缓急,合理设计系统。 (2)可靠性原则:必须为用户提供安全的服务,尤其是要保证传输的稳定性。 (3)友好性原则:使用本系统的用户相当一部分对计算机知识了解很少,所以系统操作上要求简单方便,便于用户掌握。 (4)可扩展性原则:采用开放的标准和接口,便于系统向更大的规模和功能扩展。 根据用户需求,本系统分为两个子系统:1:局域网内简单文字聊天系统,它是在局域网内选择相应的用户,以便对之发送文字信息,2:文件、文件夹传输系统,它是在先把需要传输的文件、文件夹转换成相就的数据流传关,到了目的主机再由之还原。本系统的文字聊天系统实现的功能类似于QQ用户之间的聊天。在设计系统时,应根据简洁、流畅的特点安排布局,在编制程序时应充分考虑这一点传输的稳定、快捷,真正做到“简洁、高效、流畅、安全”的使用环境。用户使用的过程为,先是用户登开启本软件,软件自动检索局域网的其它用户,并以之成为用户列表,让用户选择。当用户发现所要连接的用户之后。

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧