美文网首页
redis学习笔记

redis学习笔记

作者: 彦彦一一 | 来源:发表于2019-01-06 17:21 被阅读0次

redis作为这几年非常有名的非关系型数据库,前年的时候就被我听说了。公司也一直在用,可是忙碌于业务代码的我基本没有啥涉猎,也就一直搁置。最近公司tair切换redis,有技术大佬进行培训,让我了解了一些。以下正文部分。

首先先扔上来四个我到现在也回答的不太好的问题

1: 为什么要用redis?

2: 为什么redis这么快?

3: redis底层数据结构有哪些?

4: redis 怎么做到持久化?

好了。我们先从数据结构说起。

Redis底层数据结构有以下几种:简单动态字符串、链表、字典、跳跃表、整数集合、压缩列表、快速列表。

1、简单动态字符串。

2.链表

3.字典哈希表

持久化方式:RDB持久化,AOF持久化。

RDB

RDB文件:

redis数据库的快照文件,就是将某一瞬间数据中所有数据以二进制保存到磁盘里,当redis发生宕机重启时,能重新加载rdb文件中的数据。

生成RDB文件命令:

SAVE : 服务器执行SAVE命令时,服务器会发生阻塞,停止对外提供服务

BGSAVE: 服务器执行BGSAVE命令时,会fork一个子进程来执行 save命令,调用save方法,此时服务器不会发生阻塞。处理客户端正常的命令。

自动生成rdb文件 (redis.conf配置):

save 900 1    --- 900s内,数据库至少有1次修改

save 300 10 ----300s内,数据库至少有10次修改

save 60 10000 ----60s内,数据库至少有10000次修改

redis服务器会将上述配置保存在 redisServer 结构中的saveparam属性。

redisServer维护两个属性:

1:ditry计数器: 上一次rdb后,服务器对数据库状态修

2: lastsave: unix时间戳,上次rdb时间。

redis服务器serverCron()函数默认每100ms执行一次,函数

会检测是否满足上面配置的rbd保存条件,如果满足则执行 BGSAVE

AOF

将对数据库的写命令以文件追加的方式写入文件,redis启动载入AOF文件时,将命令重新执行一次,来实现数据库的持久化机制,

AOF开启配置(redis.conf):

appendonly yes            ----- 开启aof

appendfilename "appendonly.aof"  ----aof文件名

appendfsync everysec(默认)/always/no  ---- 将缓存区同步到磁盘文件的频率。

AOF三步走:

1)命令追加  将命令写入redisServer中的aof_buf缓存区。

2)文件写入    在事件循环后,会调用flushAppendOnliyFile函数考虑是否要将aof_buf缓存区的内容写入aof文件。

3)文件同步

AOF重写:

随着服务器运行时间进行,aof文件追加的方式,势必导致aof文件越来越大。为了解决

aof文件膨胀的问题,redis服务器创建一个新的aof文件来代替现有的aof文件。

AOF重写实现:

fock一个子进程,遍历数据库中所有的key-value,然后将数据简化成写入命令,然后再将命令写入一个新的aof文件,再将现有的aof文件,替换成新生成的aof文件。

AOF重写期间,如何保证数据一致性以及服务不间断:

继续提供服务,开启一个AOF重写缓存区,客户端命令同时写入AOF缓存区和AOF重写缓存区。

重新工作完后后,子进程向父进程发送一个信号,父进程会将AOF重写缓存区的所有内容写入新的AOF文件,然后再对新的AOF文件进行改名,原子的覆盖旧的AOF文件。

当然redis更重要的是以下几个部分。学习了再来补充。

1: 主从复制

2: 哨兵机制

3: 集群

相关文章

  • 【Redis】Redis学习笔记(五)jedis(JedisCl

    redis系列文章目录 redis学习笔记(一)redis3.2.5集群安装与测试 redis学习笔记(二)Jed...

  • Redis学习笔记:事务

    Redis学习笔记:事务 原文链接:Redis学习笔记:事务 一、事务的描述 和MySQL一样,Redis中也有事...

  • Redis 参数

    Redis Redis 学习笔记 II 常见参数配置

  • 2018-11-12

    Redis学习笔记 Redis在在线测试 Redis官网 REmote DIctionary Server(Red...

  • Redis 初识

    初识 Redis 《 Redis 开发与运维》的学习笔记,希望大家多多指导。 什么是 Redis Redis 的全...

  • Redis—Redis入门安装及基础数据的知识

    Redis学习笔记所有文章:https://www.jianshu.com/nb/33547142 Redis安装...

  • 数据库Redis在Windows上的使用教程

    Redis学习笔记----Redis在windows上的安装配置和使用 Redis简介 redis是一个key-v...

  • Redis 学习笔记

    Redis 学习笔记 原文:硬核!16000 字 Redis 面试知识点总结,建议收藏! Redis 基础知识 R...

  • Redis 数据类型

    Redis Redis 学习笔记 II Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、...

  • Redis 安装

    Redis Redis 学习笔记 I Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可...

网友评论

      本文标题:redis学习笔记

      本文链接:https://www.haomeiwen.com/subject/nswsrqtx.html