Redis -单进程单线程(顺序性)

简介

  本篇主要结合 IO 模型,聊聊redis,同时对redis的 顺序性 说说自己的见解,以及,顺序性所解决的问题,简单描述:多线程的情况下,如何结合 顺序性,保证数据一致性;

带着问题看

  redis是单线程还是多线程?
  单线程单进程有什么好处?
  redis真的只有一个线程一个进程吗?

结合IO模型 聊聊Redis

  之前在linux 专栏有简单介绍过IO模型,本节,我打算把学到的理论运用到实际场景中;
  正常 redis有很多的 客户端,即有很多的socket连接进来,可能一个客户端准备了一个tomcat,它有一个线程池,他连着多台机子,分布式的,很多台去连得一个 redis的,不管怎么样,最终站在redis所在的机器来说,就是进的socket很多,全部打在了linux 的内核上了,linux 里redis是个进程,进程会调我们epoll ,然后来遍历,寻找这是哪个客户端socket信息发过来了,然后这个时候 redis是单进程,单线程来进行用户的数据的处理,或者说redis就一个线程一个进程吗?不是的,处理用户的对数据的操作,是他里面的一个线程来完成的,但是它可能还有别的线程在做别的事,但是那个事和数据没有关系,所以我们一般就直接说,redis是单进程,单线程来处理我们用户的请求;

  单进程单线程有什么好处?

  单进程单线程具有"顺序性",在分布式情况下,数据一致性是很重要并且是比较头疼的问题,而redis中的"顺序"性 则可以保证每连接内的命令顺序,即每个连接里面的命令是顺序到达的;
  举个实例:
    redis 存储一个 主键 “K1” 客户端 1,发送一个K1相关指令,同时 客户端2也发送一个K1 指令,对于内核来说没法确定谁先谁后的问题,但是,如果只有一个客户端,并且里面是线性,而且没有使用多线程,即线程安全,只要客户端能正常走,那后面数据就是能直接保证的,如果客户端里面就是多线程,在线程不是安全的情况下就不知道谁跑前面,谁跑后面的问题;

在这里插入图片描述

结尾

  若有遗漏,欢迎指正,感谢~

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值