1
Seita 2014-06-26 21:23:27 +08:00 via iPhone 1
楼主的想法适合几百人的小网站。
|
3
raincious OP @ovear 谢谢。
刚发贴之后我就在测试,只是比对了下查询取出的数据量(用来一定程度上代表服务器的负载),感觉方案2是唯一选择。那么我就继续了。 另外虽然上面说是没有缓存,只是因为现在我选择困难了,也还是两种方案作选择,一是Memcache的古典搭配,二是让ORM支持Redis。 目前选择了二,虽然SQL ORM上本来也就只是支持WHERE条件,但是考虑到索引和Redis里Set的限制,太难了,所以一直停滞不前,于是为了不影响主要的项目进度,选择先暂时这样,等真的能上百并发的时候估计我也把Redis或Memcache这两个方案研究的差不多了。 |
4
piglei 2014-06-26 22:38:05 +08:00
仔细看了看,楼主应该花了不少心思分析这个东西。我的经验是不用过于纠结,选一个 **不是那么差劲但是很好扩展** 的实现就好,等瓶颈来的那天,再花时间优化吧。
如果现在过于追求这个问题,把性能优化到非常好,很有可能之后 设计/需求 变动,整个又需要推倒重来,不划算。 个人意见。 |
5
ovear 2014-06-27 00:38:32 +08:00 1
@raincious 其实不用考虑这么多的,mysql本身就有缓存。
缓存效果还是不错的,尤其是主键unique。 还有就是建议楼主在资源允许的情况下,使用固定line长度以及字段长度 这样mysql就不用扫描每行的大小了,对速度有非常大的提升。 同时其实第一种并没有什么 问题,还是挺不错的。 关于count方面,lz完全可以在user表中新增个notify字段,来模拟kvdb过期的效果。当然坏处也有。。就是跟v2ex一样,通知会有延迟。在我看来,其实v2ex的通知系统做的并不是很好。延迟非常的大,还经常莫名其妙的丢信息。 总之这种事情最好上cache或者nosql(也就是kvdb)。lz如果实在要用mysql,那么我推荐使用hash索引,可以在一定程度的情况下模拟出nosql的hashdb效果 -0- 希望lz以后有更好的方法来交流下哈~ |
6
pythoner 2014-06-27 15:08:10 +08:00
如果让我做,我首先想到的方案是用redis来作计数器(inc/dec操作是原子的)
有新消息的时候计数器+1,读过之后-1 |
7
jarlyyn 2016-02-02 16:52:55 +08:00
数量缓存?
|