数据持久化

【 Redis 详解 】------ 介绍、配置 、优化

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-10 18:40:33
文章目录 一、了解关系数据库(SQL)和非关系数据库(NoSQL): (1)关系型数据库(SQL): (2)非关系型数据库(NoSQL): (3)非关系型数据库产生的背景: 二、Redis 简介: 三、安装部署 Redis: (1)安装 redis: (2)redis-cli 远程连接: 四、Redis 配置文件: 五、Redis 数据库常用命令: (一)常用命令: (二)Redis 多数据操作: 六、Redis 持久化: (1)持久化概述: (2)持久化分类: (3)RDB持久化: (4)AOF 持久化: 七、Redis 性能管理: (1)内存碎片率: (2)内存使用率: (3)回收 Key: 一、了解关系数据库(SQL)和非关系数据库(NoSQL): (1)关系型数据库(SQL): 1、一个结构化的数据库,创建在关系模型基础上,一般面向于记录; 2、包括 Oracle 、Mysql 、 SQL Server 、Microsoft Access 、DB2 等。 优点: 1、易于维护:都是使用表结构,格式一致; 2、使用方便:SQL语言通用,可用于复杂查询; 3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。 缺点: 1、读写性能比较差,尤其是海量数据的高效率读写; 2、固定的表结构,灵活度稍欠; 3、对于高并发读写需求,传统关系型数据库来说,硬盘I

Redis-5.0.7配置与优化(最新版实战!!!)

坚强是说给别人听的谎言 提交于 2019-12-10 18:32:54
Redis概述 Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。 Redis优点 具有极高的数据读写速 支持丰富的数据类型 支持数据的持久化 原子性 支持数据备份 Redis配置文件(/etc/redis/6379.conf)bind: 监听的主机地址 port: 端口 daemonize yes: 启用守护进程 pidfile: 指定PID文件 loglevel notice: 日志级别 logfile: 指定日志文件 Redis安装部署 #安装编译环境 [root@localhost ~]# yum install gcc gcc-c++ make -y #远程挂载源码包 [root@localhost ~]# mount.cifs //192.168.142.1/redis /mnt Password for root@//192.168.142.1/redis: #解压源码包 [root@localhost ~]# cd /mnt [root@localhost mnt]# tar

rabbitMQ消息队列

放肆的年华 提交于 2019-12-10 18:02:19
一、MQ简介 在介绍RabbitMQ之前实现要介绍一下MQ,MQ是什么? MQ全称是Message Queue,可以理解为消息队列的意思,简单来说就是消息以管道的方式进行传递。 RabbitMQ是一个实现了AMQP(Advanced Message Queuing Protocol)高级消息队列协议的消息队列服务,用Erlang语言的。 二、使用场景 在我们秒杀抢购商品的时候,系统会提醒我们稍等排队中,而不是像几年前一样页面卡死或报错给用户。 像这种排队结算就用到了消息队列机制,放入通道里面一个一个结算处理,而不是某个时间断突然涌入大批量的查询新增把数据库给搞宕机,所以RabbitMQ本质上起到的作用就是削峰填谷,为业务保驾护航。 三、为什么选择RabbitMQ 现在的市面上有很多MQ可以选择,比如ActiveMQ、ZeroMQ、Appche Qpid,那问题来了为什么要选择RabbitMQ? 除了Qpid,RabbitMQ是唯一一个实现了AMQP标准的消息服务器; 可靠性,RabbitMQ的持久化支持,保证了消息的稳定性; 高并发,RabbitMQ使用了Erlang开发语言,Erlang是为电话交换机开发的语言,天生自带高并发光环,和高可用特性; 集群部署简单,正是应为Erlang使得RabbitMQ集群部署变的超级简单; 社区活跃度高,根据网上资料来看,RabbitMQ也是首选

Redis持久化介绍

