Redis INCR命令

用于由一个递增key的整数值。如果该key不存在,它被设置为0执行操作之前。如果key包含了错误类型的值或包含不能被表示为整数,字符串,则返回错误。该操作被限制为64位带符号整数。

返回值
回复整数,键增量后的值

Redis Hincrby 命令

用于为哈希表中的字段值加上指定增量值。
增量也可以为负数,相当于对指定字段进行减法操作。
如果哈希表的 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。
如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。
对一个储存字符串值的字段执行 HINCRBY 命令将造成一个错误。
本操作的值被限制在 64 位(bit)有符号数字表示之内。

Redis Hsetnx 命令

用于为哈希表中不存在的的字段赋值 。
如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。
如果字段已经存在于哈希表中,操作无效。
如果 key 不存在,一个新哈希表被创建并执行 HSETNX 命令。

案例

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using CSRedis;
  6. using System.Threading;
  7. private static void NewMethod()
  8. {
  9. var key = "hashName";
  10. for (int i = 0; i < 100; i++)
  11. {
  12. ThreadPool.SetMaxThreads(2000, 1000);
  13. ThreadPool.QueueUserWorkItem(o =>
  14. {
  15. using (var redis = new RedisClient("127.0.0.1"))
  16. {
  17. var result = redis.Incr("2016060222");
  18. /// 先进行判断 这个是签到计数的hash infodemo 是按照时间+机构编码进行处理的
  19. redis.HSetNx(key, "20160622", 0);
  20. redis.HSetNx(key, "201606221001", 0);
  21. redis.HSetNx(key, "2016062210011001K6100000002A1W52", 0);
  22. /// 获取签到个数
  23. var result2 = redis.HIncrBy(key, "20160622", 1);
  24. var result3 = redis.HIncrBy(key, "201606221001", 1);
  25. var result4 = redis.HIncrBy(key, "2016062210011001K6100000002A1W52", 1);
  26. Console.WriteLine(result2);
  27. }
  28. });
  29. }
  30. }

案例使用的Redis操作类库:csredis.dll 3.2.1 版本

使用事务,批量操作 redis.Multi();redis.Exec();

如果想同时对多个key,增加计数,那么使用事务操作。redis.Multi() / redis.Exec()

案例:

  1. /// <summary>
  2. /// 使用redis的事务来计数,防止在操作的过程中,被其他线程乱入
  3. /// </summary>
  4. /// <param name="field0">字段1</param>
  5. /// <param name="field1">字段2</param>
  6. /// <param name="field2">字段3</param>
  7. /// <returns></returns>
  8. public static userindex RankCount(string field0, string field1, string field2)
  9. {
  10. string key = "hashName";
  11. string redisURL = "127.0.0.1";
  12. using (var redis = new RedisClient(redisURL))
  13. {
  14. //事务的开始
  15. redis.Multi();
  16. redis.HSetNx(key, field0, 0);
  17. redis.HSetNx(key, field1, 0);
  18. redis.HSetNx(key, field2, 0);
  19. var result0 = redis.HIncrBy(key, field0, 1);
  20. var result1 = redis.HIncrBy(key, field1, 1);
  21. var result2 = redis.HIncrBy(key, field2, 1);
  22. //事务的结束
  23. var ress = redis.Exec();
  24. var userInfo = new userindex
  25. {
  26. dayIndex = (long)ress[3],//事务中,每执行一条语句,都会给事务数组增加一条数据。
  27. corpIndex = (long)ress[4],
  28. deptIndex = (long)ress[5]
  29. };
  30. return userInfo;
  31. }
  32. }
  33. public class userindex
  34. {
  35. public long dayIndex { get; set; }
  36. public long deptIndex { get; set; }
  37. public long corpIndex { get; set; }
  38. }

