php - 短信疲劳度控制方案求解
ringa_lee
ringa_lee 2017-04-11 09:08:34
[PHP讨论组]

短信疲劳度控制就是避免之前7天内发送过短信的号码不再发送短信。 目前的方案是将发送过短信的全部存储redis,然后发送的时候一个一个匹配过去,遇到重复的号码就不发送。 这样子速度是没有问题的, 当时空间会存在问题。 当号码量达到3000万的时候,空间4G就上去了,这个还是比较不妥的。

请问一下, 这种问题有什么其他的解决方案吗?望大神不吝赐教

ringa_lee
ringa_lee

ringa_lee

全部回复(7)
黄舟

我提供一下自己的想法,没有实践过,不知道是否合适,1G内存差不多能存1000W条左右的号码,全部用redis肯定是不太合适的,既然贵公司有了这方面的需求,是否可以考虑一下传统的mysql,首先以月来分表,然后每个表分区成4个区,根据请求的时间来做简单的算法判断,判断去具体哪个表哪个区里面去找,大致就是这样的逻辑...当然,也考虑一下mongodb,她在处理大批量数据上面要稍微快一些的

ringa_lee

这个问题,都是空间换时间的问题。你都说到有高并发的情况,把数据储存到mysql不是一个理想的方案,3000w的数据,储存手机号码,应该用不了4G内存那么多,即便是用了4G内存,只储存了7天的数据,你预算8G内存也不会夸张,现在一般redis机器,部署的内存都很大。你网站访问量这么大,增加内存也是很有必要。如果实在是没有预算,还是建议上mongodb

迷茫

没法回答你这问题,3000W记录能有4G, 不大可能

PHP中文网

没遇到过...现在每个手机号都存redis?发送时再匹配手机号?

PHP中文网

手机号写log,用Elasticsearch匹配试试

迷茫

存储mysql完全撑得住,记住手机号码加个index索引

ringa_lee

redis只存7天的不就好了吗
不过3KW数据。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号