非关系型数据库Redis
1.关系型数据库和非关系型数据库
关系型数据库 优点:
- 易于维护(格式一致)(二维表)
- sql通用,适用简易,而且也支持复杂操作(一个表以及多个表之间非常复杂的查询)
缺点:
- 读写性能比较差,如果遇到大数据的高效率读写
- 结构固定,导致灵活性很低
非关系型数据库
NoSQL特点
1.非关系型数据库,不依赖业务逻辑数据库存储,以简单key-value存储。因此大大的增加了数据库的扩展能力 2.不遵循SQL标准 3.不支持ACID
优点:
- 根据自已添加的字段获取用户不同信息。不像关系型数据库要多表关联查询
- 缓存数据库,完全在内存中,速度快,数据结构简单
- 减少io操作,数据库和表拆分,虽然破坏业务逻辑,即外加一个缓存数据库,提高数据库速度,也可以用专门的存储方式,以及针对不同的数据结构存储
- 成本低:nosql数据库部署简单,基本都是开源软件
缺点:
- 数据结构相对复杂,对于需要进行较复杂查询的数据,关系型数据库显的更为合适
- 不适合持久存储海量数据
- 无事务处理,不支持ACID;
2.Redis
- Redis 是一个开源的 key-value 存储系统。
- 和 Memcached 类似,它支持存储的 value 类型相对更多,包括 string (字符串)、list (链表)、set (集合)、zset (sorted set –有序- 集合) 和 hash(哈希类型)。
- 这些数据类型都支持 push/pop、add/remove 及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。
- 在此基础上,Redis 支持各种不同方式的排序。
- 与 memcached 一样,为了保证效率,数据都是缓存在内存中。
- 区别的是 Redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件。
- 并且在此基础上实现了 master-slave (主从) 同步。
应用场景
- 配合关系型数据库做高速缓存
- 高频次,热门访问的数据,降低数据库 IO。
- 分布式架构,做 session 共享。
默认6379端口号 与memcache三点不同,支持多数据类型,持久化,单线程+多路io口复用 所谓的多路io复用 定义如下:
- 使用一个线程来检查多个文件描述符(Socket)的就绪状态(比如调用 select 和 poll 函数,传入多个文件描述符)
- 如果有一个文件描述符就绪,则返回,否则阻塞直到超时。
- 得到就绪状态后进行真正的操作可以在同一个线程里执行,也可以启动线程执行(比如使用线程池)
|