家住魔仙堡 提交于 2019-12-10 17:12:52
Redis是一个基于BSD开源许可的内存数据结构存储系统,由于redis具有卓越的高并发读写特性,其主要用于用作数据库、缓存和消息代理。redis具有内置的复制、lua、lru、事务和不同级别的磁盘持久性,并通过哨兵机制和集群自动分区功能提供高可用性。本文主要介绍包含RDB(Redis DataBase)持久化、AOF(Append Only File)持久化、RDB和AOF混合持久化等持久化策略。 Redis以下几种持久性选项范围: RDB持久性按指定的时间间隔执行数据集的时间点快照。 AOF持久性会记录服务器接收的每个写入操作,这些操作将在服务器启动时再次播放,以重建原始数据集。使用与Redis协议本身相同的格式记录命令,并且采用仅追加方式。当日志太大时,Redis可以在后台重写日志。 可以在同一实例中同时合并AOF和RDB。在这种情况下,当Redis重新启动时,AOF文件将用于重建原始数据集,因为它可以保证是最完整的。 如果希望只用作缓存服务器,对数据的持久性无要求,也可以完全禁用持久性。 下面着重介绍RDB和AOF持久化的特点和应用场景。 RDB持久化 RDB持久化的优点 RDB 是 Redis 默认的持久化方案。在指定的时间间隔内,写操作达到指定的次数,则会将内存中的数据写入到磁盘RDB文件中。由于RDB文件是一个非常紧凑的文件,比较容易备份

消息队列RabbitMQ入门介绍

