官方描述:

INCRBY

INCRBY key increment为键 key 储存的数字值加上增量 increment 。
如果键 key 不存在, 那么键 key 的值会先被初始化为 0 , 然后再执行 INCRBY 命令。
如果键 key 储存的值不能被解释为数字, 那么 INCRBY 命令将返回一个错误。

INCR

INCR key为键 key 储存的数字值加上一。
如果键 key 不存在, 那么它的值会先被初始化为 0 , 然后再执行 INCR 命令。
如果键 key 储存的值不能被解释为数字, 那么 INCR 命令将返回一个错误。

可以看出INCR是自增1,而INCRBY则需要一个增量值,其他好像并无区别,Redis源码拿出来看一下


void incrCommand(client *c) {incrDecrCommand(c,1);
}
void incrbyCommand(client *c) {long long incr;if (getLongLongFromObjectOrReply(c, c->argv[2], &incr, NULL) != C_OK) return;incrDecrCommand(c,incr);
}

清楚看到对于这两个命令Redis源码都是调用incrDecrCommand函数,区别在于INCR默认传入1,而INCRBY需要接收一个增量值,所以说着两个命令并无太大区别,都具有原子性

自减命令DECR和DECRBY也是同样的道理


void decrCommand(client *c) {incrDecrCommand(c,-1);
}void decrbyCommand(client *c) {long long incr;if (getLongLongFromObjectOrReply(c, c->argv[2], &incr, NULL) != C_OK) return;incrDecrCommand(c,-incr);
}

源码中incrDecrCommand函数

void incrDecrCommand(client *c, long long incr) {long long value, oldvalue;robj *o, *new;o = lookupKeyWrite(c->db,c->argv[1]);if (checkType(c,o,OBJ_STRING)) return;if (getLongLongFromObjectOrReply(c,o,&value,NULL) != C_OK) return;oldvalue = value;if ((incr < 0 && oldvalue < 0 && incr < (LLONG_MIN-oldvalue)) ||(incr > 0 && oldvalue > 0 && incr > (LLONG_MAX-oldvalue))) {addReplyError(c,"increment or decrement would overflow");return;}value += incr;if (o && o->refcount == 1 && o->encoding == OBJ_ENCODING_INT &&(value < 0 || value >= OBJ_SHARED_INTEGERS) &&value >= LONG_MIN && value <= LONG_MAX){new = o;o->ptr = (void*)((long)value);} else {new = createStringObjectFromLongLongForValue(value);if (o) {dbOverwrite(c->db,c->argv[1],new);} else {dbAdd(c->db,c->argv[1],new);}}signalModifiedKey(c,c->db,c->argv[1]);notifyKeyspaceEvent(NOTIFY_STRING,"incrby",c->argv[1],c->db->id);server.dirty++;addReply(c,shared.colon);addReply(c,new);addReply(c,shared.crlf);
}

Redis命令INCRBY和INCR区别相关推荐

  1. redis之incrby、incr、hincrby的使用

    一.incrby 1.说明 Redis Incrby 命令将 key 中储存的数字加上指定的增量值. 2.语法 INCRBY KEY_NAME INCR_AMOUNT 二.incr 1.说明 Redi ...

  2. Redis命令:INCR key加1

    起始版本:1.0.0 时间复杂度:O(1) 对存储在指定key的数值执行原子的加1操作. 如果指定的key不存在,那么在执行incr操作之前,会先将它的值设定为0. 如果指定的key中存储的值不是字符 ...

  3. [图文讲解]redis命令keys和scan的区别

    1. Keys 命令 语法 redis KEYS 命令基本语法如下: redis 127.0.0.1:6379> KEYS PATTERN KEYS命令使用很简单,查找以 com 为开头的 ke ...

  4. redis将散裂中某个值自增_这些Redis命令你都掌握了没?

    本章主要内容 字符串命令.列表命令和集合命令散列命令和有序集合命令发布命令与订阅命令其他命令 本章将介绍一些没有在第1章和第2章出现过的Redis命令,学习这些命令有助于读者在已有示例的基础上构建更为 ...

  5. php7.2 安装phpredis扩展,以及phpredis操作redis命令列表

    phpredis是redis的php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系;以下是redis官方提供的命令使用技巧: 下载安装地址如下: PHP7.2 安装Redis扩展 ...

  6. php操作redis命令

    phpredis是redis的php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系 很有用;以下是redis官方提供的命令使用技巧: 下载地址如下: https://github. ...

  7. 消息中间件----内存数据库 Redis7(第3章 Redis 命令)

    Redis 根据命令所操作对象的不同,可以分为三大类:对 Redis 进行基础性操作的命令, 对 Key 的操作命令,对 Value 的操作命令. 3.1 Redis 基本命令 首先通过 redis- ...

  8. redis命令参考手册完整版

    Redis 命令参考 Key(键) DEL 格式:DEL key [key ...] 删除给定的一个或多个 key . 不存在的 key 会被忽略. 可用版本: >= 1.0.0 时间复杂度: ...

  9. Redis命令合集和设计场景

    目录 常规命令 String字符串类型 BIT位图 [使用bit命令实现签到功能] List有序链表 Hash哈希 Set无序集合 [使用无序集合统计用户的留存数] Sorted Set有序集合 [使 ...

最新文章

  1. 一个页面标题和过滤输出的解决方案(下)
  2. vue2打包时内存溢出解决方案
  3. windows nginx站点分割日志_Nginx 基础用途拾遗
  4. 馒头,国庆节快乐啊!!~~~!
  5. POJ 3051 DFS
  6. 如何在linq使用左连接
  7. Dubbo超时机制导致的雪崩连接
  8. 从程序媛到微软全球 AKS 女掌门人,技术女神驾到!
  9. Cocos2d-x 3 X CMake MinGW版本编译运行
  10. 聪明人自动焊锡机器人_自动焊锡机的基本焊锡原理
  11. NVIDIA英伟达:深度学习服务器搭建指南 | 交流会笔记
  12. Testbench编写
  13. 基坑监测日报模板_基坑水平监测日报表
  14. alpine安装curl
  15. 免费的视频格式转换器哪个最好用呢?
  16. 一阶电路实验报告心得_实验九实验报告(二)--一阶动态电路的响应测试
  17. element plus 部分组件转英文问题
  18. xcode没有Products的解决方法
  19. html静态网站中华传统文化网站主题设计 传统文化艺术耍牙15页
  20. Java笔记-面向对象(上)

热门文章

  1. 2022年度学习总结
  2. m基于ACO蚁群优化的FCM模糊聚类算法matlab仿真
  3. 「科普」一文读懂生产制造MES系统
  4. design pattern Builder 建造者设计模式
  5. 2021年中国跨境电商行业发展现状及5G技术在中国跨境电商的应用分析:交易规模达142000亿元,同比增长13.6%[图]
  6. LeetCode 517 超级洗衣机 解法
  7. jwt的token要存mysql吗_认证的token不存到数据库
  8. HTML学生个人网站作业设计:电影设计——爱影评在线电影(11页) HTML+CSS+JavaScript 简单DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载
  9. linux mint 安装ubuntu软件中心,Ubuntu和Linux Mint:安装Pinta 1.6工具
  10. 微信发单机器人_微信多客服系统SDK通信接口