公司内部准备做一个抽奖 h5,大概 500 个人,有 11 个奖,有几个问题:
1
boileryao 2019-01-26 10:48:56 +08:00 via Android
启动的时候把奖品全读到内存 加锁
|
2
fairyto2 2019-01-26 11:15:19 +08:00 via iPhone
用微博抽奖系统算了
|
3
singerll 2019-01-26 11:16:50 +08:00 via Android
excel 都够用了
|
4
jecshcier 2019-01-26 11:21:16 +08:00 via iPhone
楼主不是做服务端开发的吧。其实你真的纠结不如用微信抽奖最省事。。你在问数据库写入的事,所以这是跟抢红包一样的抽奖模式?那直接用 redis 就行了,sqlite 不适合这种。。
|
5
loveCoding 2019-01-26 11:24:37 +08:00
要什么数据库
|
6
dreamweaver OP @jecshcier 确实不是服务端开发但是老板又非要这么做。。。可以详细解释一下为啥用 redis 不用 sqlite 吗?。。。因为我确实需要记录中奖信息和奖池信息等等
|
7
jecshcier 2019-01-26 11:57:52 +08:00 via iPhone
@dreamweaver 如果确实如我描述的那样的像抢红包的业务逻辑的话,它是一个并发的过程,sqlite 更适合 native 端单用户的读写。使用 redis 天生适用这种高并发(虽然不高)秒杀、抢购场景(虽然你是抽奖)。不过楼主不会 redis 且更擅长 sqlite 的话,那就另当别论了了,工作量需要重新评估。
|
8
jecshcier 2019-01-26 11:59:52 +08:00 via iPhone
@jecshcier redis 本身就是数据库,并不妨碍中奖信息和奖池信息的记录,等活动结束直接导出就好了
|
9
abmin521 2019-01-26 12:05:05 +08:00 via Android 1
没人看见 500 人 11 个奖品吗
|
10
loveCoding 2019-01-26 12:36:45 +08:00
@abmin521 也对,那还抽个毛
|
11
lychnis 2019-01-26 12:40:53 +08:00
真的可以用现成的各种系统了,没必要自己开发
|
12
AstroProfundis 2019-01-26 13:56:22 +08:00
你是在抽奖还是秒杀呃?
另外我觉得这种内部小抽奖管好随机数来源,要么用真随机数,要么伪随机算法的种子用真随机数,能服众就行了,其他技术细节并不是那么重要 |
13
chairuosen 2019-01-26 14:29:07 +08:00
为啥要服务端???前端抽出来截个图不得了
|
14
JamesR 2019-01-26 15:06:17 +08:00 1
Excel 里 =RANDBETWEEN(1,500),当着大家面按 F9,公开,公平,公正。
|
15
Tokin 2019-01-26 15:46:08 +08:00
emmm,我今年也是为公司做了一个抽奖程序,纯 web。
1、把所有人员加载到 js 里,生成一个人员列表。 2、没生成一个中将人员前把列表打乱。 3、把抽到的人员保存到 localstorage 然后从列表中删掉。 4、把人员列表保存到 localstorage 好像用不到数据库啊? 保存到 localstorage 也只是单纯的为了防止刷新浏览器结果丢失。 |
16
KgM4gLtF0shViDH3 2019-01-26 15:50:21 +08:00 via iPhone
小程序抽奖就行
|
17
YenvY 2019-01-26 16:02:12 +08:00 1
什么都不要用,抽奖时现场下载 chrome
纯 JavaScript 写完直接贴在 console 里跑,console.log 输出,透明无黑幕 |
18
marcfizzy 2019-01-26 17:02:46 +08:00
直接用 抽奖助手 小程序吧
|
19
Tokin 2019-01-26 17:27:49 +08:00
如果非要 node+sqlite,那只能说:可行。
不过 sqlite 做什么呢?存名单和中奖信息嘛? 几条记录瞬间就写进去了,不需要考虑读写问题吧。 也可能是我理解有问题嘛?我暂时想不到读写冲突问题。 sqlite 只是不能同时写操作,但是同时读是没问题的,读和写互不影响。 |
20
jsq2627 2019-01-26 20:11:32 +08:00
开抽前几分钟提前跑个脚本得出中奖名单写入 sqlite,开抽后就只是读取已开奖的结果显示出来
|
21
libook 2019-01-26 20:33:36 +08:00 via Android
node 是异步非阻塞机制,所以请求不会排队。通常数据库操作需要加锁。
其实也可以不加锁。可以单独开一个表做计数器,抽奖抽到先更新计数器加 1,看更新后返回的结果,如果数量未超就记录中奖者,如果数量超了就变成未抽到。 |
22
CSGO 2019-01-26 21:51:32 +08:00
|
23
duzhihao 2019-01-26 23:21:41 +08:00
想起来上一次公司抽奖,妈蛋非的让提前开服务器导致提前还没到抽奖时间奖品就已经发完了。
|
24
2kCS5c0b0ITXE5k2 2019-01-27 03:14:44 +08:00
每个人排个号,随机数?
|
25
limuyan44 2019-01-27 11:45:32 +08:00 via Android
微信不是现成的吗。。。小程序抽奖,不过上次部门抽奖几百人就进不去卡死了真是的。。。人少点完全可以用小程序
|
26
CSGO 2019-05-24 15:06:16 +08:00
刚刚有人访问了我的上面地址,地址 url 换了: https://xiaofu.tech/web/Xiaofutech-2018-Annual-Meeting/lucky-wheel/
|