1.对比
DB | 特性 | 数据结构 | 查询 | 附加特性 | Ops(并发性能) | Latency时延 |
---|---|---|---|---|---|---|
Redis | 内存 非关系 多种数据结构 (主要Key-Value) |
String List Set、Sorted Set Hash |
各种数据类型查询 get 部分事务 |
发布/订阅 主从复制 磁盘持久化 支持Lua脚本 单线程 |
120000(12w) |
<1ms |
MemCached | 内存 非关系 Key-Value |
K-V键值对 | create, read, update, delete |
多线程服务端 高性能 |
80000(8w) |
<1ms |
MongoDB | 磁盘 非关系 文档 |
BSON documents |
create, read, update, delete, conditional queries, |
主从复制 分片 索引(B树) |
3500(3k) |
<100ms |
MySQL | 磁盘 关系型 表结构记录 |
表记录 行 | Select, insert, update, delete, functions函数, stored procedures存储过程 |
事务(Innodb) 主从复制 索引 (B+) |
900(<1k) |
>100ms |
2.内存型对比
场景选择
- 根据数据类型
- 并发量
- 可用性
memcache适合以KV的缓存为主,数据量,并发业务量大的场景,它支持多线程操作,充分利用CPU,但缓存不能持久化
Redis拥有丰富的数据类型,可以做到缓存持久化,宕机更容易数据恢复,在单线程的效率比memcache快
2.1Redis
部署模式 | 特性 | 适应场景 |
---|---|---|
单机 | 可用性差! | 可以接受缓存穿透的场景 |
哨兵 | 高可用 提供主从的监控, 当主服务宕机后, 从服务能快速切换成主服务, 缺点是不易扩容 |
高可用场景 |
集群 | 横向扩展-负载均衡 集群模式内存和QPS不受限于单机 有延迟 通信采用gossip协议,请求逐步打到各个节点上,有一定延迟,但集群压力比较小 |
大数据量的高可用场景 |