本篇内容介绍了“Redis的特点及功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
Redis创建者,出生于西西里岛的意大利人(antirez)发明的,个人网站,http://invece.org。早年是系统管理员,2004-2006 年做嵌入式方面的工作,之后接触 WEB,2007 年和朋友共同创建了一个网站 LLOOGG.com,并为了解决这个网站的负载问题而在 2009 年发明了 Redis。
说到这个 LLOOGG.com 网站,我们来看看这个到底是个干嘛的网站,LLOOGG.com网站是一个访客信息追踪网站,网站可以通过 javascript 脚本,将访客的 IP 地址、所属国家、阅览信息、访问页面地址等数据传送给 LLOOGG.com。
三个网站正在向 LLOOGG.com 发送它们的访客浏览记录
这个就是 LLOOGG.com 的用户界面,ps:Google 的 Analytics知道 2011 年才有了实时功能,所以说 LLOOGG.com 的实时反馈想法在当时 2007 年还是很有新意的。
LLOOGG 的运作方式
比如说这里有三个网站,为了记录每个被追踪网站的浏览信息,LLOOGG.com 需要为每个被追踪的网站创建一个列表(list),每个列表需要根据用户的设置,储存最新的 5到10000 条浏览记录
各个网站发送的浏览记录会分别进入相应的队列
FIFO 机制,当列表的长度超过用户指定的最大长度时,程序每向列表推入一条记录,就需要从列表中弹出一条最旧的记录,图中展示比如用户设置列表最大长度为 5
LLOOGG 怎么引起负载问题的呢?
随着 LLOOGG 的用户越来越多,LLOOGG 要维护的列表数量也越来越多,要执行的推入和弹出操作也越来越多,当时 LLOOGG 当时使用 MYSQL 数据库,而每次 MYSQL执行推入和弹出操作都要进行硬盘写入和读取,程序的性能严重受制于硬盘 I/O,很多操作都堆在那里,然后网站整个就没法运作了。
这个负载问题的根本原因就是这个硬盘 IO,所以 antirez 在不改变硬件的基础上,通过提升列表操作的性能来解决负载问题,决定自己写一个具有列表结构的内存数据库原型。最重要的是数据存储在内存而不是硬盘,所以程序的性能不会受到硬盘 IO 限制,可以以极快的速度执行针对列表的堆入和弹出操作。结果试验,确实解决了 LLOOGG 当时
的负载问题,于是 antirez 使用 C 语言重写了这个内存数据库,并给它加上了持久化功能,这个就是 Redis 的诞生!
世界上有无数种数据库,为什么要使用 Redis 呢,我们来看看它的优点
我们知道很多数据库只能处理一种数据结构:
SQL数据库----二维表格
Memcached----键值对数据库,键值都是字符串
文档数据库(CouchDB、MongoDB)----由 JSON/BSON 组成的文档
当然不是他们这些数据库不好,而是一旦数据库提供的数据结构并不适合去做某件事的话,程序写起来就会非常的麻烦和不自然。
Redis 虽然也是键值对数据库,但是和 Memcached 不同的是,Redis 支持多种类型的数据结构,不仅可以是字符串,同时还提供散列(hashes),列表(lists),集合(sets),有序集合(sorted sets)等数据结构。
通过选用不同的数据结构,用户可以使用 Redis 解决各式各样的问题。
数据库有两种,一种硬盘数据库,一种内存数据库
硬盘是把值储存在硬盘,典型的是 SQL 数据库
在内存里面就存储一下索引,当硬盘数据库想访问硬盘的值时,它先在内存里面找到索引,然后在找值,问题是什么,在读取和写入硬盘的时候,如果读写比较多的时候,它会把硬盘 IO 堵死。
至于内存数据库,它会直接把值放到内存里面,内存数据库就直接把值取到,风一样的感觉,读写数据的时候都不会受到硬盘 IO 速度的限制,所以速度极快。
Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
Redis支持数据的备份,即master-slave模式的数据备份。
“Redis的特点及功能”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。