栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Jedis实现抽奖功能

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Jedis实现抽奖功能

实现抽奖功能的具体思想:

使用客户端jedis连接到redis,使用redis中的set数据类型,set数据类型不可重复的,保证了参加抽奖的人的唯一性。pop()时得到的数据是随机的不固定的,符合抽奖的随机性,所以使用redis中set数据类型实现了抽奖功能。

1.创建maven工程

2.引入依赖

   
            redis.clients
            jedis
            2.7.1
        
        
            org.apache.commons
            commons-lang3
            3.3.2
        

3.新建util包,创建JedisFactory类主要是配置线程池的参数,可以通过JedisFactory获得jedis连接

public class JedisFactory {
    private static JedisFactory jedisFactory;
    private JedisPool jedisPool;
    private JedisFactory()
    {
        super();
    }
    public static JedisFactory getInstance()
    {
        if(jedisFactory==null)
            jedisFactory=new JedisFactory();
        return jedisFactory;
    }
    public JedisPool getJedisPool()
    {
        if(jedisPool==null)
        {
            GenericObjectPoolConfig config=new GenericObjectPoolConfig();

            jedisPool=new JedisPool(config,"地址",6379,3000超时断开链接,"密码XXX");//
        }
        return jedisPool;
    }

}

3.创建service,具体实现逻辑

public class JedisService {

   private  JedisPool jedisPool= JedisFactory.getInstance().getJedisPool();
   private String lottoryKey="userkey";
   private Jedis jedis=jedisPool.getResource();
   public void  addUser(String  ...user)
   {
     if(user==null||user.length==0)
        System.out.printf("至少添加一个用户!");

      for(String u:user)
      jedis.sadd(lottoryKey,user);
   }
   public void clearLottory()
   {
    jedis.del(lottoryKey);
   }
   public Set getUSer(Integer n)
   {
      if(n==null||n==0)
      {
         System.out.println("n必须大于0");
      }
   long count=jedis.scard(lottoryKey);
      if(n>count)
      {
         System.out.printf("获奖人数不能大于参与抽奖的人数!");
      }
      return jedis.spop(lottoryKey,n);
   }
}

测试类

public class JedisTest {

    public static void main(String [] args)
    {   JedisPool jedisPool= JedisFactory.getInstance().getJedisPool();
        Jedis jedis=jedisPool.getResource();
        JedisService jedisService=new JedisService();
        Random random=new Random();
        //初始化奖池

        for(int i=0;i<10;++i)
        {
            String a=""+random.nextInt(1000);
           jedisService.addUser(a);
        }
        //抽奖
        Scanner sc=new Scanner(System.in);
        while(true)
        {
            System.out.println("请输入抽奖人数:");
            while(true)
            {
               int s= sc.nextInt();
               if(s==0)
               {
                   jedisService.clearLottory();
                   break;
               }
             Set set=  jedisService.getUSer(s);
             for(String u:set)
             {
                 System.out.println(u);
             }
            }
        }
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1008093.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号