首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

java面试题 --- Redis①

string:键值对存储,类似 Java HashMap,一个 key 对应一个 value,value 最大为 512M; list:一个双向链表,支持两端去操作数据; set:无序不重复的集合...做缓存,存储热点数据; 做分布式锁; 做消息队列; ---- 4....、IO多路复用程序、文件事件分派器和事件处理器构成; Redis 的文件事件处理器首先使用 IO 多路复用程序监听多个套接,并根据套接执行的任务来为套接关联事件处理器;当监听的套接要执行 accept...要执行的命令一多,这样的来回在网络的消耗也就变多了,管道技术的原理简单说就是把所有的命令先发送过去,然后等服务端执行完统一响应,这样就减少了网络消耗。 ---- 7....如何保证 Redis 的数据都是热点数据? 当 Redis 的数据集上升到一定程度,会根据内存淘汰策略淘汰数据。

20820

详解操作系统之进程间通信 IPC (InterProcess Communication)

如果一个信号进程设置为阻塞,则该信号的传递延迟,直到其阻塞取消是才传递给进程。 Linux系统中常用信号: (1)SIGHUP:用户终端注销,所有已启动进程都将收到该进程。...与管道(无名管道:只存在于内存的文件;命名管道:存在于实际的磁盘介质或者文件系统)不同的是消息队列存放在内核,只有在内核重启(即,操作系统重启)或者显示删除一个消息队列时,该消息队列才会被真正的删除...(6)目前主要有两种类型的消息队列:POSIX消息队列以及System V消息队列,系统V消息队列目前大量使用。系统V消息队列是随内核持续的,只有在内核重起或者人工删除时,该消息队列才会被删除。...流套接提供的是一个有序、可靠、双向字节流的连接,因此发送的数据可以确保不会丢失、重复或乱序到达,而且它还有一定的出错重新发送的机制。...三是原始套接,原始套接允许对较低层次的协议直接访问,比如IP、 ICMP协议,它常用于检验新的协议实现,或者访问现有服务配置的新设备,因为RAW SOCKET可以自如控制Windows下的多种协议

2.6K30
您找到你想要的搜索结果了吗?
是的
没有找到

MQ界的“三兄弟”:Kafka、ZeroMQ和RabbitMQ,有何区别?该如何选择?

当消费者完成消息处理,可以确认消息已被消费,从而队列删除消息。2.3.4 交换器组件交换器组件接收来自生产者的消息,并根据特定的路由规则将其分发到一个或多个队列。...2.4.2 点对点模式在点对点模式下,消息发送到特定的队列,然后只有一个消费者队列获取并处理该消息。这种模式适用于需要确保每个消息只能一个消费者处理的场景,例如任务分配或请求-响应系统。...发布者将消息发布到 PUB 套接。订阅者 SUB 套接接收发布者发送消息。...响应者 REP 套接接收请求,并发送响应。请求者接收响应。3.4.3 多线程并发模式ZeroMQ 提供了多线程并发模式,允许多个线程通过套接进行消息通信。这种模式可以用于多线程环境的并发编程。...消息经过一系列的路由节点,每个节点根据消息的目的进行路由。工作流程如下:路由节点创建一个 ROUTER 套接,并绑定到一个地址。消息发送方将消息发送到 ROUTER 套接,指定消息的目的

6K21

第六十九期:聊一聊Node程序调试(二)

