大神都来聊聊高并发问题吧

用户请求会先请求redis,如果没有数据,才会读取mysql,并写入redis。例如,十万的并发请求mysql(因为redis没有此数据),如何保证读取一次mysql后,剩下的十万请求读取redis。有什么解决高并发的方案吗

0

2个回答

读取一次mysql创建一个redis key value 秘钥,再次请求mysql,验证这个秘钥,如果能取到值就读redis ,
高并发可以使用nginx,可以直接配一个试试,一劳永逸

0
longzhongxiaoniao
Java技术 回复weixin_37911281: 秘钥也是存入redis吗, 之前的流程是:先读取redis,没有,再读取数据库,然后回写redis, 你的意思是说,在读取数据库之前再判断下redis?相当于如果redis中没有数据,需要读两遍redis后,再读mysql?
接近 2 年之前 回复
longzhongxiaoniao
Java技术 回复weixin_37911281: 秘钥也是存入redis吗, 之前的流程是:先读取redis,没有,再读取数据库,然后回写redis, 你的意思是说,在读取数据库之前再判断下redis?相当于如果redis中没有数据,需要读两遍redis后,再读mysql?
接近 2 年之前 回复

觉得你这个问题有些考虑多余了, 楼主意思应该是第一次查询之后 ,剩下对的99999次都应该是读取redis吧, 首先10W请求不可能同时都到执行到查询数据的地方,总会有先后差的,而且请求处理能力也不能有这么快,所以总会有部分请求仍然查询到的是mysql数据, 但是绝大部分还是会读取的redis,这个并不会对程序造成多大影响。我觉得更应该关注的是你的程序对请求的处理的能力,是否考虑楼上所说使用nginx负载

0
longzhongxiaoniao
Java技术 回复采菇凉的小蘑菇丶: 明白你所说的,nginx当然也有在用。这是面试时候遇到的一个问题,不知道是真有很明确的解决方案还是考察逻辑变通能力。还有,感觉这种问题有点钻牛犄角了,当时没答出来,反问了面试官,他说你还是回去百度吧,不知道这里边究竟什么鬼,谁知道这里的套路何在。
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!