thinkphp6实现redis连接池_重学计算机网络(八) -------- 手写低配版Jedis实现高并发...

本文介绍了在高并发场景下,如何解决使用Redis时多线程请求丢失或嵌套的问题。博主提出通过创建Redis连接池来避免频繁创建客户端,借鉴数据库连接池的概念,利用阻塞队列BlockingDeque实现简易版连接池。文中详细讲解了阻塞队列的工作原理,并展示了如何使用LinkedBlockingDeque管理Redis客户端,确保在多线程环境下数据的稳定性。
摘要由CSDN通过智能技术生成

博主将会针对Java面试题写一组文章,包括J2ee,SQL,主流Web框架,中间件等面试过程中面试官经常问的问题,欢迎大家关注。一起学习,一起成长。

be00434fc20ef74cfa633d5a15432a2f.png

疑问

在上一节文章中【详细解答可参考上一篇文章简易redis客户端】,我们遗留了两个Socket多线程不安全的问题,在高并发场景下,这种请求会出现请求丢失或请求嵌套,会导致严重问题。如:

1. 当多线程同时发送报文时,由于发送不是原子的,对方接收到的报文势必为混乱的。

例如线程1发送"*2 $3 GET hello_cli";

线程2发送"*2 $3 GET hI_cli";

redis服务端收到的可能是"*2 *2 $3 GET hI_cli $3 GET hello_cli"。

2. 当线程接收时,由于一次发送不对应一次接收,将导致你无法处理。

例如redis服务端发送两个报文"+OK", "+OK";

一个线程可能接收到"OK",另外一个则收到"+OK+"。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值