Redis实现秒杀功能

用Redis实现各种秒杀功能

前言

个人经验总结的一些观点看法,阅读了各大平台提供的关于秒杀实现的资料,总结的仅供参考,文中有写的不对的地方请指正!

秒杀设计

一般处理秒杀有三种思路:
分布式处理
异步处理
写入内存处理

分布式处理

分布式处理就是把大量的请求分散到多个服务器上运行,一般使用hash实现均匀分布(通过支持MD5与MurmurHash两种计算方式,默认是采用MurmurHash,高效的hash计算实现均匀分布;还有Paxos算法;Hash Ring实现)
分布式锁也可以实现:通过setnx(lock_timeout)实现,如果设置了锁返回1, 已经有值没有设置成功返回0
死锁问题:主要通过获取过期时间,获取到过期时间get,然后判断getset是否与get相等。

异步处理

秒杀一般时间短,并发大,负载压力大。所以使用异步处理,后台启动多个线程从内存池中异步读取数据,进行处理。异步处理通常使用MQ处理(处理性能高,还能熔断),也可以使用Celery异步,
消息队列:主要目的是减少请求响应时间和解耦。所以主要的使用场景就是将比较耗时而且不需要即时(同步)返回结果的操作作为消息放入消息队列。同时由于使用了消息队列,只要保证消息格式不变,消息的发送方和接收方并不需要彼此联系,也不需要受对方的影响,即解耦和。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值