集群聊天服务器(13)redis环境安装和发布订阅命令
目录
- 环境安装
- 订阅
- redis发布-订阅的客户端编程
- 环境配置
- 客户端编程
- 功能测试
环境安装
sudo apt-get install redis-server
先启动redis服务
/etc/init.d/redis-server start
默认在6379端口上
redis是存键值对的,还可以存链表、数组等等复杂数据结构
而且数据是在内存上存储的,效率非常高
订阅
订阅了一个13
订阅通道号以及发布消息
redis发布-订阅的客户端编程
环境配置
C++对应的则是hiredis
https://github.com/redis/hiredis
github上下载压缩包传到ubuntu中,然后make
sudo make install
然后把动态库拷贝到lib目录下
客户端编程
上报就是一个通道加上字符串(具体内容)
头文件那里一直找不到,反复搞json配置文件
后来发现是连接延迟
然后重启了一下vscode,就不报错了
登录成功就订阅id作为channel
注销就取消订阅
异常退出也取消订阅
如果用户不在本地服务器上在线,那就发布到redis上对应的用户idchannel上,由订阅的接收,群组聊天也是这个流程
功能测试
先启动redis
/etc/init.d/redis-server start
启动nginx
nginx启动需要root权限
然后用netstat -tanp查看一下端口,8000和6379全部打开了
然后打开两个客户端两个服务器
一登录就报段错误
修改了一下redis.cpp
而且都已经连上redis
咋没收到消息
感觉onechat出问题了
不需要这个标识在线了
只能在单台服务器通信,不能跨服务器通信
调试了一下我发现已经接收到了,但是没有打印出来
其实两边都收到消息了,但是没有在shell中打出来,没有接收到
相关文章:

集群聊天服务器(13)redis环境安装和发布订阅命令
目录 环境安装订阅redis发布-订阅的客户端编程环境配置客户端编程 功能测试 环境安装 sudo apt-get install redis-server 先启动redis服务 /etc/init.d/redis-server start默认在6379端口上 redis是存键值对的,还可以存链表、数组等等复杂数据结构 而且数据是在…...

