背景

问题:
如何在秒杀环境下保证库存不卖超?
如何在保证整点开抢的优惠券能不多不少的发放完毕?

解决方案:
1. 使用MySQL中的库存字段进行扣减。在高并发的情况下由于业务代码的处理延迟,可能导致卖超,如果数据库还有读写分离,那就更加灾难了。
2. 将库存数据读取到内存中加锁进行[……]

继续阅读

HyperLogLog 是什么?

HyperLogLog 是一种基数估算算法, 并非redis独有。
目的是做基数统计,故不是集合,不会保存元数据,只记录数量而不是数值。
消耗空间极小,支持输入非常大体积的数据量。

具体应用场景

说人话,HyperLogLog能用来干啥?

假[……]

继续阅读

背景

上古面试题:让你实现一个附近的人功能,你有什么方案?

“附近的人” 功能生活中是比较常用的,像外卖app附近的餐厅,共享单车app里附近的车辆。既然常用面试被问的概率就很大,实现方法有很多种,MySQL8之后的空间索引,MongoDB的2d索引,Redis3.2之后的GEO等都可以很高[……]

继续阅读

Redis是干嘛用的?为什么要选用Redis?

Redis一个开源的,是高性能的 key-value 数据库,单线程,所有操作均为原子操作。可以用来进行高性能的内存缓存,例如高度重复的数据库查询、秒杀活动中的库存防超卖、消息队列、数据基数统计、距离数据索引/查询等等。本文先从基本的数据结构入手,进[……]

继续阅读