Redis基础之温故

在日常开发中,必然离不开redis,下面对redis的基础温故一下,看看能否知新?
1、what
在这里插入图片描述
redis是一种基于键值对(key-value)的NoSQL数据库。
redis中的value支持string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)等多种数据结构,因此可以满足很多的应用场景。
redis会将所有数据都存放在内存中,因此读写性能非常优秀。
redis可以将内存数据利用快照和日志的方式保存到硬盘上,因此发生类似断电或机器故障时,内存中的数据不会“丢失”。
2、what can i do

  • 缓存
    基本所有的web应用都会使用redis作为缓存来降低数据库压力,提供响应速度。
  • 计数器
    redis天然支持计数功能,而且计数性能非常好,可以用来记录浏览量、点赞量。
  • 排行榜
    redis提供了列表和有序集合数据结构,可以很方便的构建各种排行榜。
  • 社交网络
    可以用来赞/踩、粉丝、推送、下拉刷新。
  • 消息队列
    redis提供了发布订阅功能和堵塞队列功能,可以满足一般消息队列功能。
  • 分布式锁
    可以用来实现分布式锁。
    在web应用中,通常会用来缓存token令牌、字典数据,也会使用其分布式锁。

3、五种基本数据结构
在这里插入图片描述

  • string
    字符串是最基础的数据结构,字符串类型的值实际可以是字符串、数字,甚至是二进制(图片),但是值最大不能超过512MB。
  • hash
    哈希类型的值其本身又是一个键值对结构。
  • list
    列表类型是用来存储多个有序的字符串,列表是一种比较灵活的数据结构,可以充当栈和队列的角色。
  • set
    集合类型是用来保存多个字符串,但和列表类型不一样的是,集合中不允许有重复元素,并且集合中的元素的无序的。
  • sorted set
    有序集合中的元素可以排序,但和列表使用索引下标作为排序依据不同的是,它给每个元素设置一个权重作为排序的依据。

4、redis为什么快
单机的redis可以支撑每秒十万次的并发,相对于mysql来说,性能是mysql的几十倍。redis快是因为:完全基于内存操作;使用单线程,避免线程切换和竟态产生的消耗。基于非堵塞的IO多路复用机制;
5、redis持久化方式
redis持久化方式分为RDB和AOF两种。

  • RDB
    RDB持久化是把当前进程数据生成快照保存到硬盘的过程,触发RDB持久化过程分为手动触发和自动触发。RDB文件是一个压缩的二进制文件,通过它可以还原某个时刻数据库的状态。
    手动触发分别对应save和bgsave命令:
    在这里插入图片描述
    save命令会堵塞当前进程,直到RDB过程完成为止,对应内存比较大的实例会造成长时间堵塞,线上环境不建议使用。
    bgsave命令会执行fork操作创建子进程,RDB持久化过程由子进程负责,完成后自动结束,堵塞只发生在fork阶段,时间短。
    自动触发RDB持久化:
    使用save相关配置,如‘save m n’,指m秒内数据集进行n次修改时,自动触发bgsave;
    如果从节点执行全量复制操作,主节点自动执行bgsave生成RDB文件并发送给从节点;
    执行debug reload命令重新加载redis时,也会自动触发save操作。
    默认执行shutdown命令时,若干没有开启AOF持久化功能则自动触发bgsave操作。
  • AOF
    AOF持久化以独立日志的方式记录每次写命令,重启时再重新执行AOF文件中的命令以达到恢复数据的目的。AOF的主要作用是解决了数据持久化实时性,目前已经是redis持久化的主流方式。
    AOF的工作流程操作:命令写入(append)、文件同步(sync)、文件重写(rewrite)、重启加载(load)。
  • RDB和AOF的优缺点
    RDB优点:只有一个紧凑的二进制文件dump.rdb,非常适合备份,全量复制的场景;容灾性好、恢复速度快;
    RDB缺点:实时性低,间隔一段时间进行持久化,没法做到实时/秒级持久化;存在兼容问题;
    AOF优点:实时性好,aof可以配置appendfsync属性,有always,每进行一次命令操作就记录到aof文件中一次;通过 append 模式写文件,即使中途服务器宕机,可以通过 redis-check-aof 工具解决数据一致性问题;
    AOF缺点:AOF文件比RDB文件大,且恢复速度慢;数据集大时,比RDB启动效率低;

如果可以接受数分钟内的数据丢失,可以只使用RDB方式,一般来说,可以同时使用RDB和AOF。

6、redis数据恢复
当redis发生故障,可以从RDB或AOF中恢复数据。恢复过程很简单,把RDB或AOF文件拷贝到redis的数据目录下,若使用AOF恢复,配置文件开启AOF,然后启动redis-server即可。
redis启动时加载数据的流程:

  • AOF持久化开启且存在AOF文件时,优先加载AOF文件;
  • AOF持久化关闭且不存在AOF文件时,加载RDB文件;
  • 加载AOF/RDB文件成功后,redis启动成功;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值