在利用Redis过程当中,咱们发明了很多Redis分歧于Memcached,也差别于MySQL的特点。
(本文首要会商Redis未启用VM撑持环境)
1. Schema
MySQL: 需事先设计
Memcached: 无需设计
Redis: 小型体系能够不消,可是若是要公道的计划及利用Redis,必要事前停止近似以下一些计划
- 数据项: value保留的内容是什么,如用户材料
- Redis数据范例: 如String, List
- 数据大小: 如100字节
- 记实数: 如100万条(决议是不是需求拆分)
- 商场
下面的规划便是一种schema,为何Redis在大型名目需要事先计划schema?由于Redis办事器有容量限定,数据容量不克不及超越物理内存巨细,同时斟酌到营业数据的可扩大性,纪录数会延续545d118729af6e08aa7ec09a73535cf三、单笔记录的内容也城市增加,是以需要提早规划好容量,数据架构师便是经由过程schema来判定以后业务的Redis是否需要“分库分表”以知足可扩大需要。
2. 容量及带宽规划
容量规划
MySQL: < 硬盘大小
Memcached: < RAM
Redis: < RAM
带宽规划
由于Redis比MySQL快10倍以上,因此带宽也是需要事先规划,防止带宽跑满而泛起瓶颈。
3. 机能规划(QPS)
当体系读写呈现瓶颈,凡是怎样处理?
MySQL
写: 拆分到多办事器
读: (1) 拆分 (2) 写少也可以通过增长Slave来办理
Memcached
读写: 都通过hash拆分到更多节点。
Redis:
写:拆分
读: (1) 拆分 (2) 写少也可以通过增加Slave来解决
4. 可扩展性
MySQL: 分库分表
Memcached: hash散布
Redis:也可以分库,也能够hash漫衍
小结
通过以上阐明,Redis在良多方面同时具有MySQL及Memcached使用特性,在某些方面则更像MySQL。
因为Redis数据不克跨越内存巨细,一方面需要举行事介绍量规划,包管容量充足;另一方面设计上需要避免数据范围无穷制增添,进而致使Redis不成扩展。
Redis需要象MySQL同样预先设计好拆分计划。