首页

文章

谈谈redis,memcache,mongodb的区别和具体应用场景

发布网友 发布时间:2022-03-24 10:47

我来回答

2个回答

懂视网 时间:2022-03-24 15:09

redis和mongodb的区别如下:

  1、Redis支持多种数据结构,如 string(字符串)、 list(双向链表)、dict(hash表)、set(集合)、zset(排序set)、hyperloglog(基数估算);支持持久化操作,可以进行aof及rdb数据持久化到磁盘,从而进行数据备份或数据恢复等操作,较好的防止数据丢失的手段;支持通过Replication进行数据复制,通过master-slave机制,可以实时进行数据的同步复制,支持多级复制和增量复制,master-slave机制是Redis进行HA的重要手段;

  2、支持pub/sub消息订阅机制,可以用来进行消息订阅与通知;

  3、支持简单的事务需求,但业界使用场景很少,并不成熟;

  4、mogodb是一种文档性的数据库。先解释一下文档的数据库,即可以存放xml、json、bson类型系那个的数据。这些数据具备自述性(self-describing),呈现分层的树状数据结构。redis可以用hash存放简单关系型数据。mogodb存放json格式数据。事件记录、内容管理或者博客平台,比如评论系统。

  

热心网友 时间:2022-03-24 12:17

从以下几个维度,对 redis、memcache、mongoDB 做了对比。
1、性能
都比较高,性能对我们来说应该都不是瓶颈。
总体来讲,TPS 方面 redis 和 memcache 差不多,要大于 mongodb。
2、操作的便利性
memcache 数据结构单一。(key-value)
redis 丰富一些,数据操作方面,redis 更好一些,较少的网络 IO 次数,同时还提供 list,set,
hash 等数据结构的存储。
mongodb 支持丰富的数据表达,索引,最类似关系型数据库,支持的查询语言非常丰富。
3、内存空间的大小和数据量的大小
redis 在 2.0 版本后增加了自己的 VM 特性,突破物理内存的*;可以对 key value 设置过
期时间(类似 memcache)
memcache 可以修改最大可用内存,采用 LRU 算法。Memcached 代理软件 magent,比如建立
10 台 4G 的 Memcache 集群,就相当于有了 40G。 magent -s 10.1.2.1 -s 10.1.2.2:11211 -b
10.1.2.3:14000 mongoDB 适合大数据量的存储,依赖操作系统 VM 做内存管理,吃内存也比较厉害,服务
不要和别的服务在一起。
4、可用性(单点问题)
对于单点问题,
redis,依赖客户端来实现分布式读写;主从复制时,每次从节点重新连接主节点都要依赖整
个快照,无增量复制,因性能和效率问题,
所以单点问题比较复杂;不支持自动 sharding,需要依赖程序设定一致 hash 机制。
一种替代方案是,不用 redis 本身的复制机制,采用自己做主动复制(多份存储),或者改成
增量复制的方式(需要自己实现),一致性问题和性能的权衡
Memcache 本身没有数据冗余机制,也没必要;对于故障预防,采用依赖成熟的 hash 或者环
状的算法,解决单点故障引起的抖动问题。
mongoDB 支持 master-slave,replicaset(内部采用 paxos 选举算法,自动故障恢复),auto sharding 机制,对客户端屏蔽了故障转移和切分机制。
5、可靠性(持久化)
对于数据持久化和数据恢复,
redis 支持(快照、AOF):依赖快照进行持久化,aof 增强了可靠性的同时,对性能有所影

