jedis并发访问数据很慢

银杏卡卡 发布于 2016/05/29 11:51
阅读 1K+
收藏 0

@爱coding 你好,想跟你请教个问题:

游戏服务器用redis做数据缓存,

单个测试读取70几个字段的玩家数据很快,循环读同一条数据10000次就要三、四秒了,中间很多次的读消耗为0,但间隔一定次数后就要16ms。

我现在有个计算战斗力的操作,涉及到玩家天赋表、玩家英雄表、玩家装备表、英雄皮肤表,在用jedis访问这几个表的时候都做了索引,可是每个玩家访问时取这几个关联的表都需要100多毫秒,导致后面的线程一直等待,并发量很低,甚至比直接在mysql上访问数据计算战斗力还低。

web应用服务器、redis服务器都在我的工作电脑上做的测试,4核8G,100个计算战斗力的请求/10秒CPU将近饱满,请求延迟300多ms

加载中
0
南湖船老大
南湖船老大
一个问题不要重复提问。。。
0
爱coding
爱coding
我测试的是redis异地访问,也就是本地机器,访问远程机器,这样效率会很慢,如果单独在本地机器访问,redis是没问题的,你在看一下的代码业务,有没有耗时,效率低的地方,然后修改下redis的一些配置试试,优化下redis的文件数,连接数,线程数,看是否能达到目的。
0
开源中国首席魔法师
并发缓存用memcache会更合适些
0
geminiblue
geminiblue

循环用pipeline,redis是单线程的,get的qps有60000w多/s,字段多,数据量打,并发过大的话,数据分区下试试,也就是多放几个redis,跟mysql分表一个做法那种,我们以前业务单点redis把网卡差点打满,后来key管理了下,分区存储了

0
geminiblue
geminiblue

排序啥的用sort->get(hget)xxx->store这么能不能干?直接取排序结果,结果有ttl,过期重排

代码逻辑过多,导致连接过多的地方,能不能用redis的eval,把lua脚本扔进去?

我做网站的,游戏里面不怎么了解,勿喷

0
南湖船老大
南湖船老大
看下是不是都花在连接上了。jedis的连接效率不高
0
公孙二狗
公孙二狗
redis 最好是局域网使用,异地的网络通讯就能把效率大大的拖下来
返回顶部
顶部