数据持久化

Redis(1)

主宰稳场 提交于 2020-01-07 12:39:19
目录 Redis 1、基本概念 基本概念 面试点 memcache&redis 2、基本操作 安装&启动&基本配置 安全配置 在线配置 3、持久化 RDB AOF 区别 我叫张贺,贪财好色。一名合格的LINUX运维工程师,专注于LINUX的学习和研究,曾负责某中型企业的网站运维工作,爱好佛学和跑步。 个人博客: 传送阵 笔者微信: zhanghe15069028807 ,非诚勿扰。 Redis 1、基本概念 基本概念 Redis是一款用于缓存的nosql数据库,用C语言写的,性能放在第一位,稳定安全放在第二位,这是与关系型数据库有区别的地方。与redis同类型的产品有memcache,这两个产品各有优缺点,我们后面会有分析。 Redis的运行比较依赖内存,通常我们在运行Redis的服务器上安装大内存,而且是集群的方式运行,一台服务器可以运行多个Redis实例,配置起来也比较简单。 下面我们使用Redis的3.2.12版本来演示,官网地址:www.redis.io 具体下载地址 下载地址 。 面试点 持久化 数据类型 缓存穿透 memcache&redis memcache是一款比较极端的软件,追求极速,安全性和扩展性都不是太好,而且只支持键值对。 redis支持多种数据类型,持久化,自带高可用。 tair是二次开发的memcache,淘宝的缓存应用,单机跑没有优势,分布式性能非常好

Redis 中的数据持久化策略(RDB)

删除回忆录丶 提交于 2020-01-07 08:52:35
Redis 是一个内存数据库,所有的数据都直接保存在内存中,那么,一旦 Redis 进程异常退出,或服务器本身异常宕机,我们存储在 Redis 中的数据就凭空消失,再也找不到了。 Redis 作为一个优秀的数据中间件,必定是拥有自己的持久化数据备份机制的,redis 中主要有两种持久化策略,用于将存储在内存中的数据备份到磁盘上,并且在服务器重启时进行备份文件重载。 RDB 和 AOF 是 Redis 内部的两种数据持久化策略,这是两种不同的持久化策略,一种是基于内存快照,一种是基于操作日志,那么本篇就先来讲讲 RDB 这种基于内存快照的持久化策略。 一、什么是 RDB 持久化策略 RDB(redis database),快照持久化策略。RDB 是 redis 默认的持久化策略,你可以打开 redis.conf,默认会看到这三条配置。 save 900 1 900秒内执行一次set操作 则持久化1次 save 300 10 300秒内执行10次set操作,则持久化1次 save 60 10000 60秒内执行10000次set操作,则持久化1次 RDB 又分为两种,一种是同步的,调用 save 命令即可触发 redis 进行 RDB 文件生成备份,但是这是一个同步命令,在备份完成之前,redis 服务器不响应客户端任何请求。另一种是异步的,调用 bgsave 命令,redis 服务器

Redis 高可用之\"持久化\"

ⅰ亾dé卋堺 提交于 2020-01-07 08:46:30
Redis高可用概述 在Redis中,实现高可用的技术主要包括:持久化、复制(读写分离)、哨兵、集群。 持久化: 持久化是最简单的高可用方法(有时甚至不被归为高可用手段),主要作用是数据备份,即将数据存储在硬盘,保证数据不会因进程退出而丢失。 复制: 复制是高可用Redis的基础,哨兵和集群都是在复制的基础上实现高可用的。复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复。 缺陷:故障恢复无法自动化,写操作无法负载均衡,存储能力受到单机的限制。 哨兵: 在复制的基础上,哨兵实现了自动化的故障恢复。 缺陷:写操作无法负载均衡;存储能力收到单机限制。 集群: 通过集群,Redis解决了操作无法负载均衡,以及存储能力收到单机限制的问题,实现了较为完善的高可用解决方案。 Redis持久化概述 持久化的功能:Redis 是内存数据库,数据都是存储在内存中。 Redis 的持久化分为 RDB 和 AOF 持久化: 前者是将数据保存到硬盘。 后者是将每次执行的写命令保存到硬盘。 RDB 持久化 ​ RDB持久化是将当前进程中的数据生成快照保存到硬盘中(因此也叫做快照持久化),保存的文件后缀是RDB; ​ 当Redis重新启动时,可以读取快照文件恢复数据。 触发条件 : 手动触发 自动触发 手动触发 :save命令和bgsave命令都可以生成 RDB 文件。 ​

