redis incr和incrBy的使用
最近用incr和incrBy在接口里做了下埋点统计每天请求总数,这两个命令还是挺好用的,先说下这俩命令吧
注:redis后台服务是串行的单线程执行,不存在并发,即多线程调用Incr/incrby方法,在redis服务器上仍然是串行的单线程执行,不存在并发,所以这俩命令都是原子自增、线程安全的。
1、Incr 命令 (菜鸟教程)
Redis Incr 命令将 key 中储存的数字值增一。
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
本操作的值限制在 64 位(bit)有符号数字表示之内。
2、Redis Incrby 命令
Redis Incrby 命令将 key 中储存的数字加上指定的增量值。
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCRBY 命令。
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
本操作的值限制在 64 位(bit)有符号数字表示之内。
3、实现按天统计的思路
以你自定义的字符串+当前年月日 作为key ;例:
public static final String BATCH_COMMIT_DAY_COUNT="test:wugui:";
public static String getCurrentDate() {SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");return simpleDateFormat.format(new Date());}
redisClient.incr(BATCH_COMMIT_DAY_COUNT + DateUtil.getCurrentDate());//redis的key
当然我并没有为这个key用expire设置超时时间,因为我需要保留每天的统计;
incrBy 可以在现有值的基础上累加你的增量值,比如你要在一个批量审核接口里统计每天批量审核的所有人数,例:
redisClient.incrBy(BATCH_COMMIT_DAY_COUNT + DateUtil.getCurrentDate(), 63l);
注意redis的 incrBy 第二个参数是long类型,不是参数名的integer.....
public Long incrBy(final String key, final long integer) {checkIsInMultiOrPipeline();client.incrBy(key, integer);return client.getIntegerReply();}
4、总结
除了简单计数,还可以实现控制用户单位时间内请求等,可根据业务需求灵活运用;
有兴趣可以参考下这位朋友的博客,简单实用 https://blog.csdn.net/Roy_70/article/details/78260826
redis incr和incrBy的使用相关推荐
- Redis:字符串INCR、INCRBY、INCRBYFLOAT、DECR、DECRBY命令介绍
INCR INCR key 可用版本: >= 1.0.0 时间复杂度: O(1) 为键key对应的数字字符串(整数)加上一. 演示 如果键key不存在, 那么它的值会先被初始化为 0 , 然后再 ...
- redis的incr和incrby命令
Redis Incr 命令将 key 中储存的数字值增一,如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作. Redis Incrby 命令将 key 中储存的 ...
- redis中的incr和incrBy
今天遇到这样几个例子,(1)闸机上传一条交易数据时,接收流水号(不是主键)就在原来基础上自增,并且每天更换.(2)每次上传出站交易数据,闸机都要累计交易金额. 这两个例子都可以用incrBy,或是例( ...
- redis incr incrby decr decrby命令
incr.incrby.decr.decrby命令的作用和用法 redis中incr.incrby.decr.decrby属于string数据结构,它们是原子性递增或递减操作. incr递增1并返回递 ...
- php redis获取incr的值,Redis Incr命令
Redis Incr命令 Redis Incr 命令将 key 中储存的数字值增一. 如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作. 如果值包含错误的类型, ...
- redis incr mysql_redis命令_INCR
INCR key 将 key 中储存的数字值增一. 如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作. 如果值包含错误的类型,或字符串类型的值不能表示为数字,那 ...
- redis incr命令最大值问题
redis incr 最大值是 Long.MAX_VALUE的值 大于long.MAX_VALUE后就会抛出异常 @Testpublic void test3() throws Interrupted ...
- incr、incrby、decr、decrby命令的作用和用法
redis中incr.incrby.decr.decrby属于string数据结构,它们是原子性递增或递减操作. incr递增1并返回递增后的结果: incrby根据指定值做递增或递减操作并返回递增或 ...
- python中redis incr的使用
在一些项目中,有时候需要记录一些数字,比如需要知道每天微信推送了多少条模板消息或者其他的一些需求,或者一个功能:用户扫码当天达到20次即不再让用户扫码,或者秒杀活动中,这件商品只规定卖200件,如果我 ...
最新文章
- unity android模糊ios清晰,Unity NGUI UI 在iOS端的锯齿、模糊、颗粒感问题
- 设置远程访问mysql服务端的日志
- 进口网友讨论:是什么让你继续支持并持有BCH?
- AceTeamwork 软件成就继续蝉联国内最优秀的项目工时(timesheet)及费用报销(expense)软件...
- java校验入参的有效性的工具类
- apache2配置优化以及性能测试小结
- 《数据库系统概论》第一章笔记
- 怎么检查计算机和打印机是否连接网络,检查电脑是否正确连接网络打印机
- 微信公众号支付开发流程
- 硬盘pe安装红旗linux系统,WinPE 安装操作系统详细图解(图文教程)
- 在线数字转大写金额工具
- Python实现太极图案
- 绝对值c语言不用函数,C语言 STM32 求绝对值函数
- CES2018,三星为何将MicroLED应用于电视而非手机?
- 《Python数学之美》第一节、一切还是要从函数说起
- 呼叫中心电话客服系统搭建的种类有哪些
- 前端面试知识梳理(高级前端开发工程师)
- train_test_split(),随机划分训练集和测试集的函数
- cad 打开硬件加速卡_谁说没有核显就不能开启硬件加速?手把手教你开启加速
- 手撕LongAdder-add()源码