没有合适的资源?快使用搜索试试~ 我知道了~
在基于Web的架构当中,数据库是最难进行横向扩展的,当一个应用系统的用户量和访问量与日俱增的时候,你的数据库却没有办法像Web服务器和应用服务器那样简单的通过添加更多的硬件和服务节点来扩展性能和负载能力。对于很多需要提供7*24小时不间断服务的网站来说,对数据库系统进行升级和扩展是非常痛苦的事情,往往需要停机维护和数据迁移,为什么数据库不能通过不断的添加服务器节点来实现扩展呢? 在上面提到的“三高”的需求面前,关系数据库遇到了难以克服的障碍,而对于Web2.0网站来说,关系数据库的很多主要特性却往往无用武之地,例如: (1)数据库事务一致性需求 很多Web实时系统并不要求严格的数据库事务,对读一致性的要求很低,有些场合对写一致性要求也不高。因此数据库事务管理成了数据库高负载下一个沉重的负担。 (2)数据库的写实时性和读实时性需求 对关系数据库来说,插入一条数据之后立刻查询,是肯定可以读出来这条数据的。并不要求这么高的实时性。 (3)对复杂的SQL查询,特别是多表关联查询的需求 任何大数据量的Web系统,都非常忌讳多个大表的关联查询,以及复杂的数据分析类型的复杂SQL报表查询,特别是SNS类型的网站,从需求以及产品设计角度,就避免了这种情况的产生。往往更多的只是单表的主键查询,以及单表的简单条件分页查询,SQL的功能被极大的弱化了。
资源推荐
资源详情
资源评论
nosql 之 redis 入门
redis 的课程计划
1、 nosql 之 redis 简介
2、 CentOS 下安装 redis
3、 redis 的数据结构
4、 key 的通用操作
5、 redis 其他特性
6、 jedis 运维知识
7、 redis 使用
8、 redis 客户端
1 nosql 的简介
1.1 nosql 简介
随着互联网 Web2.0 网站的兴起,传统的关系数据库在应付 Web2.0 网站,特别是超大规模
和高并发的 SNS 类型的 Web2.0 纯动态网站已经显得力不从心,暴露了很多难以克服的问
题,如:
1.1.1 对数据库高并发读写的需求
网站要根据用户个性化信息来实时生成动态页面和提供动态信息,所以基本上无法使用
动态页面静态化技术,因此数据库并发负载非常高,往往要达到每秒上万次读写请求。关系
数据库应付上万次 SQL 查询还勉强顶得住,但是应付上千万次 SQL 写数据请求,硬盘 IO 就
已经无法承受了。
1.1.2 对海量数据的高效率存储和访问的需求
对于大型的 SNS 网站,每天用户产生海量的用户动态,以国外的 Friendfeed 为例,一个
月就达到了 2.5 亿条用户动态,对于关系数据库来说,在一张 2.5 亿条记录的表里面进行 SQL
查询,效率是极其低下乃至不可忍受的。
1.1.3 对数据库的高可扩展性和高可用性的需求
在基于 Web 的架构当中,数据库是最难进行横向扩展的,当一个应用系统的用户量和
访问量与日俱增的时候,你的数据库却没有办法像 Web 服务器和应用服务器那样简单的通
过添加更多的硬件和服务节点来扩展性能和负载能力。对于很多需要提供 7*24 小时不间断
服务的网站来说,对数据库系统进行升级和扩展是非常痛苦的事情,往往需要停机维护和数
据迁移,为什么数据库不能通过不断的添加服务器节点来实现扩展呢?
在上面提到的“三高”的需求面前,关系数据库遇到了难以克服的障碍,而对于 Web2.0
网站来说,关系数据库的很多主要特性却往往无用武之地,例如:
(1)数据库事务一致性需求
很多 Web 实时系统并不要求严格的数据库事务,对读一致性的要求很低,有些场合对
写一致性要求也不高。因此数据库事务管理成了数据库高负载下一个沉重的负担。
(2)数据库的写实时性和读实时性需求
对关系数据库来说,插入一条数据之后立刻查询,是肯定可以读出来这条数据的。并不
要求这么高的实时性。
(3)对复杂的 SQL 查询,特别是多表关联查询的需求
任何大数据量的 Web 系统,都非常忌讳多个大表的关联查询,以及复杂的数据分析类
型的复杂 SQL 报表查询,特别是 SNS 类型的网站,从需求以及产品设计角度,就避免了这种
情况的产生。往往更多的只是单表的主键查询,以及单表的简单条件分页查询,SQL 的功能
被极大的弱化了。
因此,关系数据库在这些越来越多的应用场景下显得不那么合适了,为了解决这类问题
的非关系数据库应运而生。NoSQL 是非关系型数据存储的广义定义。它打破了长久以来关
系型数据库与 ACID 理论大一统的局面。NoSQL 数据存储不需要固定的表结构(例如以键值
对存储,它的结构不固定,每一个元组可以有不一样的字段,每个元组可以根据需要增加一
些自己的键值对,这样就不会局限于固定的结构,可以减少一些时间和空间的开销),通常
也不存在连接操作。
1.2 NoSQL 无与伦比的特点
在大数据存取上具备关系型数据库无法比拟的性能优势,例如:
1.2.1 易扩展
NoSQL 数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。数据
之间无关系,这样就非常容易扩展。也无形之间,在架构的层面上带来了可扩展的能力。
1.2.2 大数据量,高性能
NoSQL 数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得益于
它的无关系性,数据库的结构简单。
1.2.3 灵活的数据模型
NoSQL 无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。而在关系
数据库里,增删字段是一件非常麻烦的事情。如果是非常大数据量的表,增加字段简直就是
一个噩梦。这点在大数据量的 Web2.0 时代尤其明显。
1.2.4 高可用
NoSQL 在不太影响性能的情况,就可以方便的实现高可用的架构。比如 Cassandra,HBase
模型,通过复制模型也能实现高可用。
综上所述,NoSQL 的非关系特性使其成为了后 Web2.0 时代的宠儿,助力大型 Web2.0 网站
的再次起飞,是一项全新的数据库革命性运动。
1.3 redis 简介
随着应用对高性能需求的增加,NoSQL 逐渐在各大名企的系统架构中生根发芽。时至
今日,涌现出的 NoSQL 产品已经有很多种了,例如 Membase、MongoDB、Apache
Cassandra、CouchDB 等。不过,在国内外互联网巨头例如社交巨头新浪微博、传媒巨头
Viacom 及图片分享领域佼佼者 Pinterest 等名企都不约而同地采用了 Redis 作为其 NoSQL
数据库的选择,到底 Redis 是何方神圣呢?能让如此多的名企为它而痴狂。
按照官方的说法,Redis 是一个开源的,使用 C 语言编写,面向“键/值”(Key/Value)
对类型数据的分布式 NoSQL 数据库系统,特点是高性能,持久存储,适应高并发的应用场
景。因此,可以说 Redis 纯粹为应用而产生,它是一个高性能的 key-value 数据库,并且还
提供了多种语言的 API(包括我们的大 C#)。那么,也许我们会问:到底性能如何呢?以下
是官方的 bench-mark 数据:
测试完成了 50 个并发执行 100000 个请求。
设置和获取的值是一个 256 字节字符串。
Linux box 是运行 Linux 2.6,这是 X3320 Xeon 2.5 ghz。
文本执行使用 loopback 接口(127.0.0.1)。
结果:读的速度是 110000 次/s,写的速度是 81000 次/s 。(当然不同的服务器配置性
能也有所不同)。
和 Memcached 类似,Redis 支持存储的 value 类型相对更多,包括 string(字符串)、
list(链表)、set(集合)、zset(sorted set --有序集合)和 hash(哈希类型)。这些数据类型都支持
push/pop、add/remove 及取交集并集和差集及更丰富的操作,而且这些操作都是原子性
的。在此基础上,Redis 支持各种不同方式的排序。与 Memcached 一样,为了保证效率,
数据都是缓存在内存中。区别的是 Redis 会周期性的把更新的数据写入磁盘或者把修改操
作写入追加的记录文件,并且在此基础上实现了 master-slave(主从)同步(数据可以从主服
务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。)。
因此,Redis 的出现,很大程度补偿了 Memcached 这类 key/value 存储的不足,在部分
场合可以对关系数据库起到很好的补充作用。
1.4 redis 是什么
redis 是一个开源的、使用 C 语言编写的、支持网络交互的、可基于内存也可持久化的
Key-Value 数据库。
redis 的作者,Salvatore Sanfilippo,来自意大利的西西里岛,现在居住在卡塔尼亚。目前供职
于 Pivotal 公司。他使用的网名是 antirez,如果你有兴趣,可以去他的博客逛逛,地址是
antirez.com,他的 github 地址是 http://github.com/antirez。
2 CentOS 下安装 redis
步骤:
1、 建议安装 gcc 环境:yum install gcc-c++()
2、 将 Windows 下下载的压缩文件上传到 Linux 下。我们可以通过 filezilla 等 FTP 软件上传,
这里通过 secureCRT 进行上传。步骤如下:
alt + p
put c:/redis-3.0.7.tar.gz 或者 直接将 SCRT 工具打开将压缩包拖拽到客户端
剩余18页未读,继续阅读
资源评论
qq_36648435
- 粉丝: 4
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 常用工具集参考用于图像等数据处理
- 音乐展示网页、基于Stenography的图像数字水印添加与提取,以及基于颜色矩和Tamura算法的图像相似度评估算法py源码
- 基于EmguCV(OpenCV .net封装),图像数字水印加解密算法的实现,其中包含最低有效位算法,离散傅里叶变换算法+文档书
- 基于matlab+DWT的图像水印项目,数字水印+源代码+文档说明+图片+报告pdf
- (优秀毕业设计)基于python实现的数字图像可视化水印系统的设计与实现,多种数字算法实现+源代码+文档说明+理论演示pdf
- 基于DWT-DCT-SVD和deflate压缩的数字水印方法python源码+Gui界面+演示视频(高分毕业设计)
- 基于matlab实现DWT、DCT、SVD算法数字图像水印可视化系统+GUI界面+文档说明+详细注释(高分毕业设计)
- NCIAE-Data-Structure大一大二笔记
- 学习wireshark笔记
- digital-image-数据可视化笔记
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功