redis基础及配置文件详解

孤街浪徒 提交于 2020-01-06 12:30:49
一、redis部署与使用 redis 基础 官网地址https://redis.io/ Redis和 Memcached 是非关系型数据库,也称为NoSQL数据库 ,MySQL 、 Mariadb 、 SQL S erver 、 PostgreSQL 、Oracle 数据库 属于关系型数据 RDBMS, Relational Database Management System redis 简介 Redis (Remote Dictionary S erver 在 2009 年 发布 开发者 Salvatore Sanfilippo 是意大利 开发者他本想为自己 的 公司开发一个用于替换 MySQL 的产品 Redis ,但是没有想到 他把 Redis 开源后大受 欢迎,短短几年, Redis 就 有了很大的用户群体,目前 国内外 使用的公司有 知乎网 、新浪微博、 GitHub 等; redis 是 一个 开源 的、 遵循 BSD 协议 的、 基于 内存 的 而且目前 比较 流行的 键值数据库 key value database是 一个非关系型数据库 redis 提供 将内存 通过 网络远程共享的一种服务 , 提供 类似功能的还 有memcache,但 相比 memcache redis 还提供了 易 扩展 、高性能 、 具备 数据持久性 等功能。 Redis 在高并发

docker容器实现数据持久化的两种方式及其区别

自闭症网瘾萝莉.ら 提交于 2020-01-02 19:17:09
前言 这篇博文是我对docker实现数据持久化几种方式的特征进行一个总结。 在docker中,它的存储文件系统是在dockerhost上原有的xfs或ext4架设了一层文件系统:overlay2(将此行重点标注的原因就是我在面试中被问到过:docker使用的是什么文件系统?) ,通过docker info命令可以查看出主机上docker相关的信息,包括支持的网络类型、系统版本、内核版本、docker主机的cpu、内存等信息。如下: 在docker中实现数据持久化有两种方式:Bind mount和Docker Manager Volume。 Bind mount和Docker Manager Volume的区别: Bind mount数据持久化的方式,如果是挂载本地的一个目录,则容器内对应的目录下的内容会被本地的目录覆盖掉,而Docker Manager Volume这种方式则不会,不管哪种方式的持久化,在容器被销毁后,本地的数据都不会丢失。 使用“-v”选项挂载时,Bind mount明确指定了要挂载docker host本地的某个目录到容器中,而Docker Manager Volume则只指定了要对容器内的某个目录进行挂载,而挂载的是docker host本地的哪个目录,则是由docker来管理的。 数据持久化的特点: Data Volume是目录或文件,不能是没有格式化的磁盘

IOS数据持久化之归档NSKeyedArchiver

微笑、不失礼 提交于 2020-01-01 21:55:35
IOS数据持久化的方式分为三种: 属性列表 (自定义的Property List 、NSUserDefaults) 归档 (NSKeyedArchiver) 数据库 (SQLite、Core Data、第三方类库等)   下面主要来介绍一个 归档NSKeyedArchiver 。    归档(又名序列化),把对象转为字节码,以文件的形式存储到磁盘上;程序运行过程中或者当再次重写打开程序的时候,可以通过解归档(反序列化)还原这些对象。    归档方式: 对Foundation框架中对象进行归档 对自定义的内容进行归档 对自定义的对象进行归档 <一> 对Foundation框架中对象进行归档 //获得文件路径 NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; NSString *filePath = [documentPath stringByAppendingPathComponent:@"file.archiver"]; //归档(序列化) NSArray *archiveAry = @[@"jereh",@"ios"]; if ([NSKeyedArchiver

redis基础