我们的代码传递120000作为传递给setTimeout的第二个参数,在内部,第一个参数(超时回调)添加到一个回调队列,该队列应在120000毫秒运行。...我们可以看到何时与服务器建立了新连接,何时消息结束,何时套接关闭。剩下的两条神秘消息是write ret=true和SERVER socketOnParserExecute 78。...write ret=true与服务器尝试写入套接的时间有关。如果该值为false,则意味着套接已关闭,服务器将(再次在内部)开始处理该场景。...至于socketOnParserExecute消息,这需要使用节点的内部HTTP解析器(用C++写的,数字78是客户端发送到服务器的头的字符串长度。 多个标识的组合对我们来说非常有用。...我们可以在服务器上看到新的http连接消息,设置了两个时间间隔(基于创建的超时列表),一个是120000毫秒(两分钟,默认套接超时),另一个(在示例)是146毫秒。

34320

网络是怎样连接的 第一、二章 笔记

当DNS服务器收到消息,它会根据消息的查询内容进行查询,如果要访问的Web服务器已在DNS服务器上注册,那么这条记录就能找到,然后其IP地址会被写入响应消息并返回给客户端。...通信阶段) 4.断开管道并删除套接 (断开阶段) 管道在连接时是有客户端发起的,但在断开时可以由客户端或服务器任意一方发起 当管道断开套接就会被删除 注:以上四个操作都是由协议栈来执行的,浏览器等应用程序并不会自己去做...当消息存放到内存缓冲区时,就相当于已经转交给了应用程序 断开阶段 调用Socke库的close程序组件 连接在套接之间的管道会被断开,套接本身也会被删除 Web使用的HTTP协议规定,当Web服务器发送完响应消息...,如果没有问题则返回ACK号 然后,协议栈将数据块暂存到数据缓冲区,并将数据块按顺序连接起来还原出原始的数据,最后将数据交给应用程序,之后,协议栈要找到合适的时机向发送发送窗口更新 服务器断开并删除套接...,套接并不会立即被删除,而是会等待一段时间之后再被删除 等待的这段时间是为了防止误操作 例如:客户端返回的ACK号丢失了,服务器没有收到,可能会重发一次FIN包,如果这时客户端的套接已经删除,端口释放

74610

【Netty】NIO 网络编程 聊天室案例

: 服务器端收到客户端发送消息 , 将该消息转发给除该客户端外的其它客户端 , 选择器可以获取到所有的 通道 , 注意 屏蔽 服务器套接通道 和 发送消息的客户端对应的通道 ; 服务器连接监听...服务器套接通道 : 调用 open 静态方法创建服务器套接通道 , 并绑定 8888 端口 , 设置非阻塞网络通信模式 ; // 创建并配置 服务器套接通道 ServerSocketChannel...监听服务器端下发的消息 : 阻塞监听, 如果有事件触发, 返回触发的事件个数 ; 触发的 SelectionKey 事件都存放到了 Set selectedKeys 集合...@Override public void run() { while (true){ //不停服务器端读取数据...客户端 2 发送消息 : 服务器显示 : 客户端 2 将消息发送给服务器 , 服务器显示该消息 ; 客户端 1 显示 : 这是由服务器转发的客户端 2 发送消息 , 客户端 3

1.3K10

Java阿里面试题

# 套接( socket ) : 套接也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信。 Java如何支持进程间通信。我们把Java进程理解为JVM进程。...,常量(JDK7String常量池移到堆),静态变量(JDK7移到Java堆),及时编译期编译的代码(类方法)等数据。...新生代存储了新new出的对象,老年代存储了大的对象和多次GC仍然存在的老年对象,持久代存储了类信息,常量(JDK7String常量池移到堆),静态变量(JDK7移到了Java堆),类方法 具体请查看...UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的。...这时候缓冲区的一个报文进程读取,缓冲区有了一个空位,于是B向A发送一个ACK,这个报文中指示窗口大小为1。

1.2K10

Redis学习最终版:面试题合集

丰富的特性:可用于缓存,消息,按key设置过期时间,过期将会自动删除如何解决redis的并发竞争key问题 同时有多个子系统去set一个key。这个时候要注意什么呢?...当监听的套接准备好执行连接应答(accept)、读取(read)、写入(write)、关闭(close)等操作时, 与操作相对应的文件事件就会产生, 这时文件事件处理器就会调用套接之前关联好的事件处理器来处理这些事件...、每次一个套接的方式向文件事件分派器传送套接: 当上一个套接产生的事件处理完毕之后(该套接为事件所关联的事件处理器执行完毕), I/O 多路复用程序才会继续向文件事件分派器传送下一个套接。...如果一个套接又可读又可写的话, 那么服务器将先读套接套接。 22、为什么Redis的操作是原子性的,怎么保证原子性的?...MULTI执行之后,客户端可以继续向服务器发送任意多条命令,这些命令不会立即被执行,而是放到一个队列,当EXEC命令调用时,所有队列的命令才会被执行。 2)EXEC:执行所有事务块内的命令。

