redis为什么快,消息队列,单线程

为什么快?

1.基于内存:Redis是使用内存存储,没有磁盘IO上的开销。数据存在内存中,读写速度快。

2.单线程实现( Redis 6.0以前): Redis使用单个线程处理请求,避免了多个线程之间线程切换和锁资源争用的开销。

3.IO多路复用模型:Redis采用IO多路复用技术。Redis 使用单线程来轮询描述符,将数据库的操作都转换成了事件,不在网络IO上浪费过多的时间。

4.高效的数据结构:Redis每种数据类型底层都做了优化,目的就是为了追求更快的速度。

redis为什么选择单线程

1、单线程实现可以避免过多的上下文切换开销。程序始终运行在进程中单个线程内,没有多线程切换的场景。

2、避免同步机制的开销。如果Redis选择多线程模型,需要考虑数据同步的问题,则必然会引入某些同步机制,会导致在操作数据过程中带来更多的开销,增加程序复杂度的同时还会降低性能。

3、实现简单,方便维护。如果Redis使用多线程模式,那么所有的底层数据结构的设计都必须考虑线程安全问题,那么Redis的实现将会变得更加复杂。

应用场景

Redis应用场景有哪些?

1、缓存热点数据,缓解数据库的压力。

2、利用Redis 原子性的自增操作,可以实现计数器的功能,比如统计用户点赞数、用户访问数等。

3、作为简单的消息队列,实现异步操作。

4、限速器,可用于限制某个用户访问某个接口的频率,比如秒杀场景用于防止用户快速点击带来不必要的压力。

5、好友关系,利用集合的一些命令,比如交集、并集、差集等,实现共同好友、共同爱好之类的功能。

redis怎么实现消息队列

1、使用列表,让生产者将任务使用LPUSH命令放进列表,消费者不断用RPOP从列表取出任务。

2、发布订阅模式。类似于MQ的主题模式。只能消费订阅之后发布的消息,一个消息可以被多个订阅者消费。

3、延时队列。使用sortedset,拿时间戳作为score,消息内容作为key,调用zadd来生产消息,消费者用zrangebyscore`指令获取N秒之前的数据轮询进行处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值