本系列将和大家分享Redis分布式缓存,本章主要简单介绍下Redis中的String类型,以及如何使用Redis解决订单秒杀超卖问题。
Redis中5种数据结构之String类型:key-value的缓存,支持过期,value不超过512M。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5SM0M2NwUzMjR2N1MmYjBTY5gjZ2QTMzQ2Y5UjNyETMm9CX0IzLcRDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL1M3Lc9CX6MHc0RHaiojIsJye.png)
Redis是单线程的,比如SetAll & AppendToValue & GetValues & GetAndSetValue & IncrementValue & IncrementValueBy等等,这些看上去像是组合命令,但实际上是一个具体的命令,是一个原子性的命令,不可能出现中间状态,可以应对一些并发情况。下面我们直接通过代码来看下具体使用。
首先来看下Demo的项目结构:
对于.Net而言,Redis操作一般使用ServiceStack.Redis 或者 StackExchange.Redis ,但总体来说ServiceStack.Redis性能更优。
此处推荐使用的是ServiceStack包,虽然它是收费的,有每小时6000次请求限制,但是它是开源的,可以将它的源码下载下来破解后使用,网上应该有挺多相关资料,有兴趣的可以去了解一波。
ServiceStack.Redis源码GitHub地址:https://github.com/ServiceStack/ServiceStack.Redis
首先先来看下Redis客户端的初始化工作:
其中Redis连接字符串(Redis Connection Strings)支持以下几种格式:
下面直接给大家Show一波Redis中与String类型相关的API:
测试如下:
运行结果如下:
Redis中的String类型在项目中使用是最多的,想必大家都有所了解,此处就不再做过多的描述了。
首先先来看下什么是订单秒杀超卖问题:
运行OverSellFailedTest.Show(),结果如下所示:
从运行结果可以看出不仅一个商品卖给了多个人,而且还出现了订单数超过商品数,这就是典型的秒杀超卖问题。
下面我们来看下如何使用Redis解决订单秒杀超卖问题:
运行OverSellTest.Show(),结果如下所示:
从运行结果可以看出使用Redis能够很好的解决订单秒杀超卖问题。
至此本文就全部介绍完了,如果觉得对您有所启发请记得点个赞哦!!!