一、Redis1、简介Redis 与其他 key - value 缓存产品有以下三个特点:Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。Redis支持数据的备份,即master-slave模式的数据备份。2、优势性能极高 –
转载
2023-09-15 10:23:43
50阅读
常用消息队列对比RabbitMQRabbitMQ是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, SMTP, STOMP,也正因如此,它非常重量级,更适合于企业级的开发。同时实现了Broker构架,这意味着消息在发送给客户端时先在中心队列排队。对路由,负载均衡或者数据持久化都有很好的支持。RedisRedis是一个基于Key-Value对的NoSQL数据库,开发
转载
2024-03-04 08:20:29
28阅读
TCP/IP怎么就这么多队列啊?今天我们就来细看一下TCP/IP的几个队列,包括建立连接时的半连接队列(sync),全连接队列(accept)和接收报文时的receive、outoforder、prequeue以及backlog队列。建立连接时的队列 如上图所示,这里有两个队列:syns queue(半连接队列)和accept queue(全连接队列)。三次握手中,服务端接收
转载
2024-03-22 21:37:26
91阅读
一、TCP 队列1、syns queue:半连接队列TCP 三次握手(参考:TCP建立连接之三次握手),第一步,服务端接收到客户端发送的 syn 消息后,将连接信息放入 syns queue,此时,双方连接尚未建立,称之为半连接。2、accept queue:全连接队列TCP 三次握手,第三步,客户端接收到服务端发送的 syn + ack 消息后,向服务端发送 ack 消息,服务端接收到此消息后,
转载
2024-03-05 12:08:40
1262阅读
netstat # 查看网络状态.监听端口:开放的端口netstat -lnptcp6 代表的是ipv6的ip地址.服务器,两个进程间进行通信.netstat -an #查看tcp端口的状态tcp三次握手:第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认,SYN:同步序列编号第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j
请教大家一下:我现在用labview做上位机软件与S7-200 SMART进行TCP通信(不用PC access smart)。现在有以下几个疑问,想请教下大家:1. smart PLC作为服务器,上位机为客户端,使用库文件中的TCP_SEND模块。其中DataPtr格式为DWORD双字,DataLen 格式为WORD,如果我想只发送一个
RabbitMQ RabbiMQ是AMQP(高级消息队列协议)的消息中间件的一种,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗,主要是为了实现系统之间的双向解耦而实现的。当生产者大量产生数据时,消费者无法快速消费,那么需要一个中间层。保存这个数据。Redis队列 redis队列是一个是一个Key-Value的NoSQL数据库,开发维护很活跃,虽然它是一个Key-Valu
转载
2023-06-13 15:50:33
132阅读
Redis用双链表list实现队列的LPUSH key value [value ...] 将一个或多个值 value 插入到列表 key 的表头 如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表头: 比如说,对空列表 mylist 执行命令 LPUSH mylist a b c ,列表的值将是 c b a ,这等同于原子性地执行 LPUSH mylist a 、
转载
2024-08-07 13:10:59
34阅读
(一)任务对立的好处 1.公耦合,生产者和消费者无需知道批次实现的细节,只需要决定好任务的描述格式, 这使得生产者和消费则都不同额 团队使用不同的语言编写。 2.已于扩展:消费者可以有多个,而且分布在不同的机器上,可以轻易的降低单台服务器的负载。(二)使用redis实现简单的任务队列(生产者消费者模型) 生产者命令:LPUSH key alue[....] RP
转载
2023-08-15 16:13:39
62阅读
重复消费问题:为了解决消费端因为种种原因而造成的消息丢失问题,我们都知道根源在于因为RabbitMQ的自动ack机制,所以为了避免以上问题,我们会选中手动ack,以确保消息不会因为某些原因而丢失。但随之而来的也有一个问题:如果忘记ack,或者又因为种种原因消费者端没能给RabbitMQ对应ack,无法确认消息已经被消费完了,那这条未被“约束”的消息也许就会被另一个消费者消费,就会造成重复消费问题如
转载
2023-08-15 15:47:52
122阅读
首先找到第一个切入口,redis的列表类型有两个命令LPUSH和RPOP,LPUSH命令可以让元素从左侧进入队列,RPOP命令可以让元素从右侧弹出。这样两个命令配合使用就形成了左边进,右边出的形式,间接实现了队列的功能。生产者通过LPUSH命令添加任务到某个键中,消费者通过RPOP命令不断从该键中取出任务。这时候问题来了,消费者怎么知道啥时有任务?消费者只能不断循环的读取键对应的队列,如果有任务就
转载
2023-07-08 15:11:51
107阅读
延迟队列的应用场景也很常见,例如:session的超时过期、自动取消未付款订单等等。redis中有一种数据结构叫做zset,即有序集合。元素类型为String类型,且元素具有唯一性不能重复,每个元素可附带float类型的score即分值。从zset中获取元素的时候可以通过分值进行排序后获取某个分值范围内的元素或所有元素。public class DelayQueue {
private
转载
2023-08-01 15:24:21
126阅读
事务Redis 通过 WATCH、MULTI、EXEC、DISCARD 命令实现事务功能。使用命令队列(FIFO)保存客户端发送的命令,并一次性、按顺序地执行队列里的命令,知道执行完毕。例如:// 开始事务
redis> multi
OK
// 命令入队
redis> set name "傅园慧"
QUEUED
// 命令入队
redis> set age 20
QUEUED
转载
2023-08-04 19:30:14
171阅读
现在用的消息队列主要有kafka,rabbitmq和redis。相比另外两个,用redis做消息队列的优点是吞吐量高,延迟低,简单易用,易于部署和运维。缺点是没有ACK机制,可靠性方面不足。 本次用swoole + redis 来模拟个消息推送系统。思路1. 某个业务调用消息接口,将内容和对应的uid存入redis列表中,key为msg。 2. 用户连接swoole后,会有个fd来标识这个会话,
转载
2023-08-01 14:33:16
138阅读
1、优势:松耦合
易于扩展 ,消费者可以扩展多个,分布在不同的服务器中 2、LPUSH RPOP 3、BRPOP命令和RPOP相似,唯一区别:当列表中没有元素时,BRPOP命令会一直阻塞住链接,知道有新元素加入 4、BRPOP key timeout &n
转载
2023-07-21 23:43:32
86阅读
消息队列用途:解耦,异步,消峰。 redis实现消息队列的方式:使用List作为key。(先进先出) 实现方法:①lpush,rpop 非阻塞式 ②lpush,brpop 阻塞式 注:柱塞式队列–当队列为空/满时,无法从队列中删除/增加元素。(所谓阻塞:在某种情况下,线程被挂起,直到触发满足条件自动唤醒线程)语法样式1:(实现优先级消息队列) redis 192.168.8.123>brpo
转载
2023-05-25 11:57:49
109阅读
目录1.配置文件 2.redis持久化2.1.RDB2.2.AOF2.3.二者优缺点2.4.常用配置1.配置文件redis配置文件对大小写不敏感 # 指定 redis 只接收来自于该IP地址的请求,如果不进行设置,那么将处理所有请求 bind 127.0.0.1 #redis监听的端口号 port 6379 #tcp keepalive参数。如果
转载
2024-02-04 01:21:06
336阅读
所谓通用配置,就是所有模式都需要修改的配置。redis的配置文件以“#####xxx#####”分隔了不同的功能区。我们以redis.conf文件作为模板进行修改配置。下面只是列出了主要需要修改的一些配置信息。注意:这里不涉及“#### REPLICATION ######”(slave设置)和“##### REDIS CLUSTER #######”(cluster)的配置。完成这些配置后,我们
转载
2023-08-10 11:31:18
393阅读
目前在redis想要实现消息队列的功能有如下的两种方案:1:基于List的lpush和rpop
2:Streams这里不将pub/sub考虑在内,因为其不具备持久化的能力,消息会丢失。其中1是利用其有的先进先出特性实现,2是redis为了实现消息队列专门在redis5版本中定义的一种新的数据结构,这里注意,其也是一种数据结构,和String,Set等处于同等位置的数据结构,只不过内部增加了一些针对
转载
2023-08-30 08:32:03
75阅读
所谓延时队列就是延时的消息队列,下面说一下一些业务场景实践场景订单支付失败,每隔一段时间提醒用户用户并发量的情况,可以延时2分钟给用户发短信先来看看Redis实现普通的消息队列我们知道,对于专业的消息队列中间件,如Kafka和RabbitMQ,消费者在消费消息之前要进行一系列的繁琐过程。如RabbitMQ发消息之前要创建 Exchange,再创建 Queue,还要将 Queue 和 Exchang
转载
2023-08-30 08:34:10
118阅读