使用Redis的INCR、Hsetnx、Hincrby的命令生成序列号的更多相关文章

  1. redis incr incrby decr decrby命令

    incr.incrby.decr.decrby命令的作用和用法 redis中incr.incrby.decr.decrby属于string数据结构,它们是原子性递增或递减操作. incr递增1并返回递 ...

  2. Redis笔记,安装和常用命令

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/96.html?1455870708 一.redis简单介绍 redis是N ...

  3. Python操作redis系列以 哈希(Hash)命令详解(四)

    # -*- coding: utf-8 -*- import redis #这个redis不能用,请根据自己的需要修改 r =redis.Redis(host=") 1. Hset 命令用于 ...

  4. Redis(Windows安装方法与Java调用实例 & 配置文件参数说明 & Java使用Redis所用Jar包 & Redis与Memcached区别 & redis-cli.exe命令及示例)

    Windows下Redis的安装使用 0.前言 因为是初次使用,所以是在windows下进行安装和使用,参考了几篇博客,下面整理一下 1.安装Redis 官方网站:http://redis.io/ 官 ...

  5. 基于Redis的INCR实现一个限流器

    模式:计数器 计数器是 Redis 的原子性自增操作可实现的最直观的模式了,它的想法相当简单:每当某个操作发生时,向 Redis 发送一个 INCR 命令. 比如在一个 web 应用程序中,如果想知道 ...

  6. Redis启动服务和String常用命令

    Redis启动服务和String常用命令 1. 启动Redis服务 E:\redis>redis-server.exe redis.windows.conf _._ _.-``__ ''-._ ...

  7. Redis中的原子操作(2)-redis中使用Lua脚本保证命令原子性

    Redis 如何应对并发访问 使用 Lua 脚本 Redis 中如何使用 Lua 脚本 EVAL EVALSHA SCRIPT 命令 SCRIPT LOAD SCRIPT EXISTS SCRIPT ...

  8. redis之常用Set和ZSet命令

    redis五种数据类型:String,Hash,List,Set,ZSet.五种数据类型各有优点,各司其职.最后两种数据类型Set和ZSet基本上是一种,ZSet就是给Set加了个排序而已(相当于加了 ...

  9. 【漏洞预警】Redis 4.x/5.x 远程命令执行高危漏洞

    2019年7月09日,阿里云应急响应中心监测到有安全研究人员披露Redis 4.x/5.x 远程命令执行高危漏洞利用代码工具.针对未授权或弱口令的Redis服务,攻击者通过构造特定请求,成功利用漏洞可 ...

随机推荐

  1. 关于MySQL存储过程中遇到的一个错误

    执行结果: 查询:)) comment '操作变量' begin set var='MySQL%Orcle%DeLL%IBM'; select replace(var,'%'... 共 行受到影响 执 ...

  2. JavaScript闭包浅谈

    ------------------- 作者:willingtolove: 本文链接:http://www.cnblogs.com/willingtolove/p/4745889.html 1. 变量 ...

  3. GNU Radio Radar Toolbox

    GNU Radio Radar Toolbox Install guide Change to any folder in your home directory and enter followin ...

  4. 补发:用Meal Prep+模块化饮食来减肥之实操

    自从上次读到仰望尾迹云 老师的模块化饮食的帖子,再了解了一些Meal Prep的内容,结合着做Meal Prep健康餐至今已经快一个半月了.整体感觉还可以,所以在这里讲一下自己的心得体会. 分为三个部 ...

  5. 关于形变属CGAffineTransform性介绍

    CGAffineTransformMakeTranslation每次都是以最初位置的中心点为起始参照 CGAffineTransformTranslate每次都是以传入的transform为起始参照, ...

  6. STM32F10xxx 之 System tick Timer(SYSTICK Timer)

    背景 研究STM32F10xxx定时器的时候,无意间看到了System tick Timer,于是比较深入的了解下,在此做个记录. 正文 System tick Timer是Cotex-M内核的24位 ...

  7. 使用Grunt构建自动化开发环境

    1.准备工作 1)首页确保电脑上网,以及能够访问https://registry.npmjs.org/,因需从此网站中下载安装相应的插件; 2)电脑安装Node.js,Grunt及Grunt插件都是基 ...

  8. HBase 基本shell命令

  9. Android学习资料收集

    1.Android 学习之路 http://stormzhang.com/android/2014/07/07/learn-android-from-rookie/

  10. mysql测试题

    MySQL测试题 一.表关系 请创建如下表,并创建相关约束 创建数据库create database school charset utf8; 建表create table class(cid int ...