温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Redis(一):初识Redis内存数据库与持久化

发布时间:2020-07-24 05:42:27 来源:网络 阅读:7243 作者:linuxjavachen 栏目:数据库

什么是Redis内存数据库?


Redis,本质上上一个KEY-VALUE类型的内存数据库,整个数据库都加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因此它是纯内存操作,Redis的性能非常出色,每秒可以处理超过10万次读写操作。虽然是内存数据库,但是其数据可以持久化,而且支持丰富的数据类型。

Redis支持保存LIST列表和SET集合的数据结构,而且还支持对LIST进行各种操作,例如从LIST两端进行PUSH和POP数据,取LIST区间,排序等等。对SET支持各种集合的并集交集操作,单个value的最大限制是1GB。

Redis主要的缺点是受到物理内存限制,不能用作海量数据的高性能读写,而且它没有原生的可扩展机制,不具有扩展能力,要依赖客户端来实现分布式读写,因此其适合的应用场景主要局限在较小数据量的高性能操作和运算上。

最佳应用场景:适用于数据变化快且数据库大小可遇见(内存大小)的应用程序。

例如:股票软件、数据分析、实时数据收集、实时通讯。

Redis属于NoSQL范畴内,其含义为:Not only SQL,是不仅仅是SQL,是一项新的技术,随着WEB 2. 0的到来而得到广泛应用。理念是运用非关系的数据存储。

键值类型的数据库主要使用哈希表,这个表中有一个特定的键和一个指针指向特定数据。KEY/VALUE模型对于IT系统来说的优势在于简单、容易部署。主要特点是具有极高的并发读写性能。


什么是持久化?


Redis的所有数据都保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为半持久化);也可以把每一次数据变化都写入到磁盘(这称为全持久化)。所谓持久化就是将内存数据转换为硬盘数据,内存模型到存储模型的转换,或者说是瞬时状态与持久状态的相互转换。

Redis有两种持久化方式,默认是snapshot方式,实现方法是定时将内存的快照持久化到硬盘,这种方式的缺点是持久化之后如果出现crash则会丢失一段数据。另外一种是aof方式,在写入内存数据的同时将操作命令保存到日志文件中。


快照方式:

这种快照方式和虚拟机的快照一样,保存某一时刻的完整数据。Redis在使用这种方式做持久化的时候,定期(默认5分钟)会先写入到一个临时文件,写入完成后,会用这个文件去替换上次的旧的文件。这种方式的好处是,任何一次的快照文件都是完整可用的。但是缺点是,它每隔一段时间(默认最快1分钟,最慢15分钟)做一次,所以会存在一段时间的数据丢失。


AOF方式:

这种方式就是把对Redis内存数据的的写指令记录下来,这些指令会被记录在AOF文件的末尾,然后每秒做一次fsync操作(默认每秒一次),把指令在后台在执行一次执行过程其实就是修改磁盘上的数据库内容。所以如果出现故障也只丢失1秒的数据。

上面这种方式就很类似于传统数据库服务器的事务日志。

如果遇到在追加日志的时候遇到意外,可以使用redis-check-aof工具进行日志修复。

因为采用了追加方式,所以AOF会越来越大(这一点又和传统数据库不一样,传统数据库事务日志文件都比较小),因此redis有另外一个机制就是AOF文件重写,当AOF文件达到一个设定的阈值后,会自动启动AOF文件压缩,只保留可以恢复数据的最小指令集。

通过上面的对AOF的描述,可以看到AOF是一个面向过程的,而RDB是面向对象的。

AOF方式的有点:

  • 丢失数据最小

AOF方式的缺点:

  • 同等数据量,AOF文件比RDB文件体积大

  • AOF恢复速度比RDB方式慢


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI