架构设计-如何对几十万级别的在线用户进行快速的多条件查询

架构设计-如何对几十万级别的在线用户进行快速的多条件查询

泛泛之交 发布于 2016-10-26 字数 278 浏览 999 回复 2

网站大概有几十万的在线用户,要求能提供以下功能:

  • 查看某用户是否在线
  • 按省份、性别、年龄等条件能快速查出结果

如果用mysql存放在线用户,读写压力太大,估计不太合适。如果用redis或memcache,多条件查询是一个问题。请问用什么样的方案比较合适?

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

灵芸 2017-05-28 2 楼

1.mysql 建立内存表
2.建立memecache缓存,以查询语句做key,查询结果做value。
3.缓存失效时间设置较小的一个时间,比如10分钟。
4.当缓存没数据的时候,查询数据库,设置缓存。
5.当某用户登录时,走异步队列服务,插入数据库,并清除对应的缓存。

浮生未歇 2016-12-26 1 楼

可以用memcache去缓存mysql的查询,原理很简单,把常用的的几个常用sql查询的MD5值作为key,结果作为value。有查询需求的时候先去找MD5是否存在,没有的就去查询下,然后放入cache中去。还可以加个定时器去定时更新这个cache中的信息,来做到数据的时效性问题