incr、incrby、decr、decrby命令的作用和用法

article/2025/9/26 9:47:42

redis中incr、incrby、decr、decrby属于string数据结构,它们是原子性递增或递减操作。

  • incr递增1并返回递增后的结果;
  • incrby根据指定值做递增或递减操作并返回递增或递减后的结果(incrby递增或递减取决于传入值的正负);
  • decr递减1并返回递减后的结果;
  • decrby根据指定值做递增或递减操作并返回递增或递减后的结果(decrby递增或递减取决于传入值的正负);

设置incr:key和decr:key观察用法和执行结果

1.首次观察incr:key的值,可以看到没有结果

127.0.0.1:6381> GET incr:key

127.0.0.1:6381>

2.对incr:key执行incr命令,可以看到redis返回了递增后的结果1。incr命令会返回递增后的结果

127.0.0.1:6381> incr incr:key
1
127.0.0.1:6381>

3.对incr:key执行incrby命令,能看到redis返回了递增后的结果5。incrby命令会返回递增后的结果

127.0.0.1:6381> incrby incr:key 4
5
127.0.0.1:6381>

4.对incr:key执行incrby命令,这次传入一个负数,能观察到redis返回了递减后的结果2

127.0.0.1:6381> incrby incr:key -3
2
127.0.0.1:6381>

5.对incr:key执行incrby命令,同样传入负数, 可以观察到incr:key经过递减后结果变成了负数

127.0.0.1:6381> incrby incr:key -4
-2
127.0.0.1:6381>

6.首次观察decr:key,没有任何结果

127.0.0.1:6381> GET decr:key127.0.0.1:6381>

7.对decr:key执行decr命令,可以看到redis返回了递减后的结果

127.0.0.1:6381> decr decr:key
-1
127.0.0.1:6381>

8.对decr:key执行decrby命令,可以看到redis返回了递减后的结果,这里的值输入的是4而不是-4

127.0.0.1:6381> decrby decr:key 4
-5
127.0.0.1:6381>

9.对decr:key执行decrby命令,这次输入一个负数,观察一下结果

127.0.0.1:6381> decrby decr:key -1
-4
127.0.0.1:6381>

 

并发递增和递减

  做一个实验,并发100个线程对同一个key做操作,其中50个执行incr命令,另外50个执行decr命令,观察一下结果

复制代码
/*** 并发100个线程,50个线程做decr命令,另外50个线程做incr命令** @author tianshu on 16/10/31 上午10:52.*/
public class MultipleDecrIncr {/** decr线程数量 */private static final int DECR_THREAD_COUNT = 50;/** incr线程数量 */private static final int INCR_THREAD_COUNT = 50;private static CountDownLatch begin = new CountDownLatch(DECR_THREAD_COUNT + INCR_THREAD_COUNT);private static CountDownLatch finish = new CountDownLatch(DECR_THREAD_COUNT + INCR_THREAD_COUNT);static final String KEY = "string:decr:incr";public static void main(String[] args) throws InterruptedException {for(int i = 0; i < DECR_THREAD_COUNT; ++i) {new DecrThread().start();begin.countDown();}for(int i = 0; i < INCR_THREAD_COUNT; ++i) {new IncrThread().start();begin.countDown();}finish.await();JedisConnect jedisConnect = JedisConnect.getJedisConnect();Jedis jedis = jedisConnect.getJedis();String value = jedis.get(KEY);System.out.println(value);jedisConnect.releaseJedis(jedis);}/*** decr命令线程*/static class DecrThread extends Thread {@Overridepublic void run() {try {begin.await();} catch (InterruptedException e) {e.printStackTrace();}JedisConnect jedisConnect = JedisConnect.getJedisConnect();Jedis jedis = jedisConnect.getJedis();jedis.decr(KEY);jedisConnect.releaseJedis(jedis);finish.countDown();}}/*** incr命令线程*/static class IncrThread extends Thread {@Overridepublic void run() {try {begin.await();} catch (InterruptedException e) {e.printStackTrace();}JedisConnect jedisConnect = JedisConnect.getJedisConnect();Jedis jedis = jedisConnect.getJedis();jedis.incr(KEY);jedisConnect.releaseJedis(jedis);finish.countDown();}}}
复制代码

 

