thenight404 2023-03-13 12:05 采纳率: 0%
浏览 17

redis + java 点名器

使用redis的set类型
项目启动后将数据储存放到redis中
要求页面输入获奖人数,然后点击抽检,页面打印出中奖名单
使用两种方案,第一种中奖的人依旧可以中奖,第二种中将的人不能中奖
页面显示出当前的中奖名单,并且实时同步出可以中奖人的数据池

  • 写回答

2条回答 默认 最新

  • 小白李子 2023-03-13 12:45
    关注

    使用redis的set类型可以实现你的需求,因为set类型可以存储不重复的数据,并且可以随机获取元素。你可以参考以下的思路和伪代码:

    项目启动后,将数据储存放到redis中,使用一个set类型的键,例如"candidates",并且记录总人数,例如"total"。
    页面输入获奖人数n,然后点击抽奖,页面调用后端的抽奖接口。
    后端的抽奖接口根据不同的方案来实现:
    第一种方案:中奖的人依旧可以中奖。这种情况下,只需要从"candidates"中随机获取n个元素,然后返回给前端。不需要修改redis中的数据。
    第二种方案:中奖的人不能中奖。这种情况下,需要从"candidates"中随机获取n个元素,并且将它们从"candidates"中移除,同时更新"total"的值。然后返回给前端。
    前端接收到后端返回的中奖名单,显示在页面上,并且实时同步出可以中奖人的数据池,即"total"的值。
    以下是一些伪代码:

    // 后端 // 项目启动后,将数据储存放到redis中 function init() { // 假设data是一个数组,存储了所有候选人的名字 // 连接redis let redis = connectRedis(); // 清空redis redis.flushdb(); // 将data中的元素添加到candidates集合中 redis.sadd(“candidates”, …data); // 将data的长度保存到total键中 redis.set(“total”, data.length); }

    // 抽奖接口 function draw(n, scheme) { // 参数n是获奖人数,scheme是方案(1或2) // 连接redis let redis = connectRedis(); // 定义一个数组,存储中奖名单 let winners = []; // 根据方案执行不同的逻辑 if (scheme == 1) { // 方案一:中奖的人依旧可以中奖 // 随机从candidates集合中获取n个元素 winners = redis.srandmember(“candidates”, n); // 不需要修改redis中的数据 } else if (scheme == 2) { // 方案二:中奖的人不能中奖 // 随机从candidates集合中弹出n个元素,并返回它们 winners = redis.spop(“candidates”, n); // 更新total键的值,减去n redis.decrby(“total”, n); } // 返回winners数组给前端 return winners; }

    // 前端 // 页面输入获奖人数n,然后点击抽奖按钮 function onClick() { // 获取输入框和选择框的值 let n = getInputValue(); let scheme = getSelectValue(); // 调用后端的抽奖接口,并传入参数n和scheme let winners = callDrawApi(n, scheme); // 显示winners数组在页面上,并实时同步出可以中奖人的数据池(即total键的值) showWinners(winners); }

    评论

报告相同问题?

问题事件

  • 创建了问题 3月13日

悬赏问题

  • ¥15 Windows Script Host 无法找到脚本文件"C:\ProgramData\Player800\Cotrl.vbs”
  • ¥15 matlab自定义损失函数
  • ¥15 35114 SVAC视频验签的问题
  • ¥15 impedancepy
  • ¥15 求往届大挑得奖作品(ppt…)
  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图