redis高级功能-队列

redis队列实现高并发下数据ID读取

id数据预生成
id数据预生成:根据业务逻辑,预生成ID数据,通过redis队列存储,在id被取出的过程中,选取时间节点,继续生产ID并存入队列,这样就保证队列中始终有数据(秒杀系统也可以使用这套逻辑,只是秒杀系统的队列数据不再增加)

id数据读取
通过redis单线程特性及队列特性,通过redis客户端Jedis读取队列中的id(LPOP/RPOP 操作返回队列一端数据并从队列中删除数据)

测试代码
放入测试数据

public class QueueOpt{

    public static void main(String[] args) {

//        JedisPoolConfig config = new JedisPoolConfig();

//        config.setMaxTotal(4);

//        config.setMaxIdle(4);

//        JedisPool pool = new JedisPool(config, "192.168.222.169",6379);

//        Jedis jedis = pool.getResource();

        Jedis jedis= new Jedis("192.168.222.188",6379);

        for (int i=0;i<676;i++){

            jedis.lpush("task-queue",String.valueOf(i));

        }

}

测试类

public class test{

    public static void main(String[] args) {

        JedisPoolConfig config= new JedisPoolConfig();

        config.setMaxTotal(1000);

        config.setMaxIdle(1000);

        config.setMaxWaitMillis(50000);

        JedisPool pool= new JedisPool(config, "192.168.222.188",6379);

        ExecutorService executorService=Executors.newFixedThreadPool(1000);

        for (int i= 0; i< 1000; i++) {

            executorService.execute(new IdGenerateThread(pool,i));

        }

}

线程类

public class IdGenerateThreadimplements Runnable{

    private Jedisjedis;

    private int i;

    public IdGenerateThread(JedisPoolpool,int i){

        this.jedis = pool.getResource();

        this.i = i;

    }

    @Override

    public void run() {

        String key= jedis.lpop("task-queue");

        System.out.println("线程="+this.i + " key="+key);

    }

}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,083评论 19 139
  • 转载地址:http://gnucto.blog.51cto.com/3391516/998509 Redis与Me...
    Ddaidai阅读 21,479评论 0 82
  • 本文将从Redis的基本特性入手,通过讲述Redis的数据结构和主要命令对Redis的基本能力进行直观介绍。之后概...
    kelgon阅读 61,308评论 23 625
  • 今天中午,我与张先生通了电话。 对于一直奉行“分手后就只能是陌生人,分手后就应该老死不相往来”的我来说,能够接...
    fufut阅读 633评论 0 3
  • 离歌笙箫曲,而我旧情仍在。 不离不弃中,愿你待我如旧。 短短字句中,皆有意在于情。 望回往事矣,有友伴我同行。 此...
    轻以阅读 190评论 11 4