面试常问题汇总、redis 、 mangodb 、 memcache对比

 redis 、 mangodb 、 memcache

都是NoSQLs数据库:非关系型数据库。mysql就是关系型数据库。

  redis mongodb memcache
数据类型

五大类型

string、list、hash、sorted set 、set

key-value

值可以是文档,数组及文档数组

key-value
线程 单核单线程 多线程

多核多线程

主要存储形式 内存(也可持久化到磁盘) 磁盘 内存
主从模式(分布) 支持 支持 不支持
自动复制 支持 支持 不支持
TPS性能 稍弱
分片 支持 支持 支持
过期策略 支持 不支持 支持
自动故障恢复 哨兵模式 内部paxos选举 不支持
事务支持 支持(稍弱,事务中的每个操作连续执行 不支持 支持(cas保证)
消息发布/订阅 支持 不支持 不支持
断电数据恢复 支持 支持 不支持
编写语言 ANSI C C++ C
应用场景 数据量较小但更性能操作和运算上 海量数据的访问效率问题 减少数据库负载,提升性能;做缓存,提高性能

 

Redis发布订阅与ActiveMQ的比较

(1)ActiveMQ支持多种消息协议,包括AMQP,MQTT,Stomp等,并且支持JMS规范,但Redis没有提供对这些协议的支持; 
(2)ActiveMQ提供持久化功能,但Redis无法对消息持久化存储,一旦消息被发送,如果没有订阅者接收,那么消息就会丢失; 
(3)ActiveMQ提供了消息传输保障,当客户端连接超时或事务回滚等情况发生时,消息会被重新发送给客户端,Redis没有提供消息传输保障。 

  (4) MQ 提供了丰富的发布订阅方式,例如 queue、topic。还有 ack 消息确认机制,以及推送和主动拉取消息的选择方式。
总之,ActiveMQ所提供的功能远比Redis发布订阅要复杂,毕竟Redis不是专门做发布订阅的。
 

JVM调优

cpu 100%

1.执行 top 命令,查看占用cpu使用率最高的 pid 进程

2.使用 top -Hp  pid ,键入大写P,按照cpu使用率排序,找出最耗cpu的线程id

3.将线程 id 转换成 16 进制(堆栈里面线程id 是16进制表示的)

4.使用 jstack pid | grep '线程id(16进制)'  -C5 --color  查看最耗cpu的线程

5.找到对应代码进行排查。
 

内存飙高:

使用top ,查看 %MEM% 比较高的 pid

jmap -heap pid 查看堆内存使用情况,

jmap -histo:l

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值