18710

收发数据的原理(下)

通信结束之后,我们要删除套接,不过,套接不会立即被删除,而是会等待一段时间之后再被删除。...如果这个时候,客户端的套接已经删除,那么套接中保存的开工至信息也跟着消失,套接对应的端口号就会被释放出来。...这时,如果别的应用程序创建套接,新套接刚好分配了同一个端口号,而服务器重发的FIN正好到达,这个时候,FIN就会错误的跑到新套接里面,新套接就开始执行断开操作了。...所以不马上删除套接,就是由于这样。 客户端的端口号是空闲的端口号随意选择的。 等待多长时间才删除套接,这得看包重传的操作方式。网络包丢失之后会进行重传,这操作一般要持续几分钟。...客户端收到全部数据,也会生成一个 FIN 比特为1的TCP包,发送给服务器,服务器也返回ACK号,等待一段时间套接会被删除。到此,客户端和服务器的通信全部结束。

96720

计网之网络应用

==>有 套接:Socket : 传输层与应用层数据传输通道 进程间通信利用socket发送/接收消息实现 类似于寄信 发送方将消息送到门外邮箱 发送发依赖(门外的)传输基础设施将消息传到接收方所在主机...TCP连接打开 后续的HTTP消息可以通过这个连接发送 无流水(pipelinling)的持久性连接 客户端只有收到前一个响应发送新的请求 每个引用的对象耗时1个RTT 带有流水机制的持久性连接...Retr : 用编号获取消息 Dele : 删除消息 Quit "下载并删除"模式 用户如果换了客户端软件,无法重读该邮件 在办公室使用电脑下载并删除了某个邮件,到家时无法再读取...saddr的套接(服务)进行连接 accept newsock = accpet(sd,caddr,caddrlen); 服务程序调用accept函数处于监听状态的流套接sd的客户端请求队列取出排在最前面的一个客户请求...,saddrlen); recv函数TCP连接的另一端接收数据,或调用了connect函数的UDP客户端套接接收服务器发来的数据 recvform函数用于UDP服务器端套接与未调用connect

27331

windows socket编程c语言_网络编程socket

另外 ,数据报套接支持广播发送 ,使用 setsockopt() 函数可以使指定的套接发送广播消息。相比之下 ,流式套接不支持广播发送。...如图 3 所示 : 3 在 VC 下开发套接程序 在实际编程 ,我们一般采用面向对象技术 ,特别采用消息驱动机制实现多任务的 Windows 编程思想 ,VC 由于它的强大的功能而广泛采用...我们可以在一个工作线程处理数据的接收和发送 ,该工作线程可以在后台运行 ,套接在工作线程的阻塞不会影响主线程的其它活动 ,这样主线程可以处理主窗口的消息映射。...举例说明 ,在异步方式 ,在调用 Receive 函数 ,会得到 WSAEWOULDBLOCK的错误信 息 ,直到 OnReceive 回调函数调用以通知我们可以再次接收数据了。...另外 ,如果两个线程调用同一个套接 ;在一个线程关闭一个末完成的阻塞的套 接将会导致另一个线程使用同一套接的阻塞调用出错(WSAEINTER) 返回 ,就象操作取消一样。

6.8K10

java网络编程0到1快速上手

,故是不可靠的 可以广播发送 发送数据结束时无需释放资源,开销小,速度快 第一次的时候确认发送方能发送消息 第二次的时候确认接收方能接受消息发送消息 第三次的时候确认接收方能接受消息...如果尚未绑定套接,则返回 -1。即本端的端口号 public void close() 关闭此套接套接关闭,便不可在以后的网络连接中使用(即无法重新连接或重新绑定)。...套接输入流读取内容,则流将返回 EOF(文件结束符)。...如果在套接上调用 shutdownOutput() 写入套接输出流则该流将抛出 IOException。...UDP数据报通过数据报套接 DatagramSocket 发送和接收,系统不保证UDP数据报一定能够安全送到目的,也不能确定什么时候可以抵达。

21130

Redis面试题

