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

news/2024/7/4 2:58:42

什么是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方式慢




      本文转自linuxjavachen  51CTO博客,原文链接:http://blog.51cto.com/littledevil/1790864,如需转载请自行联系原作者








http://www.niftyadmin.cn/n/1904173.html

相关文章

在这家不加班的 IT 公司里,我们是这样加班的

ThoughtWorks 招聘,文末有福利再过两个月,在 ThoughtWorks 也有四年了~~~。没有 BAT 的待遇,没有百月的年终奖,当然也没有 996。待了近四年,只有不加班是那么的吸引人。在这些日子里,没有遇上加班&#xff…

4 sum

2019独角兽企业重金招聘Python工程师标准>>> FROM: https://leetcode.com/problems/4sum/ Given an array S of n integers, are there elements a, b, c, and d in S such that a b c d target? Find all unique quadruplets in the array which g…

2017-2018-1 20155225 《信息安全系统设计基础》第九周学习总结

2017-2018-1 20155225 《信息安全系统设计基础》第九周学习总结 教材学习内容总结 6.1存储技术 随机访问存储器(RAM)静态RAM(SRAM):SRAM比DRAM快,作为高速缓存存储器。具有双稳定状态,只要有电,它就会永远地保存它的值…

为什么《自己动手设计物联网》 和《全栈应用开发》一样也打了 4.9 折??

今天,又打开了一次亚马逊,想看看评论里有没有什么好的反馈。然后:这不是和之前的《全栈应用开发》一样吗?为什么《自己动手设计物联网》 和《全栈应用开发》一样也打了 4.9 折??为什么《自己动手设计物联网…

http://blog.sina.com.cn/s/blog_546abd9f0101c6au.html

http://blog.sina.com.cn/s/blog_546abd9f0101c6au.html

asp.net MVC2 初探十

还是讲一些项目中你可能遇到的问题,有的时候人总是不听话,想改变原有的东西。今天我就教你怎么样颠覆MVC传统的文件夹结构,即个性化你的目录。ok,开始。先看看我设计的目录我的controller下有这么多文件夹。再看看我的views看到了…

Serverless 架构应用开发指南:创建自己的 Serverless 短链服务

在想用 Serverless 可以做点什么简单的在线应用后,我想到了一个是在线短链生成服务。最后的结果见:http://x.pho.im/,一个非常简单的在线应用。 这里的代码基于:https://github.com/vannio/serverless-shrink。 因为上面的代码中…

Oracle数据库备份与恢复 - 增量备份

RMAN一个强大的功能是支持增量备份,增量备份中心思想就是减少备份的数据量,我们不需要在从头开始备份了,只需要备份自上次已备份之后的数据块即可。 关于Incremental增量备份级别: Oracle 9i 共有五种级别 0 1 2 3 4,0…