Redis适用于高并发的递增、递减功能

递增指令:incr(默认从0开始)

递减指令:decr(默认从0开始,递减会出现负数,这点跟memcache不一样,mc到0)

如下:

附上shardedJedisPool和JedisCluster的两种实现方式:

shardedJedisPool:

@Override
    public Long decr(String key) {
        ShardedJedis jedis = null;
        Long result = 0l;
        try {
            jedis =  shardedJedisPool.getResource();
            result = jedis.decr(key);
        } catch (Exception e) {
            log.error("redis decr error and key = " + key, e);
        }
        return result;
    }

    @Override
    public Long incr(String key) {
        ShardedJedis jedis = null;
        Long result = 0l;
        try {
            jedis =  shardedJedisPool.getResource();
            result = jedis.incr(key);
        } catch (Exception e) {
            log.error("redis incr error and key = " + key, e);
        }
        return result;
    }

JedisCluster:

@Override
    public Long decr(String key) {
        Long result = 0l;
        try {
            result = jedisCluster.decr(key);
        } catch (Exception e) {
            log.error("jedisCluster decr error and key = " + key, e);
        }
        return result;
    }

    @Override
    public Long incr(String key) {
        Long result = 0l;
        try {
            result = jedisCluster.incr(key);
        } catch (Exception e) {
            log.error("jedisCluster incr error and key = " + key, e);
        }
        return result;
    }

适用场景:

  高并发生成订单号,秒杀类的业务逻辑等。。

时间: 2024-10-12 12:34:02

Redis适用于高并发的递增、递减功能的相关文章

Redis实现高并发分布式序列号

使用Redis实现高并发分布式序列号生成服务 序列号的构成 为建立良好的数据治理方案,作数据掌握.分析.统计.商业智能等用途,业务数据的编码制定通常都会遵循一定的规则,一般来讲,都会有自己的编码规则和自增序列构成.比如我们常见的身份证号.银行卡号.社保电脑号等等. 以某公司产品标识码(代表该产品的唯一编码)的构成为例: 规则定义:商品款号(8位)+颜色号(3位)+号型码(3位) (共14位) 其标识码为:62X19001 001 46A 业务含义为: 2009年男装秋冬季仿毛套西黑色170A版

Nginx与Redis解决高并发问题

原文链接:http://bbs.phpchina.com/forum.php?mod=viewthread&tid=229629 第一版产品采用的是Jquery,Nginx,PHP(CI框架),Memcache,Mysql这种常用的架构.作为一名PHP工程师对于这种架构已经非常的熟悉了,目前站点并发并不是很高,线上环境使用的是阿里云主机,1.5G的内存,PHP并发能支持400~500左右.因为使用memcache的原因,如果在并发特别高的情况下,除了带宽瓶颈以外就可能会是一直引以为傲PHP瓶颈了

Redis的高并发、持久化、高可用架构设计

就是如果你用redis缓存技术的话,肯定要考虑如何用redis来加多台机器,保证redis是高并发的,还有就是如何让Redis保证自己不是挂掉以后就直接死掉了,redis高可用 我这里会选用我之前讲解过这一块内容,redis高并发.高可用.缓存一致性 redis高并发:主从架构,一主多从,一般来说,很多项目其实就足够了,单主用来写入数据,单机几万QPS,多从用来查询数据,多个从实例可以提供每秒10万的QPS. redis高并发的同时,还需要容纳大量的数据:一主多从,每个实例都容纳了完整的数据,比

nginx+lua+redis构建高并发应用(转)

nginx+lua+redis构建高并发应用 ngx_lua将lua嵌入到nginx,让nginx执行lua脚本,高并发,非阻塞的处理各种请求. url请求nginx服务器,然后lua查询redis,返回json数据. 备注:centos或者redhat系统请跳转到nginx + ngx_lua安装测试 一.安装lua 1 2 3 # apt-get install lua5.1 # apt-get install liblua5.1-dev # apt-get install liblua5.

nginx+lua+redis构建高并发应用

ngx_lua将lua嵌入到nginx,让nginx执行lua脚本,高并发,非阻塞的处理各种请求. url请求nginx服务器,然后lua查询redis,返回json数据. 一.安装lua-nginx-module 参见<LNMLGC>架构 二.安装redis2-nginx-module模块 get https://github.com/openresty/echo-nginx-module get https://github.com/openresty/redis2-nginx-modul

面试系列15 如何保证Redis的高并发和高可用

就是如果你用redis缓存技术的话,肯定要考虑如何用redis来加多台机器,保证redis是高并发的,还有就是如何让Redis保证自己不是挂掉以后就直接死掉了,redis高可用 我这里会选用我之前讲解过这一块内容,redis高并发.高可用.缓存一致性 redis高并发:主从架构,一主多从,一般来说,很多项目其实就足够了,单主用来写入数据,单机几万QPS,多从用来查询数据,多个从实例可以提供每秒10万的QPS. redis高并发的同时,还需要容纳大量的数据:一主多从,每个实例都容纳了完整的数据,比

5.如何保证 redis 的高并发和高可用?redis 的主从复制原理能介绍一下么?redis 的哨兵原理能介绍一下么?

作者:中华石杉 作者:中华石杉 面试题 如何保证 redis 的高并发和高可用?redis 的主从复制原理能介绍一下么?redis 的哨兵原理能介绍一下么? 面试官心理分析 其实问这个问题,主要是考考你,redis 单机能承载多高并发?如果单机扛不住如何扩容扛更多的并发?redis 会不会挂?既然 redis 会挂那怎么保证 redis 是高可用的? 其实针对的都是项目中你肯定要考虑的一些问题,如果你没考虑过,那确实你对生产系统中的问题思考太少. 面试题剖析 如果你用 redis 缓存技术的话,

《Netty Redis Zookeeper 高并发实战》声明

疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 这里, 对疯狂创客圈 <Netty Redis Zookeeper 高并发实战> 一书,对阅读不愉快的少量读者,进行一些必要说明. Why? 我们欢迎大家提出质量问题,对问题是直面和欢迎的,不是排斥的. 但是,也有部分少量的读者,将局部问题无限制放大,也是没有必要的. 一直都承认,一直都不回避:书籍有书籍的问题, 后续也持续改进. 尽管如此,还是有很多小伙伴,确实是{真实读者} . 确实带着目标:想籍<Ne

IntelliJ IDEA 2017版 spring-boot2.0.4+mybatis+Redis处理高并发,穿透问题

一.当采用reddis缓存的时候,如果同时,一万次访问,那么就会有10000次访问数据库所以就会对数据库造成巨大压力,这时候,就要用到线程 1.方法体上加锁(优点,防护住了并发锁,缺点降低了内存效率) 1 /** 2 * 最简洁的高并发处理,但是,牺牲效率大 3 * 4 * @return 5 */ 6 public synchronized List<Student> selectAllStudent1() { 7 8 // 字符串序列化器 9 RedisSerializer redisSe