,要么全部不执行 丰富的特性:可用于缓存,消息,按key设置过期时间,过期将会自动删除如何解决redis的并发竞争key问题 同时有多个子系统去set一个key。...当监听的套接准备好执行连接应答(accept)、读取(read)、写入(write)、关闭(close)等操作时, 与操作相对应的文件事件就会产生, 这时文件事件处理器就会调用套接之前关联好的事件处理器来处理这些事件...、每次一个套接的方式向文件事件分派器传送套接: 当上一个套接产生的事件处理完毕之后(该套接为事件所关联的事件处理器执行完毕), I/O 多路复用程序才会继续向文件事件分派器传送下一个套接。...如果一个套接又可读又可写的话, 那么服务器将先读套接套接. 12. 为什么Redis的操作是原子性的,怎么保证原子性的?...MULTI执行之后,客户端可以继续向服务器发送任意多条命令,这些命令不会立即被执行,而是放到一个队列,当EXEC命令调用时,所有队列的命令才会被执行。 2)EXEC:执行所有事务块内的命令。

39563

面试问到的TCP HTTP 和 Scoket 三者的区别

客户往自己的套接发送 HTTP 请求消息,也自己的套接接收 HTTP 响应消息。类似地,服务器自己的套接接收 HTTP 请求消息,也往自己的套接发送 HTTP 响应消息。...客户或服务器一旦把某个消息送入各自的套接,这个消息就完全落入 TCP 的控制之中。...TCP 给 HTTP 提供一个可靠的数据传输服务; 这意味着由客户发出的每个 HTTP 请求消息最终将无损到达服务器,由服务器发出的每个 HTTP 响应消息最终也将无损到达客户。...PUT 客户端向服务器传送的数据取代指定的文档的内容。 DELETE 请求服务器删除指定的页面。...Host A上的程序 A 将一段信息写入Socket,Socket的内容Host A的网络管理软件访问,并将这段信息通过 Host A 的网络接口卡发送到Host B,Host B的网络接口卡接收到这段信息

1K10

Redis 面试题全面总结,建议收藏。

,要么全部不执行 丰富的特性:可用于缓存,消息,按key设置过期时间,过期将会自动删除如何解决redis的并发竞争key问题 同时有多个子系统去set一个key。...当监听的套接准备好执行连接应答(accept)、读取(read)、写入(write)、关闭(close)等操作时, 与操作相对应的文件事件就会产生, 这时文件事件处理器就会调用套接之前关联好的事件处理器来处理这些事件...、每次一个套接的方式向文件事件分派器传送套接: 当上一个套接产生的事件处理完毕之后(该套接为事件所关联的事件处理器执行完毕), I/O 多路复用程序才会继续向文件事件分派器传送下一个套接。...如果一个套接又可读又可写的话, 那么服务器将先读套接套接. 图片 为什么Redis的操作是原子性的,怎么保证原子性的?...MULTI执行之后,客户端可以继续向服务器发送任意多条命令,这些命令不会立即被执行,而是放到一个队列,当EXEC命令调用时,所有队列的命令才会被执行。 2)EXEC:执行所有事务块内的命令。

29710

Redis面试题汇总(附答案),面试突击专用

,要么全部不执行 丰富的特性:可用于缓存,消息,按key设置过期时间,过期将会自动删除如何解决redis的并发竞争key问题 同时有多个子系统去set一个key。...当监听的套接准备好执行连接应答(accept)、读取(read)、写入(write)、关闭(close)等操作时, 与操作相对应的文件事件就会产生, 这时文件事件处理器就会调用套接之前关联好的事件处理器来处理这些事件...、每次一个套接的方式向文件事件分派器传送套接: 当上一个套接产生的事件处理完毕之后(该套接为事件所关联的事件处理器执行完毕), I/O 多路复用程序才会继续向文件事件分派器传送下一个套接。...如果一个套接又可读又可写的话, 那么服务器将先读套接套接. 为什么Redis的操作是原子性的,怎么保证原子性的?...MULTI执行之后,客户端可以继续向服务器发送任意多条命令,这些命令不会立即被执行,而是放到一个队列,当EXEC命令调用时,所有队列的命令才会被执行。 2)EXEC:执行所有事务块内的命令。

94600

读者让我总结一波 redis 面试题,现在肝出来了!

