.NET 操作redis原子性
2020-01-11 本文已影响0人
曾小芳zxf
前段时间需要做一个抢票功能,为了解决并发问题,使用到了redis原子性操作,下面介绍一下原子性:
由于redis版本不同,创建原子性的方法存放位置不同,但都是存放在serciceStack.Redis中,全局查找程序集就可以找到。
redis 原子性介绍:
原子性(atomicity):一个事务是一个不可分割的最小工作单位,要么都成功要么都失败。

使用下面这个接口。

//redis k值
var key = "AuthorizeUrl_pull";//加入原子性
long num = RedisCache.IncrementValue(key);
if (num == 1)
{
//设置缓存过期时间
RedisCache.Hash_SetExpire(key, DateTime.Now.AddSeconds(7));
下面为自己业务,
解释:
存入具有原子性的redis缓存,每次请求缓存的value会加1,设置7秒的过期时间,在这7秒钟之内只能请求一次。避免高并发以及接口操作过长。
发散思维:
如果在抢单过程中,我需要发10个奖品,在抢单期间如果有大量用户抢单,肯定避免不了高并发以及数据崩坏,
此时就可以运用redis 原子性,当然运用消息队列效果会更好,如果你以及部署了消息队列服务器的话