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协议,请求逐步打到各个节点上,有一定延迟,但集群压力比较小 | 大数据量的高可用场景
|