痞子三分冷 提交于 2019-12-10 13:37:01
(一)基本概念 RabbitMQ是流行的开源消息队列系统,用erlang语言开发。我曾经对这门语言挺有兴趣,学过一段时间,后来没坚持。RabbitMQ是AMQP(高级消息队列协议)的标准实现。如果不熟悉AMQP,直接看RabbitMQ的文档会比较困难。不过它也只有几个关键概念,这里简单介绍。 RabbitMQ的结构图如下: 几个概念说明: Broker:简单来说就是消息队列服务器实体。 Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。 Queue:消息队列载体,每个消息都会被投入到一个或多个队列。 Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来。 Routing Key:路由关键字,exchange根据这个关键字进行消息投递。 vhost:虚拟主机,一个broker里可以开设多个vhost,用作不同用户的权限分离。 producer:消息生产者,就是投递消息的程序。 consumer:消息消费者,就是接受消息的程序。 channel:消息通道,在客户端的每个连接里,可建立多个channel,每个channel代表一个会话任务。 消息队列的使用过程大概如下: (1)客户端连接到消息队列服务器,打开一个channel。 (2)客户端声明一个exchange,并设置相关属性。 (3)客户端声明一个queue,并设置相关属性。 (4

面试还搞不懂redis,快看看这40道面试题(含答案和思维导图)

耗尽温柔 提交于 2019-12-10 11:45:42
Redis 面试题 1、什么是 Redis?. 2、Redis 的数据类型? 3、使用 Redis 有哪些好处? 4、Redis 相比 Memcached 有哪些优势? 5、Memcache 与 Redis 的区别都有哪些? 6、Redis 是单进程单线程的? 7、一个字符串类型的值能存储最大容量是多少? 8、Redis 的持久化机制是什么?各自的优缺点? 9、Redis 常见性能问题和解决方案: 10、redis 过期键的删除策略? 11、Redis 的回收策略(淘汰策略)? 12、为什么 edis 需要把所有数据放到内存中? 13、Redis 的同步机制了解么? 14、Pipeline 有什么好处,为什么要用 pipeline? 15、是否使用过 Redis 集群,集群的原理是什么? 16、Redis 集群方案什么情况下会导致整个集群不可用? 17、Redis 支持的 Java 客户端都有哪些?官方推荐用哪个? 18、Jedis 与 Redisson 对比有什么优缺点? 19、Redis 如何设置密码及验证密码? 20、说说 Redis 哈希槽的概念? 21、Redis 集群的主从复制模型是怎样的? 22、Redis 集群会有写操作丢失吗?为什么? 23、Redis 集群之间是如何复制的? 24、Redis 集群最大节点个数是多少? 25、Redis 集群如何选择数据库? 26

redis数据持久化方式

坚强是说给别人听的谎言 提交于 2019-12-10 09:36:24
redis数据是保持在内存中的,如果发生redis重启,保存在内存中数据便会丢失,所以需要持久化操作。 redis持久化方式有两种:RDB 和AOF RDB:快照方式 当符合一定条件时,Redis会自动将内存中所有的数据生成一份副本并存储在硬盘中,这个过程被称为“快照”。“快照”,就类似于拍照,摁下快门那一刻,所定格的照片,就称为“快照”。 Redis有4种情况会对数据进行快照: 根据配置规则进行自动快照; 用户执行SAVE或BGSAVE命令; 执行FLUSHALL命令; 执行复制(replication)时。 AOF:日志形式 通过RDB方式实现持久化,一旦Redis异常退出,就会丢失最后一次快照之后更改的所有数据。为了降低因进程中止导致的数据丢失风险,可以使用AOF方式实现数据持久化。 AOF持久化是以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,文件中 可 以看到详细的操作记录 Redis 重启的会根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。 默认情况下,Redis是没有开启AOF方式的持久化,可以通过appendonly参数启动:appendonly yes 开启AOF持久化后,每执行一条会更改Redis中数据的命令,Redis就会将该命令写入硬盘中的AOF格式的文件,即.aof格式文件存储的是一些redis指令。

Redis的持久化

和自甴很熟 提交于 2019-12-10 07:58:18
RDB(Redis DataBase) 1.RDB是什么? 在指定的时间间隔内将内存中的数据集快照写入磁盘, 也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里 Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到 一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。 整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能 如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方 式要比AOF方式更加的高效。RDB的缺点是最后一次持久化后的数据可能丢失。 RDB保存的文件叫做dump.rdb 2.相关配置文件 seconds:代表多少秒内 changes:多少次变化,即key的改变次数 redis默认的保存策略:每十五分钟修改1次 每五分钟修改10次 每一分钟修改10000次即进行一次RDB持久化 触发RDB快照的方式有命令save和bgsave save:save时只管保存,其它不管,全部阻塞 bgsave:Redis会在后台异步进行快照操作,快照同时还可以响应客户端请求。可以通过lastsave命令获取最后一次成功执行快照的时间 3.如何恢复 将文件(dump.rdb)移动到redis的安装目录下然后启动服务即可将数据恢复到内存中 4.RDB的优点和缺点 优点:适合大规模的数据恢复

redis-持久化

北慕城南 提交于 2019-12-10 03:19:04
redis 是一个键值对的内存 数据库 服务器,它将数据库状态存储在内存之中,但是如果一旦服务器出现问题意外crash或者重启那么内存中的数据库状态将全部丢失,为了解决这个问题,redis提供了持久化方案,将内存中数据库状态同步到磁盘保障数据 redis提供了两种持久化方案:rdb,aof rdb方式:将数据库状态(数据库中键值对)保存为一个经过压缩的二进制文件 aof方式:将数据库写命令保存为一个固定格式的文件 redis-rdb持久化 rdb文件创建 redis通过两个命令来用于生成rdb文件: save: save命令在生成rdb文件期间会阻塞redis主进程,直到rdb文件创建完成之前redis主进程无法处理任何客户端请求 由函数rdb.c/rdbSave函数执行、 函数rdbSave本身就会阻塞进程 bgsave: bgsave命令通过由主进程fork出一个子进程来执行生成rdb文件,生成rdb文件期间不会阻塞主进程 由函数rdb.c/rdbSave函数执行 问题:bgsave命令执行期间服务器如何处理save,bgsave,bgrewriteaof三个命令 bgsave命令执行期间 Redis 服务器拒绝执行save命令,防止主进程和子进程同时执行rdbSave函数导致资源竞争 bgsave命令执行期间Redis服务器拒绝执行bgsave命令

angular中的服务和持久化实现

时间秒杀一切 提交于 2019-12-10 03:07:19
1.创建服务: ng g service my-new-service 创建到指定目录下面 ng g service services/storage 2. app.module.ts 里面引入创建的服务 import { StorageService } from './services/storage.service'; NgModule 里面的 providers 里面依赖注入服务 import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; import { HomeComponent } from './components/home/home.component'; import { StorageService } from './services/storage.service'; @NgModule({ declarations: