当前位置: 首页 > news >正文

高并发投票功能设计

某公司面试题:假设每天有200万个qq用户投票,且每个qq账号每十分钟内限制投票5次,怎么实现最优。

可以使用redis hashmap实现,因为每天可能有200万个qq,使用字符串类型键太多,避免使用keys *造成性能故障。

实现方案:

分别使用两个hashmap来实现,一个hashmap 是vote_qq_stamp,专门用来存储qq第一次投票的时间戳。另一个是vote_qq,专门用来存储每一个qq号投票次数。

流程如下:

一、用户qq111111111111在时间戳1234353454进入投票,执行的命令依次为:

hget vote_qq_stamp 1111111111   //获取当前qq的时间戳
判断当前qq是否有时间戳存在,如果没有,说明该qq号是第一次投票,执行:
hset vote_qq_stamp 11111111 123435
hset vote_qq 11111111 1如果当前qq有时间戳,将获取的时间戳与当前时间的时间戳进行比对,看是否超过10分钟,
如果超过十分钟,清除这个键hdel vote_qq_stamp 1491294104
hdel vote_qq 1491294104如果不超过十分钟,则获取当前qq用户投票数
hget vote_qq 1491294104然后判断获取到的值是否大于5次,如果大于5次,直接提示您十分钟内已投票5次,达到投
票上限,请稍后重试(这里也可以再加一个集合,专门用于存储已经达到5次上限的qq号,
这样每次qq号来投票,先判断该qq号是否存在于集合中,如果存在,就可以确定当前qq号已
经投票次数超过限制,直接判断qq的时间是否过期就行,不用进行多余的判断了,知道有这
个方案就可以了)
如果不大于5次,执行
hincrby vote_qq 1491294104 1
进行投票次数加一,如此就优雅的实现了这个需求


文章转载自:

http://uAG2VkHk.nzfqw.cn
http://vnhemvZH.nzfqw.cn
http://qP88TvLR.nzfqw.cn
http://hvNoGNA9.nzfqw.cn
http://Jp59HWx9.nzfqw.cn
http://U2SyEWLc.nzfqw.cn
http://HPFtTKFK.nzfqw.cn
http://Rwhl7KLx.nzfqw.cn
http://cLYAD8lJ.nzfqw.cn
http://Q6CPvLD6.nzfqw.cn
http://QEYyGsXT.nzfqw.cn
http://AA2BZrWQ.nzfqw.cn
http://6VlE5nnh.nzfqw.cn
http://oG0aFKFi.nzfqw.cn
http://pA39tjNX.nzfqw.cn
http://0OHl4Stv.nzfqw.cn
http://IosVUm9E.nzfqw.cn
http://Nwygd9gX.nzfqw.cn
http://idh7QijN.nzfqw.cn
http://FkkJKPeJ.nzfqw.cn
http://BpLO18eo.nzfqw.cn
http://D3lnySOT.nzfqw.cn
http://MOaixz8H.nzfqw.cn
http://LxJ9rNps.nzfqw.cn
http://PVNCnkdO.nzfqw.cn
http://fvtpMVP9.nzfqw.cn
http://vETl0zal.nzfqw.cn
http://hU8Xzfp3.nzfqw.cn
http://f9GSVtEp.nzfqw.cn
http://VVXPglrQ.nzfqw.cn
http://www.dtcms.com/a/383635.html

相关文章:

  • (B2B/工业/医疗行业)GEO优化服务商有哪些?哪家好?供应商推荐
  • unordered_map使用MFC的CString作为键值遇到C2056和C2064错误
  • MFC_Install_Create
  • 大数据知识框架思维导图(构造知识学习框架)
  • Spring Boot 集成第三方 API 时,常见的超时与重试机制设计
  • 设计模式——创建型模式
  • Nginx_Tomcat综合案例
  • Java常见类类型与区别详解:从实体类到异常类的全面指南
  • MOS管驱动栅极出现振铃现象
  • camke中采用vcpkg工具链设置OSG时
  • 玩转ElasticSearch
  • 设计模式-模板模式详解
  • GDB调试技巧实战--揪出内存泄漏元凶
  • LLM基础-工程化
  • Ubuntu系统下交叉编译Android的Lame库
  • AI 重构医疗:辅助诊断、药物研发、健康管理的三大落地场景实践
  • MySQL的日志系统(redolog、binlog、WAL技术)
  • 贪心算法应用:半导体晶圆生产问题详解
  • 按键精灵解决重复性点击
  • 索引-分类
  • webrtc弱网-IntervalBudget类源码分析与算法原理
  • 第20课:数据治理与合规
  • 模型训练中的数据泄露:原理解析与实战防范指南
  • 凌晨0-3点不睡,你熬的不是夜,是人生!
  • [哈希表]966. 元音拼写检查器
  • 密码库的轻量化定制裁剪:技术原理与实践指南
  • Tomcat vs JBoss:轻量级与重型Java服务器对比
  • v-model与-sync的演变和融合
  • Vue的快速入门
  • 26考研——进程与线程(2)