memcache 不支持,通常用在做缓存,提升性能;
MongoDB 从 1.8 版本开始采用 binlog 方式支持持久化的可靠性
6、数据一致性(事务支持)
Memcache 在并发场景下,用 cas 保证一致性redis 事务支持比较弱,只能保证事务中的每个操作连续执行
mongoDB 不支持事务
7、数据分析
mongoDB 内置了数据分析的功能(maprece),其他不支持
8、应用场景
redis:数据量较小的更性能操作和运算上
memcache:用于在动态系统中减少数据库负载,提升性能;做缓存,提高性能(适合读多写
少,对于数据量比较大,可以采用 sharding)
MongoDB:主要解决海量数据的访问效率问题。
表格比较:
memcache redis 类型 内存数据库 内存数据库
数据类型 在定义 value 时就要固定数据类型 不需要
有字符串,链表,集 合和有序集合
虚拟内存 不支持 支持
过期策略 支持 支持
分布式 magent master-slave,一主一从或一主多从
存储数据安全 不支持 使用 save 存储到 mp.rdb 中
灾难恢复 不支持 append only file(aof)用于数据恢复
性能
1、类型——memcache 和 redis 都是将数据存放在内存,所以是内存数据库。当然,memcache 也可用于缓存其他东西,例如图片等等。
2、 数据类型——Memcache 在添加数据时就要指定数据的字节长度,而 redis 不需要。
3、 虚拟内存——当物理内存用完时,可以将一些很久没用到的 value 交换到磁盘。
4、 过期策略——memcache 在 set 时就指定,例如 set key1 0 0 8,即永不过期。Redis 可以通
过例如 expire 设定,例如 expire name 10。
5、 分布式——设定 memcache 集群,利用 magent 做一主多从;redis 可以做一主多从。都可
以一主一从。
6、 存储数据安全——memcache 断电就断了,数据没了;redis 可以定期 save 到磁盘。
7、 灾难恢复——memcache 同上,redis 丢了后可以通过 aof 恢复。
Memecache 端口 11211
yum -y install memcached
yum -y install php-pecl-memcache
/etc/init.d/memcached start memcached -d -p 11211 -u memcached -m 64 -c 1024 -P /var/run/memcached/memcached.pid
-d 启动一个守护进程
-p 端口
-m 分配的内存是 M
-c 最大运行并发数-P memcache 的 pid
//0 压缩(是否 MEMCACHE_COMPRESSED) 30 秒失效时间
//delete 5 是 timeout <?php
$memcache = new Memcache; $memcache -> connect('127.0.0.1', 11211); $memcache -> set('name','yang',0,30);
if(!$memcache->add('name','susan',0, 30)) {
//echo 'susan is exist'; }$memcache -> replace('name', 'lion', 0, 300); echo $memcache -> get('name');
//$memcache -> delete('name', 5);
printf "stats\r\n" | nc 127.0.0.1 11211
telnet localhost 11211 stats quit 退出
Redis 的配置文件 端口 6379
/etc/redis.conf 启动 Redis
redis-server /etc/redis.conf 插入一个值
redis-cli set test "phper.yang" 获取键值
redis-cli get test 关闭 Redis
redis-cli shutdown 关闭所有
redis-cli -p 6379 shutdown <?php
$redis=new
Redis(); $redis->connect('127.0.0.1',6379); $redis->set('test',
'Hello World'); echo $redis->get('test'); Mongodb
apt-get install mongo mongo 可以进入 shell 命令行
pecl install mongo Mongodb 类似 phpmyadmin 操作平台 RockMongo
宝石花的养殖方法介绍 宝石花怎么养才长得好 不想让老婆看到我电脑里的一些东西怎么办? 桥好路由器停电后在来电老是获取lp 勒索病毒加密的文件如何恢复? TPU贴合膜多少钱 华为手机如何将输入法改为简体 肉丝炒金针菇做法 仓储冷链信息怎么申报 什么是药品冷链物流 浙江食品冷链运输多少钱 生物冷链具备什么资质 投诉检测站最有效办法 冢君的解释 304C型钢厂 真诚推荐 永浩供 乌鲁木齐球墨铸铁厂家排名 2023年抖音618好物节招商规则 2023年抖音好物年货节好物直播间玩法说明 抖音2023好物年货节玩法攻略 互联网内容平台——小红书的优势与困境 ...女儿房间的空调洗一下滤网,问一下格力小金豆空调面罩怎么打开... 传真机和打印机有什么区别? 传真纸和打印纸哪个好 传真纸和复印纸哪个好 虚拟语气as though 的问题 We didn't know his telephone number, otherwise we would have teleph... 我想问一下 错综复杂条件句 那怎么不能使用在这里 if i can do this... 好可怕...好可怕的梦... 线束组装线束组装工艺要求 汽车线束英语翻译 带表卡尺怎么读数 带表卡尺的使用方法 压力变送器数显表 公主连结凯露表情包大全 臭鼬表情包图片一览[多图] 单眼皮怎么使用双眼皮贴? 咬人的那特小的虫子叫什么 Bose音响怎么连接蓝牙 博士音响蓝牙怎么连接 夹了一片菜叶,上面摆了七根鱼刺和在碗里放了七个汤勺,每个汤勺里放一根... 微信聊天记录怎么才能彻底删除?通过这几种操作可以确保隐私安全!_百度... IDM IDMShellExt64.dll无法删除 - 删除使用中的(进程相关或残留)文件... 写关于活动的句子100字 社区团购运营思路和实战有啥收获写100字 备忘录在手机的哪里 刚性消费有哪些 中国经济快速增长的原因 什么是刚性消费 什么叫刚性增长 特别精辟的个性签名(非常经典的个性句子) 特别经典的个性签名(非常惊艳的个性句子) 文艺范十足的个性签名(温柔治愈的个性签名句子) wps文字怎么设置每页头和尾 27岁的女人需要补充哪些营养元素 Redis数据库跟MongoDB数据库有什么区别呢? redis和mongodb的区别 redis 和 mongodb 比起来优缺点是什么? redis和mongdb有什么不同啊,该怎么选择呢 红米k20和k20pro有什么区别 红米k20pro好用吗? 号称性价比之王的红米K20 pro值不值得购买呢? Redmi K20Pro支持无限充电吗? 华为型号RJO一UL00多少钱 华为华为ul00是什么型号 华为RIO-TLOO是什么机型? 华为ul00是什么型号 华为rioul00是全网通吗 华为RIO-ULOO 运行内存是多少 华为g7 plus的型号是什么型号 华为手机(型号:HUAWEI RIO-UL00;安卓版本:5.1)。怎么获取ROOT权限? 华为R10 -UL00是什么型号 HuaWeiRIO-UL00这种华为手机是什么型号 华为r10-ul00是什么型号 华为rlo一ul00是什么型号 redis,memcache和mongodb的区别 redis和mongodb哪个好 如何评价RethinkDB?和MongoDB,Redis有什么区别 关系型数据库和非关系型数据库有什么区别,mongdb和redis怎么选择,mongdb优势在哪 Redis,SSDB,Memcache和MongoDB的区别 如何评价RethinkDB?和MongoDB,Redis有什么区别? mongodb hbase redis 哪个更强大 redis和memcached的区别 redis mongodb 哪个性能高 为什么mongodb与redis非但没有形成竞争反而是互补关系 谈谈mongodb,mysql的区别和具体应用场景 java面试中redis,mongodb类的,会问哪些问题,怎么回答 redis能比mongo快多少 vuevlog最长多久视频 VUE Vlog 可以调整图片素材播放速度吗?如何操作? xgplayer vue设置时间 vue 视频加载时间过长会导致无法播放吗 vue jstree怎么调整间隔 vue.js渲染时间磋该怎么处理 OPPO R9S手机里下载了vue这个软件怎么在设置里调分镜数和时长?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com