社区
高性能WEB开发
帖子详情
如何提高并发性能
suncheng_hong
2008-11-06 10:45:09
一个投票系统,同时在线N多人,同时投票。如何尽可能真实显示投票个数。
...全文
573
21
打赏
收藏
如何提高并发性能
一个投票系统,同时在线N多人,同时投票。如何尽可能真实显示投票个数。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
supremeholy
2008-12-10
打赏
举报
回复
[Quote=引用 18 楼 dengfeiling 的回复:]
用缓存的方式, 先更新缓存的计数, 然后再看情况间隔地更新表
[/Quote]
顶下
thomaslw
2008-12-04
打赏
举报
回复
楼上说的好 前面的太废话了
人家问高并发 而且反正都是锁,
那么原则是,先接进入,在内存队列中解决实时性,数据库只是作持久存储的
你投票才几个结果阿 。。。说这么多
dandelionl
2008-12-01
打赏
举报
回复
先保存在内存,间隔存入数据库。
dengfeiling
2008-11-27
打赏
举报
回复
用缓存的方式, 先更新缓存的计数, 然后再看情况间隔地更新表
A296286729
2008-11-19
打赏
举报
回复
[Quote=引用 8 楼 bjsuo 的回复:]
1.如何缓冲请求?
有多种方式,简单的可以用一个HashMap来缓冲 key是投票的ID,value是投票的总数,定时或者其它规则的更新到数据库中,但前台显示用这里面存的数据
复杂一点的可以用memcache
2.数据库如何做这方面的优化?
保存这类数据的表,不要设置索引,不要设置主键,字段不要太多,越简单越好
[/Quote]
顶上.
cjmiou
2008-11-14
打赏
举报
回复
顶一下
草原可可
2008-11-14
打赏
举报
回复
一个IP 设定一个 屏蔽代理IP
Ny-6000
2008-11-14
打赏
举报
回复
甚至于你一直在更新同一条记录。
大多情况,都如此的。
hecaiyun2003
2008-11-14
打赏
举报
回复
学习学习.
易企加_天马行空
2008-11-10
打赏
举报
回复
[Quote=引用 7 楼 suncheng_hong 的回复:]
tmxk2002:
1.如何缓冲请求?
2.数据库如何做这方面的优化?
[/Quote]
如果在内存里做计算,考虑两种情况,一种你的server只有一台机器,这个时候,你可以按投票的项用一个静态的Dictionary<string,long> 来存储。然后调用InterLocked.Increment方法就可以了。然后后台起来一个线程,定时轮询这个dictionary,把每项的结果保存到数据库。轮询的间隔根据对于数据的可靠性要求来定。
如果你的服务器是多台,则在存储的时候要做点手脚,就是保存到数据库里的值总是数据库里的值与内存里的值相加的。做法是,先取内存里的数据,然后清空内存里的数据(这两步的操作在一个lock里做)。将数据传到存储过程,存储过程加上事务保证数据唯一性。
如果你直接在数据库里做,就要建立事务,同时建立行锁,保证数据的一致性。与前面那位兄台相反的是,你必须建立索引来加快每次的查询速度。因为你的操作是更新数据,其他的数据库优化其实不会多,因为你投票的项目不会多。甚至于你一直在更新同一条记录。
林g
2008-11-10
打赏
举报
回复
up
w161134025
2008-11-10
打赏
举报
回复
[Quote=引用 8 楼 bjsuo 的回复:]
1.如何缓冲请求?
有多种方式,简单的可以用一个HashMap来缓冲 key是投票的ID,value是投票的总数,定时或者其它规则的更新到数据库中,但前台显示用这里面存的数据
复杂一点的可以用memcache
2.数据库如何做这方面的优化?
保存这类数据的表,不要设置索引,不要设置主键,字段不要太多,越简单越好
[/Quote]
up
bjsuo
2008-11-09
打赏
举报
回复
1.如何缓冲请求?
有多种方式,简单的可以用一个HashMap来缓冲 key是投票的ID,value是投票的总数,定时或者其它规则的更新到数据库中,但前台显示用这里面存的数据
复杂一点的可以用memcache
2.数据库如何做这方面的优化?
保存这类数据的表,不要设置索引,不要设置主键,字段不要太多,越简单越好
suncheng_hong
2008-11-09
打赏
举报
回复
tmxk2002:
1.如何缓冲请求?
2.数据库如何做这方面的优化?
易企加_天马行空
2008-11-07
打赏
举报
回复
数据库自己会处理的啊,
如果是你自己操作文件来存储,你可以设置一个缓存区,来缓冲外面的请求,就是在内存里计算投票的次数,然后用一个后台线程来处理结果的保存。
zzxap
2008-11-07
打赏
举报
回复
一个IP一个,设定时间段
suncheng_hong
2008-11-07
打赏
举报
回复
不能限制用户的投票。
主要想问如何处理并发问题。
比如说记录 article 表
id title content tptimes(投票次数)
比如很多人对某篇文章感兴趣,都要投它,必然有并发问题,如何如何尽可能真实显示投票个数。
这是个面试题目,求高手解答。
闯荡江湖
2008-11-06
打赏
举报
回复
也想了解下,
chinawes
2008-11-06
打赏
举报
回复
UP
zhao_tk
2008-11-06
打赏
举报
回复
up
提高
系统
并发
性的方法总结
本文探讨了
提高
单机
并发
性的几种方法,包括利用rangelock进行分区减少锁冲突、使用CAS原理实现lockfree数据结构如skip-list以及合理选择锁类型如spinlock和mutex等。
建立索引,
提高
并发
性
探讨了在SQL Server中使用Update语句锁定单行记录时遇到的问题,即为何Select语句也会被阻塞,并提供了通过建立索引来
提高
并发
性的解决方案。
如何来
提高
点赞业务的
并发
性
博客围绕
提高
点赞业务
并发
性展开。实现思路是保存点赞记录,避免重复点赞并记录点赞数量。优化方案包括优化 SQL 和代码、变同步写为异步写、合并写请求。还介绍了点赞数据缓存,用 Redis 的 Set 集合判断用户是否点赞,用 SortedSet 结构缓存点赞次数,减轻数据库压力。
提高
代码
性能
及
并发
性的方法浅谈
本文深入探讨了cache相关知识,并详细解释了cache结构与工作原理。同时,提供了优化
性能
和
提高
并发
性的多种方法,包括结构体设计、伪共享问题解决、内存分配策略等。
如何
提高
Flask的高
并发
性能
提高
Flask
并发
性能
可从服务器、数据库、代码优化和异步技术等方面入手。可使用高
性能
WSGI服务器,启用多线程或异步处理,进行数据库优化,用Nginx + Gunicorn负载均衡,用Celery处理异步任务,用WebSocket代替轮询,以让Flask在高
并发
场景高效运行。
高性能WEB开发
25,980
社区成员
4,366
社区内容
发帖
与我相关
我的任务
高性能WEB开发
高性能WEB开发
复制链接
扫一扫
分享
社区描述
高性能WEB开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章