Redis线程模型、Redis持久化、Redis事务

Redis采用单线程模型处理客户端请求,利用文件事件处理器实现高效的IO多路复用。在Redis 6.x中,引入多线程处理客户端连接和请求,以提升网络IO性能。持久化机制包括RDB和AOF,RDB在指定时间间隔生成快照,而AOF记录命令操作。Redis事务保证命令序列化执行,但不保证原子性。
摘要由CSDN通过智能技术生成

线程模型

为什么Redis是单线程?

Redis内部使用文件事件处理器(file event handler),这个处理器是单线程的,因此Reids被叫做单线程模型。

  • 在6.x之前:处理客户端的连接、请求、读写操作都是单线程执行的。
  • 在6.x之后:处理客户端的连接、请求是多线程的读写操作是单线程的,保证了Redis的线程安全

为什么在Redis6.x引入多线程

Redis的性能瓶颈在于内存网络IO,网络IO的读写在Redis执行期间占用了大部分CPU的时间,内存可以扩展,网络IO的性能提升是Redis性能提升的关键,因此采用多线程做网络请求处理。

为什么Redis作为单线程模型效率也很高?

  • 在内存中操作,读取速度快
  • 数据结构简单,以键值对存储,底层使用哈希结构,查询效率为O(1)
  • 非阻塞的IO多路复用,多路复用监控多个socket连接客户端,使用一个线程处理多种情况,避免了IO阻塞
  • 避免了线程切换带来的开销,是线程安全的

持久化

  • Redis中的数据存储在内存中,容易丢失,因此需要持久化(保存到硬盘)的方式保存数据。
  • Redis提供了RDB(生成快照)和AOF(记录每次对数据的命令操作)两种持久化机制,两种方式都可以在redis.conf中设置
  • Redis默认使用RDB方式

RDB(Reids Database)

指定时间间隔内将内存中的数据(Key-Value)生成快照存储到硬盘中。
默认文件:dump.rdb在这里插入图片描述

RDB的优点、缺点

优点

  • 适合大规模的数据恢复(存储在文件中,redis开机会还原到内存)
  • 对数据的完整性要求不高

缺点

  • 需要一定的时间间隔触发,若遇到进程退出、服务器宕机等情况,最后一次修改的数据会丢失。

自动触发快照的条件

1.redis.conf中save 满足配置 save [seconds] [changes]
  • save m秒 n个键改变,自动触发持久化,通过bgsave执行,如果设置了多个save m n,满足其中一项就会触发
    如果不需要持久化,可以注释所有save行来停用该功能
    save <seconds> <changes>

在这里插入图片描述

2. 执行 flushall 命令

用于清空redis中所有数据库(0~10号数据库),flushdb会清除redis当前所在数据库,默认0号数据库,会清空RDB文件,生成空的dump.rdb文件
在这里插入图片描述

3. 退出Redis

设置键值对后退出Redis
在这里插入图片描述
dump.rdb文件:
在这里插入图片描述

  • 备份会自动生成一个 dump.rdb
  • 下次启动Redis,会将文件中的数据还原到内存中

AOF(Append Only File)

  • 以日志形式记录redis执行过的删除、修改命令,不会记录查询命令。
  • 文件中只能追加,不能修改
  • redis启动后,会将日志中的命令从前到后执行一遍来恢复上次的数据。
  • 随着AOF文件越来越大,会定期重写AOF文件,达到压缩目的

开启AOF持久化机制
1.打开redis.conf文件

appendonly no-->appendonly yes
appendfilename "appendonly.aof"

在这里插入图片描述
2.AOF同步机制
在这里插入图片描述
3.重启Redis生效

事务

  • Redis事务就是一组命令的集合,一个事务中的所有命令都会被序列化
  • 不保证原子性——一个事务中的几个命令,只有发生错误的命令不执行,其他命令执行。(数据库原子性是事务中所有语句都执行或都不执行)
  • Redis事务中没有隔离级别,可以隔离其他客户端,将一个事务中的命令执行完后,再让其他客户端中的命令执行,不会发生交替执行
  • 事务的命令不会直接去执行,执行exec(execute)命令时才执行事务中的命令

redis 的事务

开启事务(multi) 
命令入队(.....) 
执行事务(exec) 
放弃事务(discard)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值