NoSql非关系型数据库学习
1、了解Nosql
1.1. Nosql概念及其出现的原因
NoSQL泛指非关系型数据库。它的出现跟当今互联网时代息息相关。
- 在90年代时,一部电脑对于一个家庭而言略显珍贵,当然作为00后的小编也不知道90年代的互联网发展到何地。但是当时网站的访问量一般不大,用单个数据库就可以轻松应对。在那个时候的网页多为静态网页,动态交互的网页不多。
- 到了最近10几年,网站开始快速发展。比如论坛、博客、sns等等引领web领域的潮流发展。这对于过去的服务器而言,必然需要更加高性能的工具完成更多人的访问量。不过在初期,其实论坛的访问量也不大。
现在的网络特点:
- 高并发读写:如今的Web2.0时代,数据库并发负载非常高。往往达到一秒钟上万次的读写请求。
- 高容量存储和高效存储:网站通常需要在后台数据库中存储海量数据。如何在已有高存储的基础上还要进行高效数据查询也是一种挑战。
- 高扩展性和高可用性:随着系统用户量和访问量与日俱增,需要数据库很方便的进行拓展、维护。
1.2 Nosql数据库的优势
- 易拓展:数据库种类繁多,但共同的一点都是去掉关系型数据库的关系型特征。数据之间无关系就使得非常容易拓展。
- 大数据量、高性能:
Nosql具有非常高的读写性能,尤其是在大数据量下也能够表现得优秀。 - 灵活的数据模型:
Nosql无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。 - 高可用:NoSQL在不太影响性能的情况,就可以方便的实现高可用的架构。
1.3 常见的Nosql产品

| 分类 | 相关产品 | 应用场景 | 数据模型 | 优点 | 缺点 |
|---|---|---|---|---|---|
| 键值数据库 | Redis、Memcached、Riak | 内容缓存如会话、配置文件、参数等 | <key,value>。通过散列表来实现 | 扩展性好,灵活性高。大量操作时耗时性高 | 数据无结构化。通常只被当做字符串或者二进制数据,只能通过键来查询 |
| 列数据库 | Bigtable、HBase、Cassandra | 分布式数据存储与管理 | 以列族式存储,将同一列数据存在一起 | 可拓展性强,查找速度快,复杂性低 | 功能局限,不支持事务的强一致性 |
| 文档数据库 | MongoDB、CouchDB | Web应用,存储面向文档或者类似半结构化的数据 | <key,value>value是JSON结构的文档 | 数据结构灵活,可以根据value构建索引 | 缺乏统一查询语言 |
| 图形数据库 | Neo4j、InfoGrid | 社交网络、推荐系统、专注构建关系图谱 | 图结构 | 支持复杂的图形算法 | 复杂度高,只能支持一定的数据规模 |
2、Redis介绍
2.1 什么所示Redis
Redis全称REmote DIctionary Server(远程字典服务器)。它是完全开源的,用C语言编写的,是一个高性能的(key/value)分布式内存数据库。
基于内存运行并支持持久化的NoSQL数据库,是当前最热门的NoSql数据库之一。也被人们称为数据结构服务器。它相对于key-value缓存产品有以下三个特点:
(1)Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用
(2) Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储
(3) Redis支持数据的备份,即master-slave(主从)模式的数据备份
2.2 Redis优势
(1) 性能极高 : Redis能读的速度是110000次/s,写的速度是81000次/s 。
(2) 丰富的数据类型 : Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
(3) 原子 (不可再分):Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
(4) 丰富的特性 :Redis还支持 publish/subscribe, 通知 key 过期等等特性 。
(5) 采用单线程:避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗。
(6) 使用多路I/O复用模型,非阻塞IO。
2.3 Redis应用场景
- 缓存(数据查询,短连接,新闻内容,商品内容等),使用最多
- 聊天室在线好友列表
- 任务队列(秒杀,抢购,12306等)
- 应用排行榜
- 网站访问统计
- 数据过期处理(可以精确到毫秒)
- 分布式集群架构中的session问题
3.Redis数据结构
Redis是一种基于内存的数据库,并且提供一定的持久化功能,它是一种键值(key-value)数据库,使用 key 作为索引找到当前缓存的数据,并且返回给程序调用者。
当前的 Redis 支持 6 种数据类型,它们分别是字符串(String)、列表(List)、集合(set)、哈希结构(hash)、有序集合(zset)和基数(HyperLogLog)
本文的分享暂时到这里。接下来文章会介绍下载并安装redis。谢谢大家。
本文介绍了NoSQL数据库的出现原因、优势以及常见产品,重点讲解了Redis的特性和应用场景,包括其高并发、丰富的数据类型和原子性操作。Redis常用于缓存、消息队列和数据排行榜等场景,支持多种数据结构如字符串、列表、集合等。

被折叠的 条评论
为什么被折叠?



