Redis特点
- Redis是一个高性能(支持并发11万读8万写)的key-value存储系统。
- 支持丰富的存储value类型,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。
- Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。
- 虽然运行在内存,同时支持持久化。提供两种方式:1保存到数据文件.rdb安全性高,但对效率有影响。2保存对数据有影响的操作命令到.aof中,保存操作命令的频率可配置,比较灵活,效率高。
- 支持订阅发布功能(subscribe/publish)
- Redis 很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP客户端,使用很方便。
redis是Nosql数据库中使用较为广泛的非关系型内存数据库,redis内部是一个key-value存储系统。redis基于内存运行并支持持久化的NoSql数据库,是当今最热门的NoSql数据库之一,也被称为数据结构服务器。1.主要是支持持久化 2.支持更多数据结构 3.支持主从同步
memcached和redis的比较
为什么要使用NoSql?
1. 当数据量的总大小一个机器放不下时。
2. 数据索引一个机器的内存放不下是。
3. 访问量(读写混合)一个实力放不下时
单机时代模型
如果每次存储成千上万条数据,这样会导致MySql的性能很差,存储和读取速度很慢,然后演变为:
缓存+mysql+垂直拆分方式
cache作为中间缓存,将所有的数据先保存到缓存中,然后在存入mysql中,减小数据库压力,提高效率。
但是当数据再次增加到一个量级,上面的方式也不能满足需求,由于数据库的写入压力增大,Memcached只能缓解数据库的读取压力。读写集中在一个数据库上让数据库不堪重负,大部分网站开始使用主从复制技术来达到读写分离,以提高读写性能和读库的可扩展性。然后形成了:
主从分离(master-slave)模式
在redis的告诉缓存,mysql的主从复制,读写分离的基础上,这时MySql主库的写压力开始出现瓶颈,而数据量的持续猛增,由于myISAM使用表锁,在高并发下会出现严重的锁问题,大量的高并发mysql应用开始使用InnoDB引擎代替MyISAM。然后形成了:
分表分库模式
将变化小的,业务相关的放在一个数据库,变化多的,不相关的放在一个数据库。
NoSql数据库的优势
1. 易扩展
这些类型的数据存储不需要固定的模式,无需多余的操作就可以进行横向的扩展。相对于关系型数据库可以减少表和字段特别多的情况。在架构的层面上又可扩展的能力。
2. 大数据量性能高
3. 多样灵活的数据模型
在nosql中不仅可以存储st