游戏服务器使用MongoDB作为数据库,还有必要使用Redis缓存吗

游戏服务器使用MongoDB作为数据库,还有必要使用Redis缓存吗,第1张

MongoDB说类型东西Redis相Memcached说功能特性优势已经明显于性能Redis作者说平均单核性能单条数据情况Redis更说呢理由Redis单线程运行 单线程运行所Memcached线程相比整体性能肯定偏低 单线程运行所IO串行化中国络IO内存IO单条数据太由于需要等待命令所IO完才能进行续命令所性能受影

1、Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如、视频等等。2、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储。3、虚拟内存--Redis当物理内存用完时,可以将一些很久没用到的value交换到磁盘4、过期策略--memcache在set时就指定,例如setkey1008,即永不过期。Redis可以通过例如expire设定,例如expirename105、分布式--设定memcache集群,利用magent做一主多从;redis可以做一主多从。都可以一主一从6、存储数据安全--memcache挂掉后,数据没了;redis可以定期保存到磁盘(持久化)7、灾难恢复--memcache挂掉后,数据不可恢复;redis数据丢失后可以通过aof恢复8、Redis支持数据的备份,即master-slave模式的数据备份。

利用redis做缓存服务器来缓解数据库查询压力是非常有效也是非常有必要的, 当用户第一次点击页面的时候查询数据库, 然后将查询结果缓存在redis服务器中,缓存时间随你的数据改变时间而定,这样可大大降低数据库压力;下面是具体函数方法;

public function getSqlVal(){

//获取参数列表,这个参数随你需求而定,一般可能需要传入dbname,查询方式如fetchAll,查询语句等

$argv = func_get_args();

//假设这里现在只传入dbName和sql语句

$dbName = $argv[0];

$sql = $argv[1];

//现在把这个参数列表转成md5之后作为存redis的key值

$md5SqlKey = MD5(serialize($argv));

//下面通过一个redis函数来进行存取数据

$res = getRedisData($md5SqlKey);

//如果取到数据,说明已经缓存在redis服务器中, 直接取数据就好, 如果没有数据, 则再去数据库查询数据,再讲查询的数据存在redis服务器中

if(!empty($res)) {

return $res;

}

//后面是查询数据库 *** 作,查询结果返回在$res中

getRedisData($md5SqlKey,$res); //讲返回结果存在redis中

return $res;

}

public function getSqlVal(){

//获取参数列表,这个参数随你需求而定,一般可能需要传入dbname,查询方式如fetchAll,查询语句等

$argv = func_get_args();

//假设这里现在只传入dbName和sql语句

$dbName = $argv[0];

$sql = $argv[1];

//现在把这个参数列表转成md5之后作为存redis的key值

$md5SqlKey = MD5(serialize($argv));

//下面通过一个redis函数来进行存取数据

$res = getRedisData($md5SqlKey);

//如果取到数据,说明已经缓存在redis服务器中, 直接取数据就好, 如果没有数据, 则再去数据库查询数据,再讲查询的数据存在redis服务器中

if(!empty($res)) {

return $res;

}

//后面是查询数据库 *** 作,查询结果返回在$res中

getRedisData($md5SqlKey,$res); //讲返回结果存在redis中

return $res;

}

读写分离一般都是结合Master/Slave模式使用,Master处理写请求,Slave处理读请求,这样做的好处是:

1、提高数据库的并发处理能力;

2、避免写请求锁表阻塞读请求;

3、避免单点,提高数据库的可用性;

而使用Redis作为DB前面的缓存,是为了减少对MySQL的压力,提高系统的处理效率。

二者解决的问题域不同,不存在谁替代谁。

一般高并发应用都是结合二者使用。

以上就是关于游戏服务器使用MongoDB作为数据库,还有必要使用Redis缓存吗全部的内容,包括:游戏服务器使用MongoDB作为数据库,还有必要使用Redis缓存吗、如何在CentOS下安装Redis缓存、redis怎么缓存sql数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10131608.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存