应用场景

  个人觉得这类命令一般会应用到计数器场景

  • 单号生成:根据业务生成key,每当需要单号时可以使用incr获得一个新的序列号。
  • 错误拦截:比如有的网站账号密码输入错误N次之后,会做一些特殊处理;使用incr是实现这种功能的方式之一,可以根据用户的特殊标识表示key,每当账号密码输错时使用incr命令做递增。
  • 非法拦截:某段时间限制同IP请求同一接口次数

http://chatgpt.dhexx.cn/article/1OSh8wuq.shtml

相关文章

Redis:字符串INCR、INCRBY、INCRBYFLOAT、DECR、DECRBY命令介绍

INCR INCR key可用版本&#xff1a; > 1.0.0 时间复杂度&#xff1a; O(1)为键key对应的数字字符串&#xff08;整数&#xff09;加上一。 演示 如果键key不存在&#xff0c; 那么它的值会先被初始化为 0 &#xff0c; 然后再执行INCR命令。 INCR命令会返回键key对应的数…

利用Redis原子计数器incr实现计数器及接口限流

一、INCR命令介绍 Redis Incr 命令将 key 中储存的数字值增一。 如果 key 不存在&#xff0c;那么 key 的值会先被初始化为 0 &#xff0c;然后再执行 INCR 操作。且将key的有效时间设置为长期有效 。 如果值包含错误的类型&#xff0c;或字符串类型的值不能表示为数字&#x…

后渗透——内网转发之利用EarthWorm与proxifier搭建正向代理服务器

EarthWorm是一款用于开启 SOCKS v5 代理服务的工具&#xff0c;基于标准 C 开发&#xff0c;可提供多平台间的转接通讯&#xff0c;用于复杂网络环境下的数据转发。 Proxifier是一款功能非常强大的socks5客户端&#xff0c;可以让不支持通过代理服务器工作的网络程序能通过HTTP…

红蓝对抗之隧道技术第二篇(reGeorg内网穿透、SSH隧道本地Socks代理、SSH远程转发、Earthworm Socks5代理、Tunna正向代理、ICMP隧道、DNS隧道、Frp穿透)

文章目录 隧道应用reGeorg内网穿透SSH本地转发(正向)场景一场景二 SSH远程转发(反向)Earthworm Socks5代理正向代理反向代理 Tunna正向代理ICMP隧道DNS隧道Frp穿透推荐阅读&工具包 隧道应用 在进行内网渗透时&#xff0c;由于外网主机无法直接连接内网主机&#xff0c;所以…

earthworm四步走(解决拨入VPN后使用burp无法抓包的问题)

一、earthworm下载路径&#xff1a;https://github.com/idlefire/ew 二|、解压文件 三、执行命令&#xff1a;ew_for_Win.exe -s ssocksd -l 8888 四、设置burp上游代理

渗透测试之反弹代理(socks代理) (Earthworm工具) (windows和linux中的代理)

反弹代理 内网渗透不光只是反弹一个shell&#xff0c;反弹一个端口&#xff0c;我们更需要对内网进行更深一步的扫描和渗透&#xff0c;这时候就需要设置找到一个代理服务器&#xff0c;充当外网和内网数据转发的节点。 所以出现了反弹代理&#xff0c;也叫反弹socket。 使用…

NOIP 2016 提高组 复赛 第二天 第二题 蚯蚓 earthworm AC代码(单调队列)+15分代码(排序)+35分代码(堆 大顶堆 优先队列)+85分代码(更改堆中元素)

NOIP 2016 提高组 复赛 第二天 第二题 蚯蚓 earthworm AC代码(单调队列)15分代码(排序)35分代码(堆 大顶堆 优先队列)85分代码(更改堆中元素) 总目录详见&#xff1a;NOIP 提高组 复赛 试题 目录 信奥 历年 在线测评地址&#xff1a;https://www.luogu.com.cn/problem/P…

后渗透——内网转发之利用EarthWorm与proxifier搭建反向代理服务器

EarthWorm是一款用于开启 SOCKS v5 代理服务的工具&#xff0c;基于标准 C 开发&#xff0c;可提供多平台间的转接通讯&#xff0c;用于复杂网络环境下的数据转发。 Proxifier是一款功能非常强大的socks5客户端&#xff0c;可以让不支持通过代理服务器工作的网络程序能通过HTTP…

【教程】使用Earthworm (EW) 做Socks5代理完成内网穿透

EW 是一套便携式的网络穿透工具&#xff0c;具有 SOCKS v5服务架设和端口转发两大核心功能&#xff0c;可在复杂网络环境下完成网络穿透。 考虑到该工具影响很坏&#xff0c;该工具永久停止更新。 介绍&#xff1a; 示意图&#xff1a; 该工具能够以“正向”、“反向”、“…

