rdb

redis 持久化

陌路散爱 提交于 2019-11-30 17:58:53
介绍 首先,我们应该明确持久化的数据有什么用,答案是用于重启后的数据恢复。 Redis是一个内存数据库,无论是RDB还是AOF,都只是其保证数据恢复的措施。 所以Redis在利用RDB和AOF进行恢复的时候,都会读取RDB或AOF文件,重新加载到内存中。 Redis持久化的方式 RDB AOF RDB RDB就是Snapshot快照存储,是默认的持久化方式。 可理解为半持久化模式,即按照一定的策略周期性的将数据保存到磁盘。 对应产生的数据文件为dump.rdb,通过配置文件中的save参数来定义快照的周期。 下面是默认的快照设置: save 900 1 #当有一条Keys数据被改变时,900秒刷新到Disk一次 save 300 10 #当有10条Keys数据被改变时,300秒刷新到Disk一次 save 60 10000#当有10000条Keys数据被改变时,60秒刷新到Disk一次 Redis的RDB文件不会坏掉,因为其写操作是在一个新进程中进行的。 当生成一个新的RDB文件时,Redis生成的子进程会先将数据写到一个临时文件中,然后通过原子性rename系统调用将临时文件重命名为RDB文件。 这样在任何时候出现故障,Redis的RDB文件都总是可用的。 同时,Redis的RDB文件也是Redis主从同步内部实现中的一环。 第一次Slave向Master同步的实现是: *

redis 基础(一)

落爺英雄遲暮 提交于 2019-11-30 15:47:57
Redis 的特点 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。 Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 Redis支持数据的备份,即master-slave模式的数据备份。 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。 高可用和分布式:哨兵机制实现高可用,保证redis节点故障发现和自动转移 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。 Redis 的五种数据类型 string string 数据类型是最常用、简单的key-value类型,普通的key/value 存储都可以归为此类。value不仅可以是字符串,也可以是数字,图片(base64),对象(序列化); 使用场景 : 做缓存数据的功能 spring-boot-starter-data-redis 存储 session 信息 spring-session-data-redis 做分布式锁

常见NoSQL的对比及使用场景(Redis,memcached,mongodb)

╄→гoц情女王★ 提交于 2019-11-30 10:39:12
1. NoSQL NoSQL( Not Only SQL ),泛指非关系型的数据库(mysql、oracle、sqlserver都是关系型数据库)。 1.1 NoSQL特点 数据之间无关系,随意扩展 数据存储简单,可以存在内存中,读写速度快 不需要建表、字段。自定义格式 1.2 NoSQL数据库的分类 分类 Examples 举例 典型应用场景 数据模型 优点 缺点 键值( key-value ) Tokyo Cabinet/Tyrant, Redis , Voldemort, Oracle BDB, memcache 内容缓存,主要用于处理大量数据的高访问负载 ,也用于一些日志系统等等。 Key 指向 Value 的键值对,通常用hash table来实现 查找速度快 数据无结构化,通常只被当作字符串或者二进制数据 列存储数据库 Cassandra, HBase , Riak 分布式的文件系统 以列簇式存储,将同一列数据存在一起 查找速度快,可扩展性强,更容易进行分布式扩展 功能相对局限 文档型数据库 CouchDB, MongoDb Web应用(与Key-Value类似,Value是结构化的,不同的是数据库能够了解Value的内容) Key-Value对应的键值对,Value为结构化数据 数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构 查询性能不高

Redis主从复制

早过忘川 提交于 2019-11-30 07:05:57
 这节介绍Redis的主从复制过程,包括建立和复制。 1.复制的建立 1.1 SLAVEOF命令  Redis支持主从模式以提供读写分离,可以通过在从服务器的客户端上执行如下命令以连接主服务器: SLAVEOF IP PORT 或者在配置文件中配置SLAVEOF选项。 1.2 建立过程  SLAVEOF命令包括以下几个步骤: 从服务设置主服务器的地址和端口,从服务器会保存客户端上送的地址和端口。 从服务器同主服务器建立套接字连接。 从服务器向主服务器发送PING命令,通过判断响应是否为PONG或者有没超时,以检查套接字连接是否正常和主服务器能否正常处理命令请求。 身份验证。主服务器的requirepass选项和从服务器的masterauth选项用于身份验证,必须同时设置或者同时去除,才能让身份验证通过(或者不进行身份证验证)。 发送端口信息。  从服务器通过 REPLCONF listening-port 从服务器端口 命令向主服务器发送自己的监听端口号。主服务器收到命令后会将信息进行存储,用于后续INFO replication命令的输出。 执行同步。  从服务器向主服务器发送同步命令,复制主服务器上的数据使之保持一致。 命令传播。  同步完成后,主服务器会一直将自己执行的写命令发送给从服务器以保持同步。在这个过程,从节点会以每秒一次的频率,向主节点发起心跳检测,以保证连接的正常

Redis持久化