,要么全部不执行 丰富的特性:可用于缓存,消息,按key设置过期时间,过期将会自动删除如何解决redis的并发竞争key问题 同时有多个子系统去set一个key。...当监听的套接准备好执行连接应答(accept)、读取(read)、写入(write)、关闭(close)等操作时, 与操作相对应的文件事件就会产生, 这时文件事件处理器就会调用套接之前关联好的事件处理器来处理这些事件...、每次一个套接的方式向文件事件分派器传送套接: 当上一个套接产生的事件处理完毕之后(该套接为事件所关联的事件处理器执行完毕), I/O 多路复用程序才会继续向文件事件分派器传送下一个套接。...如果一个套接又可读又可写的话, 那么服务器将先读套接套接. ? 为什么Redis的操作是原子性的,怎么保证原子性的?...MULTI执行之后,客户端可以继续向服务器发送任意多条命令,这些命令不会立即被执行,而是放到一个队列,当EXEC命令调用时,所有队列的命令才会被执行。 2)EXEC:执行所有事务块内的命令。

36410

Redis 高级面试题 学会这些还怕进不了大厂?「建议收藏」

丰富的特性:可用于缓存,消息,按 key 设置过期时间,过期将会自动删除如何解决 redis 的并发竞争 key 问题,同时有多个子系统去 set 一个 key。这个时候要注意什么呢?...当监听的套接准备好执行连接应答 (accept)、读取(read)、写入(write)、关闭(close)等操作时, 与操作相对应的文 件事件就会产生, 这时文件事件处理器就会调用套接之前关联好的事件处理器来处理这...)、每次一个套接的方式向文件事件分派器传送套接:当上一个套接 产生的事件处理完毕之后(该套接为事件所关联的事件处理器执行完毕), I/O 多 路复用程序才会继续向文件事件分派器传送下一个套接...如果一个套接又可读又可写的 话, 那么服务器将先读套接套接. 为什么 Redis 的操作是原子性的,怎么保证原子性的?...MULTI 执行之后,客户端可以继续向 服务器发送任意多条命令,这些命令不会立即被执行,而是放到一个队列,当 EXEC 命 令调用时,所有队列的命令才会被执行。

25420

Linux进程通信

消息队列是通过IPC标识符来区别的,不同的消息队列之间是相互独立的链表。有足够权限的进程可以顺序发送消息消息队列赋予读权限的进程可以读走消息队列消息。...返回值:成功时返回放到接收缓存区的字节数,消息被复制到由msgp指向的用户分配的缓存区,然后删除消息队列的对应消息;失败时返回-1。...SIG_UNBLOCK:将信号集block表删除;SIG_SETMASK:将信号集设置为block表。...6 套接(socket) 套接是一种进程间通信机制,可用于不同机器间的进程通信。...; 参数:sock:将要从其发送数据的套接;buf:指向将要发送数据的缓冲区;len:数据缓冲区的长度;flags:一般是0;to:指明数据的目的;tolen:to内存区的长度。

1.9K20

读书笔记之《网络是怎样连接的》

那么消息发送的过程就是: 发送者发出的消息首先经过子网的集线器,然后转发到距离发送者最近的路由器上,路由器会根据消息的目的判断下一个路由器的位置,然后将消息发送到下一个路由器,多次转发就到了最终的目的...在进行收发数据之前,双方需要先建立一条管道,建立管道的关键在于 管道两端数据的出入口,这些出入口就称为 套接,然后将套接连接起来就形成了管道,数据沿着这条通道流动(双向),最终到达目的。...总结,收发数据的大致操作如下: 创建套接阶段:创建套接 连接阶段:将管道连接到服务器端的套接上 通信阶段:收发数据 断开阶段:断开管道并删除套接 第二章:用电信号传输 TCP/IP 数据 1)...TCP头部,并根据套接记录的控制信息标记发送方和接收方的端口号,然后交给 IP 模块进行发送 4)服务器断开并删除套接 和服务器的通信结束之后,用来通信的套接也就不会再使用了,这时我们就可以删除这个套接了...,不过套接并不会马上被删除,而是会等待一段时间之后再被删除,等待一段时间的原因是为了防止误操作。

1.1K30
领券