笑着哭i 提交于 2020-01-01 14:31:36
文章目录 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与Memcached的区别

ぃ、小莉子 提交于 2020-01-01 05:11:48
观点一: 1、Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等; 2、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储; 3、 虚拟内存 --Redis当物理内存用完时,可以将一些很久没用到的value 交换到磁盘; 4、过期策略--memcache在set时就指定,例如set key1 0 0 8,即永不过期。Redis可以通过例如expire 设定,例如expire name 10; 5、分布式--设定memcache集群,利用magent做一主多从;redis可以做一主多从。都可以一主一从; 6、存储数据安全--memcache挂掉后,数据没了;redis可以定期保存到磁盘(持久化); 7、 灾难恢复 --memcache挂掉后,数据不可恢复; redis数据丢失后可以通过aof恢复; 8、Redis支持数据的备份,即master-slave模式的数据备份; 9、mongodb和memcached不是一个范畴内的东西。mongodb是文档型的非关系型数据库,其优势在于查询功能比较强大,能存储海量数据。mongodb和memcached不存在谁替换谁的问题。 观点二: Redis与Memcached的区别

redis中数据的持久化

泄露秘密 提交于 2019-12-30 18:42:03
redis中数据的持久化分为两种:1.rdb,2.aof 1.rdb   在指定的时间内将内存中的数据集快照写入磁盘,恢复时,直接将快照文件读取到内存中。   rdb保存的是dump.rdb文件(默认)。   在redis配置文件中可以设置保存的文件名称,以及每次更新文件的间隔时间 如果在开发过程中遇到非常重要的数据想要立刻快照到文件中,则使用save命令(同步,其他先阻塞)或者bgsave命令(异步)即可 2.aof   以日志的形式来记录每个操作,将redis执行过的所有指令记录下来,aof默认保存的时候appendonly.aof文件,要开启aof则需要设置redis.conf配置文件中的appendonly 为yes   如果aof文件有损坏,可以使用redis-check-aof --fix进行修复   aof开启后,当redis重启时会优先执行aof文件来恢复数据  AOF采用文件追加方式,文件会越来越大为避免出现此种情况,新增了重写机制,当AOF文件的大小超过所设定的阈值时,Redis就会启动AOF文件的内容压缩,只保留可以恢复数据的最小指令集.可以使用命令bgrewriteaof AOF文件持续增长而过大时,会fork出一条新进程来将文件重写(也是先写临时文件最后再rename), 遍历新进程的内存中数据,每条记录有一条的Set语句。重写aof文件的操作

Redis学习笔记(5)—— Redis的持久化方案&Redis的集群搭建

喜夏-厌秋 提交于 2019-12-30 18:41:50
一、Redis的持久化方案   Redis的高性能是由于其将所有数据都存储在了 内存 中,为了使Redis在重启之后仍能保证数据不丢失,需要将数据从内存中同步到硬盘中,这一过程就是持久化。   Redis支持两种方式的持久化,一种是RDB方式,一种是AOF方式。可以单独使用其中一种或将二者结合使用。 【RDB方式】   快照形式,定期把内存中当前时刻的数据保存到磁盘。Redis默认支持的持久化方案。   在redis.conf配置文件中配置:      Redis启动后会读取RDB快照文件,将数据从硬盘载入到内存。根据数据量大小与结构和服务器性能不同,这个时间也不同。通常将记录一千万个字符串类型键、大小为1GB的快照文件载入到内存中需要花费20~30秒钟。   问题总结:   通过RDB方式实现持久化,一旦Redis异常退出,就会丢失最后一次快照以后更改的所有数据。这就需要开发者根据具体的应用场合,通过组合设置自动快照条件的方式来将可能发生的数据损失控制在能够接受的范围。如果数据很重要以至于无法承受任何损失,则可以考虑使用AOF方式进行持久化。 【AOF方式】   把所有对redis数据库操作的命令,增删改操作的命令。保存到文件中。数据库恢复时把所有的命令执行一遍即可。   默认情况下Redis没有开启AOF(append only file)方式的持久化