精华内容
下载资源
问答
  • Redis Incrby 命令Redis Incrby 命令将 key 中储存的数字加上指定的增量。如果 key 不存在,那么 key 的会先被初始化为 0 ,然后再执行 INCRBY 命令。如果包含错误的类型,或字符串类型的不能表示为数字,...

    Redis Incrby 命令

    Redis Incrby 命令将 key 中储存的数字加上指定的增量值。

    如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCRBY 命令。

    如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

    本操作的值限制在 64 位(bit)有符号数字表示之内。

    语法

    redis Incrby 命令基本语法如下:

    redis 127.0.0.1:6379> INCRBY KEY_NAME INCR_AMOUNT

    可用版本

    >= 1.0.0

    返回值

    加上指定的增量值之后, key 的值。

    实例

    # key 存在且是数字值

    redis> SET rank 50

    OK

    redis> INCRBY rank 20

    (integer) 70

    redis> GET rank

    "70"

    # key 不存在时

    redis> EXISTS counter

    (integer) 0

    redis> INCRBY counter 30

    (integer) 30

    redis> GET counter

    "30"

    # key 不是数字值时

    redis> SET book "long long ago..."

    OK

    redis> INCRBY book 200

    (error) ERR value is not an integer or out of range

    展开全文
  • incr、incrby、decr、decrby命令的作用和用法redis中incr、incrby、decr、decrby属于string数据结构,它们是原子性递增或递减操作。incr递增1并返回递增后的结果;incrby根据指定做递增或递减操作并返回递增或递减...

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

    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:key1

    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> GETdecr: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命令

    *

    *@authortianshu on 16/10/31 上午10:52.*/

    public classMultipleDecrIncr {/**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) throwsInterruptedException {for(int i = 0; i < DECR_THREAD_COUNT; ++i) {newDecrThread().start();

    begin.countDown();

    }for(int i = 0; i < INCR_THREAD_COUNT; ++i) {newIncrThread().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 extendsThread {

    @Overridepublic voidrun() {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 extendsThread {

    @Overridepublic voidrun() {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请求同一接口次数

    展开全文
  • I'd like to know if there is a way to perform this in redis with a single roundtrip from my app:For a given key K, its possible value V is any of the integers inside the range [A, B]. Basically, it ha...

    I'd like to know if there is a way to perform this in redis with a single roundtrip from my app:

    For a given key K, its possible value V is any of the integers inside the range [A, B]. Basically, it has an upper and lower boundary.

    When an INCRBY or DECRBY command is issued (eg. INCRBY key 10) it will be executed only if the resulting value is not out of bounds.

    I need this operation to be atomic, and I wanted to know if there was a way to avoid Lua scripting for this.

    Thank you.

    解决方案

    This answer might not be what you expect. But I have to say that Lua scripting is the crystal clear solution.

    -- range-incrby.lua key , increment

    local key = KEYS[1]

    local increment = ARGV[1]

    local cnt = redis.call('get', key) or 0

    cnt = cnt + increment

    if (cnt >= 0 and cnt <= 100) then

    redis.call('set', key, cnt)

    return cnt

    end

    Also, if the range is [0, 2^N - 1], then you can use BITFIELD command with overflow control to solve the problem.

    BITFIELD key OVERFLOW FAIL INCRBY uN 0 increment

    However, that seems not your case.

    展开全文
  • {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":9,"count":9}]},"card":[{"des":"兼容Redis协议标准的、提供持久化的内存数据库服务,基于高性价比的单节点架构、高...

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":9,"count":9}]},"card":[{"des":"兼容Redis协议标准的、提供持久化的内存数据库服务,基于高性价比的单节点架构、高可靠双机热备架构及可无缝扩展的集群架构,满足纯缓存业务、高读写性能场景及容量需弹性变配的业务需求。","link1":"https://www.aliyun.com/product/kvstore","link":"https://www.aliyun.com/product/kvstore","icon":"https://img.alicdn.com/tfs/TB170KSRVXXXXc0XpXXXXXXXXXX-114-114.png","btn2":"了解价格","tip":"产品0元免费试用,立即领取。云数据库Redis产品升级,全球多活,冷热分离混合存储,多线程性能增强,观看发布会","btn1":"立即开通","link2":"https://www.aliyun.com/price/product?spm=5176.54432.728894.price1.14db28f5oLfCJS#/kvstore/detail","title":"云数据库 Redis 版"}],"search":[{"txt":"免费套餐","link":"https://free.aliyun.com"},{"txt":"云数据库MySQL","link":"https://www.aliyun.com/product/rds/mysql?spm=5176.8142029.388261.348.54216d3edqlhkH"},{"txt":"云数据库MongoDB","link":"https://www.aliyun.com/product/mongodb?spm=5176.8142029.388261.351.54216d3edqlhkH"},{"txt":"云数据库HBase","link":"https://www.aliyun.com/product/hbase?spm=5176.8142029.388261.357.54216d3edqlhkH"},{"txt":"云数据库POLARDB","link":"https://www.aliyun.com/product/polardb?spm=5176.8142029.388261.352.54216d3edqlhkH"},{"txt":"全球多活","link":"https://yq.aliyun.com/articles/630277"},{"txt":"混合存储","link":"https://yq.aliyun.com/articles/582418"},{"txt":"多线程","link":"https://yq.aliyun.com/articles/629424"},{"txt":"产品技术解析","link":"https://yq.aliyun.com/articles/635664"}],"countinfo":{"search":{"length_pc":0,"length":0},"card":{"length_pc":0,"length":0}},"simplifiedDisplay":"newEdition","newCard":[{"link":"https://img.alicdn.com/tfs/TB1KM.qIeH2gK0jSZJnXXaT1FXa-1740-328.png","icon":"redis","contentLink":"https://www.aliyun.com/product/kvstore","title":"云数据库 Redis 版","des":"兼容Redis协议标准的、提供持久化的内存数据库服务,基于高性价比的单节点架构、高可靠双机热备架构及可无缝扩展的集群架构,满足纯缓存业务、高读写性能场景及容量需弹性变配的业务需求。","btn1":"了解详情","link1":"https://www.aliyun.com/product/kvstore","btn2":"管理控制台","link2":"https://kvstorenext.console.aliyun.com/?spm=5176.54432.1393010.3.779f1cf2SyYDaC#/home/cn-hangzhou","btn3":"在线咨询","link3":"https://www.aliyun.com/core/online-consult?spm=5176.8789780.7y9jhqsfz.115.47ea55caeL2Mfu&from=OVtXEBmlH8","infoGroup":[{"infoName":"最新活动","infoContent":{"firstContentName":"Redis年付低至5折","firstContentLink":"https://www.aliyun.com/database/dbfirstbuy#J_9036464270","lastContentName":"ECS+MySQL 0.7元/日","lastContentLink":"https://www.aliyun.com/1111/enterprise"}},{"infoName":"快速入门","infoContent":{"firstContentLink":"https://help.aliyun.com/document_detail/54592.html","firstContentName":"上手指南","lastContentName":"Tair性能增强版 ","lastContentLink":"https://help.aliyun.com/document_detail/126164.html"}},{"infoName":"最佳实践","infoContent":{"firstContentName":"视频直播间信息系统","firstContentLink":"https://help.aliyun.com/document_detail/99288.html","lastContentName":"电商秒杀系统","lastContentLink":"https://help.aliyun.com/document_detail/63920.html"}},{"infoName":"产品推荐","infoContent":{"firstContentName":"云数据库PolarDB","firstContentLink":"https://www.aliyun.com/product/polardb","lastContentName":"云原生数据仓库MySQL","lastContentLink":"https://www.aliyun.com/product/ads"}}]}]}

    {"$env":{"JSON":{}},"$page":{"env":"production"},"$context":{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":9,"count":9}]},"card":[{"des":"兼容Redis协议标准的、提供持久化的内存数据库服务,基于高性价比的单节点架构、高可靠双机热备架构及可无缝扩展的集群架构,满足纯缓存业务、高读写性能场景及容量需弹性变配的业务需求。","link1":"https://www.aliyun.com/product/kvstore","link":"https://www.aliyun.com/product/kvstore","icon":"https://img.alicdn.com/tfs/TB170KSRVXXXXc0XpXXXXXXXXXX-114-114.png","btn2":"了解价格","tip":"产品0元免费试用,立即领取。云数据库Redis产品升级,全球多活,冷热分离混合存储,多线程性能增强,观看发布会","btn1":"立即开通","link2":"https://www.aliyun.com/price/product?spm=5176.54432.728894.price1.14db28f5oLfCJS#/kvstore/detail","title":"云数据库 Redis 版"}],"search":[{"txt":"免费套餐","link":"https://free.aliyun.com"},{"txt":"云数据库MySQL","link":"https://www.aliyun.com/product/rds/mysql?spm=5176.8142029.388261.348.54216d3edqlhkH"},{"txt":"云数据库MongoDB","link":"https://www.aliyun.com/product/mongodb?spm=5176.8142029.388261.351.54216d3edqlhkH"},{"txt":"云数据库HBase","link":"https://www.aliyun.com/product/hbase?spm=5176.8142029.388261.357.54216d3edqlhkH"},{"txt":"云数据库POLARDB","link":"https://www.aliyun.com/product/polardb?spm=5176.8142029.388261.352.54216d3edqlhkH"},{"txt":"全球多活","link":"https://yq.aliyun.com/articles/630277"},{"txt":"混合存储","link":"https://yq.aliyun.com/articles/582418"},{"txt":"多线程","link":"https://yq.aliyun.com/articles/629424"},{"txt":"产品技术解析","link":"https://yq.aliyun.com/articles/635664"}],"countinfo":{"search":{"length_pc":0,"length":0},"card":{"length_pc":0,"length":0}},"simplifiedDisplay":"newEdition","newCard":[{"link":"https://img.alicdn.com/tfs/TB1KM.qIeH2gK0jSZJnXXaT1FXa-1740-328.png","icon":"redis","contentLink":"https://www.aliyun.com/product/kvstore","title":"云数据库 Redis 版","des":"兼容Redis协议标准的、提供持久化的内存数据库服务,基于高性价比的单节点架构、高可靠双机热备架构及可无缝扩展的集群架构,满足纯缓存业务、高读写性能场景及容量需弹性变配的业务需求。","btn1":"了解详情","link1":"https://www.aliyun.com/product/kvstore","btn2":"管理控制台","link2":"https://kvstorenext.console.aliyun.com/?spm=5176.54432.1393010.3.779f1cf2SyYDaC#/home/cn-hangzhou","btn3":"在线咨询","link3":"https://www.aliyun.com/core/online-consult?spm=5176.8789780.7y9jhqsfz.115.47ea55caeL2Mfu&from=OVtXEBmlH8","infoGroup":[{"infoName":"最新活动","infoContent":{"firstContentName":"Redis年付低至5折","firstContentLink":"https://www.aliyun.com/database/dbfirstbuy#J_9036464270","lastContentName":"ECS+MySQL 0.7元/日","lastContentLink":"https://www.aliyun.com/1111/enterprise"}},{"infoName":"快速入门","infoContent":{"firstContentLink":"https://help.aliyun.com/document_detail/54592.html","firstContentName":"上手指南","lastContentName":"Tair性能增强版 ","lastContentLink":"https://help.aliyun.com/document_detail/126164.html"}},{"infoName":"最佳实践","infoContent":{"firstContentName":"视频直播间信息系统","firstContentLink":"https://help.aliyun.com/document_detail/99288.html","lastContentName":"电商秒杀系统","lastContentLink":"https://help.aliyun.com/document_detail/63920.html"}},{"infoName":"产品推荐","infoContent":{"firstContentName":"云数据库PolarDB","firstContentLink":"https://www.aliyun.com/product/polardb","lastContentName":"云原生数据仓库MySQL","lastContentLink":"https://www.aliyun.com/product/ads"}}]}]}}

    展开全文
  • 在调用 incr 时,可选的带一个long类型的数字,如果数字不为1,调用 incrby。顺便说一句,incrBy 的时候,如果后面参数是 1,会调用 incr。PHP_METHOD(Redis, incr){zval *object;RedisSock *redis_sock;char *key =...
  • redis中的并发问题使用redis作为缓存已经很久了,redis是以单进程的形式运行的,命令是一个接着一个执行的,一直以为不会存在并发的问题,直到今天看到相关的资料,才恍然大悟。具体问题实例有个键,假设名称为myNum...
  • 前言原有的内存淘汰机制没有设置导致redis持久化的时候,内存直接爆掉步骤修改配置 | 重启服务修改redis.conf的配置文件,并重启redis服务############################## MEMORY MANAGEMENT #######################...
  • NoSQL 开发中或多或少都会用到,也是面试必问知识点。...Redis-key127.0.0.1:6379> keys *(empty list or set)127.0.0.1:6379> set name xxxOK127.0.0.1:6379> keys *1) "name"127.0.0.1:63...
  • 在传统的键值存储中,是将字符串键关联到字符串,但是在Redis中,这些不仅限于简单的字符串,还可以支持更复杂的数据结构。下面就是Redis支持的数据结构:字符串(String):二进制安全字符串。列表(List):根据...
  • 位图用redis位图节约存储空间set s h 整存setbit s 1 1 设置第一位为1get s 整取getbit s 12 获取第12位bitfield w get u3 2 从第3位开始取 取3位作为无符号数bitfield w set u8 8 97 从第9位开始 接下来的8位用97...
  • Redis 数据类型

    2020-08-03 10:16:17
    字符串最大长度为512 MB。 您可以使用Redis中的字符串来做许多有趣的事情,例如,您可以: 使用INCR系列中的命令将字符串用作原子计数器:INCR,DECR,INCRBY。 使用APPEND命令附加到字符串。 使用字符串...
  • redis常用五种数据类型:string,hash,list,set,zset(sorted set). ...String类型的可以被视作integer,从而可以让“INCR”命令族操作(incrby、decr、decrby),这种情况下,该integer的限制在64位
  • Redis简单教程

    千次阅读 2014-08-12 14:13:04
    Redis简单使用   Redis数据类型 ...redis常用五种数据类型:string,hash,list,set,zset(sorted set). ...String类型的数据最大1G。...String类型的可以被视作integer,从而可以让“INCR”命令族操作(incrby、de
  • redis细节666666

    2020-05-12 16:07:02
    String类型的可以被视作integer,从而可以让“INCR”命令族操作(incrby、decr、decrby),这种情况下,该integer的限制在64位有符号数。 在list、set和zset中包含的独立的元素类型都是Redis String类型。 2.List...
  • Redis简单使用

    2013-05-07 09:36:51
    Redis数据类型redis常用五种数据类型:string,hash,list,set,zset(sorted set...String类型的可以被视作integer,从而可以让“INCR”命令族操作(incrby、decr、decrby),这种情况下,该integer的限制在64位有符...
  • Jedis API操作Redis

    2020-10-09 10:13:45
    String类型的可以被视作integer,从而可以让“INCR”命令族操作(incrby、decr、decrby),这种情况下,该integer的限制在64位有符号数。 在list、set和zset中包含的独立的元素类型都是Redis String类型。 2
  • redis常用操作

    千次阅读 2016-06-20 15:00:55
    一、常用数据类型简介:  redis常用五种数据类型:string,hash,list,set,zset(sorted set). 1.String类型 ...String类型的可以被视作integer,从而可以让“INCR”命令族操作(incrby、decr、decrby),这
  • 一、常用数据类型简介: redis常用五种数据类型:string,hash,list,set,zset(sortedset). ...String类型的可以被视作integer,从而可以让“INCR”命令族操作(incrby、decr、decrby),这种情况下,该in...
  • 一、常用数据类型简介:redis常用五种数据类型:string,hash,list,set,zset(sorted set).1、String类型String是最简单的类型,一个key对应一个valueString类型的数据最大1G。 String类型的可以被视作integer,从而...
  • string可以包含任何数据,最大不能超过512M 1.set/get/del/append/strlen set ---- 设置 get ---- 获取 mset ---- 设置多个 mget ---- 获取多个 append ---- 添加字段 del ---- 删除 strlen ---- 返回字符...
  • Java中Jedis操作Redis

    2017-09-18 21:18:00
    一、常用数据类型简介:  Redis常用五种数据类型:string,hash,list,set,zset(sorted set). 1.String类型 ...String类型的可以被视作integer,从而可以让“INCR”命令族操作(incrby、decr、decrby)
  • 字符串(String)字符串...字符串最大长度为512 MB。应用范围:使用INCR系列中的命令将字符串用作原子计数器:INCR,DECR,INCRBY。使用APPEND命令附加到字符串。使用字符串作为GETRANGE和SETRANGE的随机访问向量...
  • 一、常用数据类型简介:  redis常用五种数据类型:string,hash,list,set,zset(sorted set). 1.String类型 ...String类型的可以被视作integer,从而可以让“INCR”命令族操作(incrby、decr、decrby)

空空如也

空空如也

1 2 3 4
收藏数 70
精华内容 28
关键字:

incrbyredis最大值

redis 订阅