走远了吗. 提交于 2019-11-30 05:55:47
 这节介绍Redis的持久化,包括RDB和AOF两种方式。 1.RDB持久化  Redis能够将内存中的数据持久化到RDB文件中,避免数据丢失。RDB文件的格式如下示:  第一部分是开头的5个字节,值为REDIS,第二部分是长度为4个字节的版本号,值为一个字符串表示的整形。database部分包含零个或任意多个数据库,以及各个数据库中的键值对数据,database的结构如下示:  EOF为1字节的结束符号,check_sum为8字节长的校验和,这个校验和是通过前面4个部分计算出来的。  可以使用SAVE或者BGSAVE命令生成RDB文件。SAVE命令会阻塞Redis服务器进程,直到RDB文件创建完毕为止,在服务器进程阻塞期间,服务器不能处理任何命令请求。BGSAVE命令则会派生出一个子进程,然后由子进程负责创建RDB文件,父进程继续处理命令请求。  BGSAVE除了可以通过命令来手动执行外,还可以通过配置项来定期执行,该功能可以将某个时间点上的数据库状态保存到一个RDB文件中。配置格式为: save N M  表示服务器在N秒内对数据进行了至少M次修改。该配置可以有多个,只要满足其中一个条件就会触发BGSAVE。当BGSAVE命令执行时,父进程会fork一个子进程,子进程会将当前内存中的数据写到磁盘上的一个临时文件。当临时文件写完后会将原来的RDB文件替换掉,这样的好处是可以使用

03、redis replication以及master持久化对主从架构的安全意义

旧巷老猫 提交于 2019-11-30 04:42:25
1、图解redis replication基本原理 2、redis replication的核心机制 3、master持久化对于主从架构的安全保障的意义 redis replication -> 主从架构 -> 读写分离 -> 水平扩容支撑读高并发 redis replication的最最基本的原理,铺垫 ------------------------------------------------------------------------ 1、图解redis replication基本原理 ------------------------------------------------------------------------ 2、redis replication的核心机制 (1)redis采用异步方式复制数据到slave节点,不过redis 2.8开始,slave node会周期性地确认自己每次复制的数据量 (2)一个master node是可以配置多个slave node的 (3)slave node也可以连接其他的slave node (4)slave node做复制的时候,是不会block master node的正常工作的 (5)slave node在做复制的时候,也不会block对自己的查询操作,它会用旧的数据集来提供服务; 但是复制完成的时候

面试宝典系列-读《深入学习Redis(3):主从复制》概要

一个人想着一个人 提交于 2019-11-30 04:41:40
原文连接: 深入学习Redis(3):主从复制 默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。 主从复制的作用主要包括: 数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。 故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。 负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。 高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础。 主从复制的开启,完全是在从节点发起的;不需要我们在主节点做任何事情。 主从复制过程大体可以分为3个阶段:连接建立阶段(即准备阶段)、数据同步阶段、命令传播阶段; 1、 连接建立阶段 步骤1:保存主节点信息: masterhost和masterport。slaveof是异步命令,从节点完成主节点ip和port的保存后,向发送slaveof命令的客户端直接返回OK,实际的复制操作在这之后才开始进行。 步骤2:建立socket连接:

redis 复制笔记 - 2019.09

牧云@^-^@ 提交于 2019-11-30 03:26:44
redisClient 中有输入输出缓冲区 输入缓冲区:命令处理器将用户输入的命令写入客户端输入缓冲区,该缓冲区可动态扩展,但最大不能超过 1G ,否则服务器将关闭客户端; 输出缓冲区:命令执行器将命令执行生成的回复写入输出缓冲区,并关联回复响应处理器,待客户端产生可写事件时,回复响应处理器将输出缓冲区的内容发送给客户端,并清空输出缓冲区; 输入缓冲区的内容被解析后,生成命令、参数等信息,存入redisClient中的argv数组,并记录数组长度,以待后续命令检查及执行; serverCron(时间事件,默认每隔100ms执行一次): 更新服务器时间:unixtime/mstime(s/ms),默认100ms; 更新lru_time:默认10s; 更新服务器每秒执行命令数(大概值,取1ms次数乘以1000为一次样本,默认取16次样本平均值); 处理sigterm信号(不带参数的kill):redisServer.asap状态,serverCron每次执行,都将检测该标识,为1时,将关闭服务器,且关闭前将进行持久化操作; 管理客户端资源:每次serverCron都执行,释放过期客户端及清理客户端输入缓冲区; 管理数据库资源:每次都调用databaseCron,随机处理一部分数据的过期键,并在需要时,对字典(键空间)进行收宿操作; bgrewriteaof:redisServer

面试题:2018最全Redis面试题整理

牧云@^-^@ 提交于 2019-11-29 23:26:29
1、什么是Redis? Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。 Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。 Redis支持数据的备份,即master-slave模式的数据备份。 Redis 优势 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。 Redis与其他key-value存储有什么不同? Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径

mac下redis安装、设置、启动停止

心已入冬 提交于 2019-11-29 21:02:47
常用命令说明 redis服务器:redis-server redis客户端:redis-cli redis性能测试工具:redis-benchmark AOF文件修复工具:redis-check-aof RDB文件修复工具:redis-check-rd redis设置临时密码:config set requirepass 密码 redis获取临时密码:config get requirepass 启动和停止 服务端启动 默认启动 如上,在命令redis-server即启动redis服务端。且接受客户端连接 根据设置启动 在 /usr/local/redis目录下建立bin,etc,db三个目录 把/usr/local/redis/src目录下的mkreleasehdr.sh,redis-benchmark, redis-check-rdb, redis-cli, redis-server拷贝到bin目录 在etc下,新建配置redis.conf,内容如下。 /usr/local/redis下新建日志文件log-redis.log,并修改当前用户使用权限。sudo chown -R shoren /usr/local/redis/ 启动服务端:redis-server /usr/local/redis/etc/redis.conf #修改为守护模式 daemonize yes