使用redis命令

利用SETNX 来创建锁

获取和删除SETNX

 //servcestack.redis3.9.7
public class RedisHelper{private readonly static string RedisPath = "123654@127.0.0.1:6379";private readonly static PooledRedisClientManager _pool = null;public static IRedisClient redisClient = null;static RedisHelper(){if (redisClient == null){_pool = new PooledRedisClientManager(new string[] { RedisPath },
new string[] { RedisPath },
new RedisClientManagerConfig() { MaxReadPoolSize = 50, MaxWritePoolSize = 50, AutoStart = true });}}public static bool GetSetNX(string key) {bool issuccess = false;lock (_pool){using (IRedisClient redisclient = _pool.GetClient()){TimeSpan value = new TimeSpan(365, 0, 0, 0);DateTime dateTime = DateTime.UtcNow.Add(value);string value2 = (dateTime.ToUnixTimeMs() + 1L).ToString();issuccess=redisclient.SetEntryIfNotExists(key, value2);}}return issuccess;}public static bool Remove(string key){bool issuccess = false;lock (_pool){using (IRedisClient redisclient = _pool.GetClient()){issuccess = redisclient.Remove(key);}}return issuccess;}/// <summary>/// 模拟使用/// </summary>/// <returns></returns>public static bool SecKill2(){bool issuccess = false;using (IRedisClient r = _pool.GetClient()){using (RedisLock l=new RedisLock("lock")){try{//业务逻辑}catch (Exception ex){l.Dispose();}finally{}}}return issuccess;}
}

创建一个简单的锁

    public class RedisLock : IDisposable{private readonly string key;public void Dispose(){RedisHelper.Remove(key);}public  RedisLock(string _key) {this.key = _key;while (true) {if (RedisHelper.GetSetNX(key)) {break ;}Thread.Sleep(100);}}}

C#简单使用redis锁相关推荐

  1. springboot mysql行锁_SpringBoot基于数据库实现简单的分布式锁

    本文介绍SpringBoot基于数据库实现简单的分布式锁. 1.简介 分布式锁的方式有很多种,通常方案有: 基于mysql数据库 基于redis 基于ZooKeeper 网上的实现方式有很多,本文主要 ...

  2. 【求锤得锤的故事】Redis锁从面试连环炮聊到神仙打架。

    来自:why技术 又到了一周一次的分享时间啦,老规矩,还是先荒腔走板的聊聊生活. 有上面的图是读大学的时候,一次自行车骑行途中队友抓拍的我的照片.拍照的地方,名字叫做牛背山,一个名字很 low,实际很 ...

  3. 解锁redis锁的正确姿势

    解锁redis锁的正确姿势 redis是php的好朋友,在php写业务过程中,有时候会使用到锁的概念,同时只能有一个人可以操作某个行为.这个时候我们就要用到锁.锁的方式有好几种,php不能在内存中用锁 ...

  4. 必看企业级Redis锁资产巡检扫描业务场景实现(加锁限制扫描次数)

    Redis实现资产巡检扫描 前言 一.需求一:限制扫描次数 1.1 业务分析 1.2 代码实现 二.需求二:限制同一个位置同一时间只能有一个人扫描 1.1 业务分析 1.2 伪代码实现 1.3 具体代 ...

  5. java加redis锁

    redis锁的作用: 防止接口重复提交数据 maven包: <dependency><groupId>org.redisson</groupId><artif ...

  6. 线上故障之-redis锁处理幂等性失效和幂等性问题解决方案

    线上故障之-redis锁处理幂等性失效和幂等性问题解决方案 redis锁处理幂等性失效 事务传播bug try bug 幂等性设计方法 1. insert前先select 2. 加悲观锁 3. 加乐观 ...

  7. 通过Expire实现Redis锁机制

    在我们的业务系统中,可能因为某种原因,用户会不断的点击表单提交按钮,为了较少对系统的 无意义访问.暴力提交 以及用户体验,我们利用redis的过期时间简单的实现了一种Redis锁 当用户提交表单的时候 ...

  8. 线上故障之-雪花算法重复、序列化、redis锁失效、double精准计算

    线上故障之-雪花算法重复.序列化.redis锁失效.double精准计算 雪花算法重复 问题发现 定位 影响范围 解决方案 扩展-雪花算法原理分析: 序列化 运营商 POP 裸机搭售自营套餐事故分析 ...

  9. RedisTemplate实现Redis锁

    Redis锁 项目中使用redis锁主要是依据 redis setnx命令的特性(SETNX:在指定的 key 不存在时,为 key 设置指定的值. 设置成功,返回 1 设置失败,返回 0 ) 实现R ...

最新文章

  1. LeetCode刷题记录8——605. Can Place Flowers(easy)
  2. 零基础快速学习Java技术的方法整理
  3. python操作文件open_python:open/文件操作
  4. hbase 修改表名_HBase学习——2.HBase原理
  5. java 常用模块_Java 常见面试题的模块
  6. uber在限制新司机加入了,看看新政策把
  7. Codeforces Round #506 (Div. 3) - C. Maximal Intersection (思维,模拟)
  8. .NET Core玩转机器学习
  9. ThreadLocal类的实现用法
  10. Axis1.4 在weblogic9.2中报 (401)Unauthorized 的处理
  11. nfine框架连接oracle,NFine快速开发框架(无后门)
  12. matlab经纬度距离方位角,计算经纬度、距离、方位角(示例代码)
  13. 干货!一文带你认清SD卡、TF卡、SIM卡!
  14. FTP服务器是什么【摘自IT百科】
  15. 在HTML中显示base64格式的img图片
  16. 大数据开发:基于Hadoop的数据分析平台
  17. C语言之结构体就这样被攻克了!值得收藏!
  18. 昨天玩游戏的情绪总结
  19. STC15单片机-ADC获取环境温度(NTC热敏电阻)
  20. Asp.Net MVC EF各版本区别

热门文章

  1. 情人节这天晚上,前任、单身狗和情侣们都在干啥?
  2. 缴党费,收党费,就用银联党费通
  3. parallels desktop windows环境安装的软件都显示在mac桌面怎么隐藏
  4. 有哪些免费在线压缩图片的方法或工具
  5. TP-LINK实习生总结
  6. 数据库数据导出到Excel
  7. 学生专用计算机玩游戏教学,浅谈信息技术课上学生玩游戏的现象
  8. js 向下取整,向上取整,四舍五入
  9. java-net-php-python-jsp废旧物资回收管理系统计算机毕业设计程序
  10. 一个工作、看书、写字产品经理的Q2总结!