[ubuntu]编译共享内存读取出现read.c:(.text+0x1a): undefined reference to `shm_open‘问题解决方案
问题log /tmp/ccByifPx.o: In function main: read.c:(.text0x1a): undefined reference to shm_open read.c:(.text0xd9): undefined reference to shm_unlink collect2: error: ld returned 1 exit status 程序代码 #include <stdio.h> #include <stdlib.h> #…...

Python Matplotlib 安装指南:使用 Miniconda 实现跨 Linux、macOS 和 Windows 平台安装
Python Matplotlib 安装指南:使用 Miniconda 实现跨 Linux、macOS 和 Windows 平台安装 Matplotlib是Python最常用的数据可视化工具之一,结合Miniconda可以轻松管理安装和依赖项。在这篇文章中,我们将详细介绍如何使用Miniconda在Linux、mac…...

DimensionX 部署笔记
目录 生成视频用CogVideoX-5b-I2V 推理代码: DimensionX 生成视频用CogVideoX-5b-I2V 推理代码: 可以生成,从左向右旋转的,也可以生成从上往下旋转的: import torch from diffusers import CogVideoXImageToVideo…...
django从入门到精通(五)——表单与模型
好的,下面将详细介绍 Django 的表单与模型,包括它们的定义、使用、如何在 Django Admin 中结合使用,以及相关的字段类型和验证机制。 Django 模型与表单 1. Django 模型 Django 模型是一个 Python 类,用于定义数据库中的数据结…...
C语言Day 03 学习总结
Day 03 学习总结 流程控制语句 顺序结构 程序从上到下依次执行。每一条语句顺序执行,直到结束。 选择结构 程序根据条件选择执行某一条分支。包括 if-else 和 switch-case。 循环结构 程序反复执行某段代码。包括 for、while、do-while。 跳转结构 控制程序直接跳…...
kafka中是如何快速定位到一个offset的
定位到具体的segment日志文件,采用二分法先定位到index索引文件计算查找的offset在日志文件的相对偏移量 1、分区和日志段: 每个主题的分区(Partition)被划分为多个日志段(Log Segment)。每个日志段是一个…...
视频对接rtsp协议学习
RTSP协议在视频平台中的应用 RTSP(Real Time Streaming Protocol)是一种基于TCP/IP的应用层协议,主要用于控制流媒体数据的传输和播放。它通过定义一系列命令和请求,实现对流媒体服务器的远程控制,但不传输媒体数据…...
【系统架构设计师】真题论文: 论企业信息化规划的实施与应用(包括解题思路和素材)
更多内容请见: 备考系统架构设计师-专栏介绍和目录 文章目录 真题题目(2012年 试题4)解题思路论文素材参考企业信息化规划概念与主要内容企业信息化规划实施的步骤企业信息化规划的应用案例真题题目(2012年 试题4) 企业信息化建设是一项长期而艰巨的任务,不可能在短时间…...
【ARM Coresight OpenOCD 系列 6.1 -- JTAG Commands】
请阅读【嵌入式开发学习必备专栏】 文章目录 JTAG Transport使用场景配置示例JTAG Speed配置示例初始化过程中的速度调整自适应时钟选择合适的速度Low Level JTAG Commandsdrscanflush_countirscanpathmoveruntestverify_ircaptureverify_jtagJTAG Transport OpenOCD 是一个强…...

开源许可协议
何同学推动了开源协议的认识,功不可没,第一次对开源有了清晰的认识,最宽松的MIT开源协议 源自OSC开源社区:何同学使用开源软件“翻车”,都别吵了!扯什么违反MIT...
241121学习日志——[CSDIY] [InternStudio] 大模型训练营 [11]
CSDIY:这是一个非科班学生的努力之路,从今天开始这个系列会长期更新,(最好做到日更),我会慢慢把自己目前对CS的努力逐一上传,帮助那些和我一样有着梦想的玩家取得胜利!!&…...

跟千里马学框架 遇到的坑
在编译 aosp 的 所有的东西都是和他一样的, 但是出现了这个问题 emulator: command not found 明明所有的都是一样的但是出现了这个问题 , 啥情况 。 首先你的 ubuntu 要开启虚拟机 。 这个自己百度去 重新进行这些步骤 1、 . build/envsetup.s…...
Swift从0开始学习 协议和扩展 day5
协议:定义行为的契约 协议类似于其他语言中的接口。它们定义了一组方法、属性或其他需求,供结构体、类、枚举等类型去遵循和实现。协议并不实现这些需求,而是作为一种约定或合同,确保实现协议的类型会遵循特定的行为。 协议的定义和遵循 在 Swift 中,使用 protocol 关键…...
javaScript交互案例
1、模态框(弹出框) (1)、需求: 点击弹出层,会弹出模态框,并且显示灰色半透明的遮挡层点击关闭按钮,可以关闭模态框,并且同时关闭半透明遮挡层鼠标放在模态框最上面一行,可以按住鼠…...

【自动驾驶】数据集合集!
本文将为您介绍经典、热门的数据集,希望对您在选择适合的数据集时有所帮助。 1 Automatic-driving-Test 更新时间:2024-07-26 访问地址: GitHub 描述: 该模型使用 ultralytics yolo v8 和 deepsort 方法来检测车道与车轮的碰撞并跟踪车辆。…...
el-table表头前几列固定,后面几列根据接口返回的值不同展示不同
在使用 Element UI 的 el-table 组件时,如果想要实现表头的前几列固定,而后面的列根据接口返回的数据动态展示,可以通过以下步骤来实现: 1. 固定表头前几列 在 el-table-column 中使用 fixed 属性来固定表头的前几列。例如&…...

【Redis】redis缓存击穿,缓存雪崩,缓存穿透
一、什么是缓存? 缓存就是与数据交互中的缓冲区,它一般存储在内存中且读写效率高,提高响应时间提高并发性能,如果访问数据的话可以先访问缓存,避免数据查询直接操作数据库,造成后端压力过大。 但是可能会面…...
HBase Flink操作
Apache Flink 是一个开源的分布式流处理框架,能够高效地处理和分析实时数据流以及批数据。HBase 是一个分布式、面向列的开源数据库,是 Hadoop 项目的子项目,适合非结构化数据结构的存储,并提供实时读写能力。以下是关于 Flink 对…...
C# .Net Core通过StreamLoad向Doris写入CSV数据
以下代码可以只关注StreamLoad具体实现。 1.创建StreamLoad返回值Model public class StreamLoadResponse {public long TxnId { get; set; }public string Label { get; set; }public string Comment { get; set; }public string TwoPhaseCommit { get; set; }public string…...

铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...

零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...

OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...
PostgreSQL——环境搭建
一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在࿰…...