内网穿透大杀器--EarthWorm

0x00 前言如果感觉本文对你有帮助&#xff0c;请在文章末尾点个赞&#xff0c;谢谢表哥们支持&#xff01; 当你在内网渗透&#xff0c;并且拿下一台机器的权限时&#xff0c;你是不是觉得已经算是一次完整的渗透了&#xff1f; 不来一次内网漫游&#xff0c;渗透是不完整的&am…

EW(EarthWorm) 反向 socks5 代理

今天本想对学校的内网服务器进行人生中第一次横向渗透&#xff0c;奈何情况不允许&#xff0c;但好歹学习了一些东西&#xff0c;总要写下来保存 工具&#xff1a; EW: https://github.com/idlefire/ew proxychains: https://github.com/rofl0r/proxychains-ng 小米随身wifi…

使用Earthworm (EW) 做Socks5代理

正向代理 1.选择合适的ew文件&#xff08;将文件ew_…改为ew.exe,为了在命令行少敲几个字母&#xff09;&#xff0c;上传到边缘服务器 2.边缘服务器输入 ew.exe -s ssocksd -l 8000 3.可借助proxifier工具配置攻击机整台机器的代理(proxifier添加代理服务器&#xff0c;ip为边…

EarthWorm结合proxifier的使用学习

拿下一个目标机器的web权限后&#xff0c;如何在本机就可以通过这台被拿下webshell的机器访问内网的其他主机的端口服务呢&#xff1f; 拿下一个shell后&#xff0c;想要访问这个shell主机的其他内网机器的服务&#xff0c;可以用earthworm作为一个流量转发&#xff0c;把ew对应…

内网渗透-Earthworm的简单使用(内网穿透工具)

Earthworm的简单介绍&#xff08;一&#xff09; 文章目录 EarthWorm下载地址1. 普通网络 1.1 跳板机存在公网IP 1.1.1 网络环境1.1.2 使用方法1.1.3 流量走向 1.2 跳板机不存在公网IP&#xff0c;可出网 1.2.1 网络环境1.2.2 使用方法1.2.3 流量走向 2. 二级网络 2.1 一级跳…

基于EarthWorm的正反向socks5代理

EarthWorm EarthWorm&#xff08;ew&#xff09;是一套便携式的网络穿透工具&#xff0c;具有 SOCKS v5服务架设和端口转发两大核心功能&#xff0c;能够以“正向”、“反向”、“多级级联”等方式打通一条网络隧道&#xff0c;直达网络深处&#xff0c;可在复杂网络环境下完成…

earthworm系列-earthworm介绍

earthworm的官方网站&#xff1a;http://www.earthwormcentral.org 1 Earthworm 简介 Earthworm 项目始于1993 年&#xff0c;主要目的是为了解决美国地震区域台网出现的问题。当时&#xff0c;区域内的地震台网存在的主要问题有&#xff1a;观测设备陈旧&#xff0c;…

内网渗透工具Earthworm简单使用

EW 是一套便携式的网络穿透工具&#xff0c;具有 SOCKS v5服务架设和端口转发两大核心功能&#xff0c;可在复杂网络环境下完成网络穿透。该工具能够以“正向”、“反向”、“多级级联”等方式打通一条网络隧道&#xff0c;直达网络深处&#xff0c;用蚯蚓独有的手段突破网络限…

【内网—内网转发】——代理转发_ew(Earthworm)代理转发

文章目录 一、环境准备&#xff1a;二、工具&#xff1a;三、概念&#xff1a;四、学习目的&#xff1a;五、ew(Earthworm)介绍&#xff1a;六、ew(Earthworm)使用说明&#xff1a;七、ew(Earthworm)正向代理(适用于被控服务器拥有一个公网IP)&#xff1a;1. 场景&#xff1a;…

苹果xsmax是什么接口_为什么苹果PD快充线头是银色而非金黄色?原来那根本就不是镀的银...

苹果开放第三方授权后&#xff0c;目前市面上已有不少苹果MFi认证的PD快充线&#xff0c;1小时就能充满iPhone X。苹果PD数据线&#xff0c;即USB-C to Lighting数据线&#xff0c;是苹果自家定义的一套数据线规范&#xff0c;一端为Type-C接口&#xff0c;另一端为苹果Lightin…