公司内部抽奖 h5, nodejs+sqlite 可行吗?

2019-01-26 10:44:29 +08:00
 dreamweaver

公司内部准备做一个抽奖 h5,大概 500 个人,有 11 个奖,有几个问题:

  1. 因为从来没做过类似的项目,nodejs 是否会对请求排队?因为奖品数量有限,在前一个人完成数据库写入之前,后面一个人肯定就不能查询,否则会出错。
  2. sqlite 是否适用于这种情况?怕锁死。
4910 次点击
所在节点    问与答
26 条回复
boileryao
2019-01-26 10:48:56 +08:00
启动的时候把奖品全读到内存 加锁
fairyto2
2019-01-26 11:15:19 +08:00
用微博抽奖系统算了
singerll
2019-01-26 11:16:50 +08:00
excel 都够用了
jecshcier
2019-01-26 11:21:16 +08:00
楼主不是做服务端开发的吧。其实你真的纠结不如用微信抽奖最省事。。你在问数据库写入的事,所以这是跟抢红包一样的抽奖模式?那直接用 redis 就行了,sqlite 不适合这种。。
loveCoding
2019-01-26 11:24:37 +08:00
要什么数据库
dreamweaver
2019-01-26 11:42:21 +08:00
@jecshcier 确实不是服务端开发但是老板又非要这么做。。。可以详细解释一下为啥用 redis 不用 sqlite 吗?。。。因为我确实需要记录中奖信息和奖池信息等等
jecshcier
2019-01-26 11:57:52 +08:00
@dreamweaver 如果确实如我描述的那样的像抢红包的业务逻辑的话,它是一个并发的过程,sqlite 更适合 native 端单用户的读写。使用 redis 天生适用这种高并发(虽然不高)秒杀、抢购场景(虽然你是抽奖)。不过楼主不会 redis 且更擅长 sqlite 的话,那就另当别论了了,工作量需要重新评估。
jecshcier
2019-01-26 11:59:52 +08:00
@jecshcier redis 本身就是数据库,并不妨碍中奖信息和奖池信息的记录,等活动结束直接导出就好了
abmin521
2019-01-26 12:05:05 +08:00
没人看见 500 人 11 个奖品吗
loveCoding
2019-01-26 12:36:45 +08:00
@abmin521 也对,那还抽个毛
lychnis
2019-01-26 12:40:53 +08:00
真的可以用现成的各种系统了,没必要自己开发
AstroProfundis
2019-01-26 13:56:22 +08:00
你是在抽奖还是秒杀呃?
另外我觉得这种内部小抽奖管好随机数来源,要么用真随机数,要么伪随机算法的种子用真随机数,能服众就行了,其他技术细节并不是那么重要
chairuosen
2019-01-26 14:29:07 +08:00
为啥要服务端???前端抽出来截个图不得了
JamesR
2019-01-26 15:06:17 +08:00
Excel 里 =RANDBETWEEN(1,500),当着大家面按 F9,公开,公平,公正。
Tokin
2019-01-26 15:46:08 +08:00
emmm,我今年也是为公司做了一个抽奖程序,纯 web。
1、把所有人员加载到 js 里,生成一个人员列表。
2、没生成一个中将人员前把列表打乱。
3、把抽到的人员保存到 localstorage 然后从列表中删掉。
4、把人员列表保存到 localstorage
好像用不到数据库啊?
保存到 localstorage 也只是单纯的为了防止刷新浏览器结果丢失。
bestkayle
2019-01-26 15:50:21 +08:00
小程序抽奖就行
YenvY
2019-01-26 16:02:12 +08:00
什么都不要用,抽奖时现场下载 chrome
纯 JavaScript 写完直接贴在 console 里跑,console.log 输出,透明无黑幕
marcfizzy
2019-01-26 17:02:46 +08:00
直接用 抽奖助手 小程序吧
Tokin
2019-01-26 17:27:49 +08:00
如果非要 node+sqlite,那只能说:可行。
不过 sqlite 做什么呢?存名单和中奖信息嘛?
几条记录瞬间就写进去了,不需要考虑读写问题吧。
也可能是我理解有问题嘛?我暂时想不到读写冲突问题。
sqlite 只是不能同时写操作,但是同时读是没问题的,读和写互不影响。
jsq2627
2019-01-26 20:11:32 +08:00
开抽前几分钟提前跑个脚本得出中奖名单写入 sqlite,开抽后就只是读取已开奖的结果显示出来

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/530779

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX