首页 > 数据库 >【Redis】Redis学习笔记

【Redis】Redis学习笔记

时间:2024-10-09 18:52:31浏览次数:9  
标签:AOF 文件 -- Redis redis 笔记 学习 RDB

概况

redis == remote Dictionary Server (远程字典服务)

基于内存KV键值对内存数据库

作用:

  1. 分布式缓存,与MySQL共同配合

    1. Redis -- 内存 MySQL -- 磁盘

    2. Redis -- NoSQL MySQL -- SQL

  2. 内存存储 和 持久化(RDB+AOF)

    1. Redis支持一部将内存中的数据写入硬盘

    2. 宕机 -- 可自行恢复

  3. 高可用:单机、主从、哨兵、集群

  4. 缓存穿透、击穿、雪崩

  5. 分布式锁

  6. 队列

优势:读写速度快(秒杀系统);数据类型丰富;可持久化;支持数据备份(主从)

启动 redis-server(启动redis服务器)

6ba1a22a-fcd9-4d30-b0ff-df456a4ede23

连接 redis-client (redis客户端)

7f7356e0-90ad-4999-8684-9f27b1234963

redis-cli -a 111111 -p 6379,其中 -a == auth 授权,-p == port 端口号

helloworld

2c229b97-12cc-4eb5-b4bc-bae912e8e424

Redis十大数据类型

  1. String

  2. List

  3. Hash

  4. Set 无序无重复

  5. ZSet (Sorted Set)

  6. GeoSpatial

  7. HyperLogLog 基数统计 -- 淘宝首页点击率

  8. bitmap Redis 位图 -- 01010111 -- 打卡记录

  9. bitfiled Redis 位域 -- 多个比特位域

  10. Stream Redis 流 -- 类似于:消息中间件

报错:

f86b66a5-6c18-48a4-863f-65eb34e391eb

尝试重启 Redis

  1. 找到redis相关进程 ps -ef | grep redis
    082d971c-55fa-414f-8f26-4b872f54816f

  2. kill -9 2820

  3. 重启 redis-server 与 redis-cli
    9777dca0-6884-4f8d-a33f-91fff1f51f4a

Redis持久化

redis -- 内存数据库 -- 断电/宕机 --》 持久化

RDB: Redis Database(数据快照)

AOF: Append Only File(依次追加)

RDB

自动保存:在配置文件中设置

手动保存:bgsave 和 save

save -- 采用主进程进行数据备份,阻塞其他服务

bgsave -- background save 新建一个进行数据备份,不阻塞其他服务

优点:RDB文件适合大规模恢复;灾难恢复;提高了Redis性能

缺点:突然断电,来不及保存

检查修复rdb文件

b37f8798-1057-4054-a96b-115c6af211be

禁用快照:命令行方式 + 配置文件方式

stop-writes-on-bgsave-error: bgsave出错时是否停止写入,default: yes

rdbconpression: 存储到磁盘中的snapshot,是否进行压缩处理,default: yes

rdbchecksum: 使用CRC64算法检验,以得到最大的性能提升,default: yes

rdb-del-sync-files: 未执行持久化时,删除RDB文件,default: no

AOF -- Append Only File(依次追加)

概念:以日志的形式追加写操作,只记录 增删改 命令

在配置文件中,设置 开启 appendonly yes

AOF保存的是appendonly.aof文件

三种写回策略

  1. always:同步写回,IO操作多,资源耗费大

  2. everysec:默认,每个1s进行写入

  3. no(写入内存缓冲区,操作系统决定合适将缓冲区的内容写入磁盘)

AOF配置文件

  1. 修改为 yes
        854b2eb3-f629-43ad-b514-b911e5c18c11

  2. 保存机制(是指三种保存机制)
    f9e50b86-3e83-42ca-aee6-0676b7be417f

  3. 配置 .aof 文件名(dir + dirname)
    f1abd92f-44a9-4711-8b45-b2bdb95b9218
    127b62be-5f01-433f-ab49-8f0c9c444282

  4. redis 7 -- base; incr; manifest(清单文件) 三种AOF文件
    5960ea2b-10a5-4172-b764-c71bc54eb83e

正常恢复

异常恢复:AOF文件错误,无法连接;redis-check-aof --fix filename

b5271369-86d2-4b91-a58a-ee6f3d8669af

优点:三种写入策略(最差情况,丢失1s数据);追加日志;AOF文件可以自动重写机制(Log Rewritting);AOF文件易于理解和阅读+恢复(记录每一条操作,删除错误记录即可)

缺点:AOF文件大(记录每一条操作),同步相较于RDB慢

AOF重写机制

  1. 只保留可恢复的最小指令集

  2. 自动执行:配置文件(上次的大小1倍 && 文件大小64MB)
    a2d68b71-c80a-4d2e-a3de-b05b99e98d40

    16774e3d-7793-49dc-9e71-7683f6386831

  3. 手动执行:bgrewriteaof
    dbf13f67-29c2-44d5-9de5-7c2479131f15

RDB + AOF 混合持久化

920b9a03-719f-480a-9c55-f54e66d30648

两文件同时存在时,以AOF为准,恢复时加载AOF;若AOF不存在,则加载RDB

RDB:指定时间间隔;适用于备份数据库,快照;全量持久化

AOF:以操作记录保存到文件中;实时;增量持久化

288f641c-c4a1-405f-a990-d6cb4db60138

纯缓存模式

只进行数据缓存,而不进行持久化

禁用RDB save "";禁用AOF appendonly no;但仍可手动进行持久化存储

Redis 事务

一次操作执行一组命令,所有命令序列化(队列中),按顺序串行执行

discard, exec, multi, watch key, unwatch

  1. 正常执行:multi ...... exec

  2. 放弃执行:multi ...... discard

  3. 全部失败:exec前输入错误命令,全部失败

  4. 部分执行失败:exec后出现错误,则当前出错命令失败,其他成功

  5. Watch 监控:(乐观锁)监控数据是否被修改;被监控的 key 修改,全部执行失败

Redis 事务 VS 关系型数据库事务:

  1. 事务一致性

  2. 无回滚操作

Redis 管道

解决RTT往返时间长,造成资源消耗较大的问题

操作步骤:

  1. 将命令写入 .txt文件

  2. 执行7bec6d76-0646-4fbf-9098-29ac9d2ceded

原生批处理命令 VS pipeline

原子性 非原子性

只能执行一种命令 可以批处理

服务端自身 服务端与客户端交互

pipeline vs 事务

非原子性 原子性

多条命令以批处理方式执行 多条命令以队列方式处理

不阻塞其他命令 会阻塞其他命令

Redis 发布订阅

发布 -- publishe;订阅 -- subscribe

轻量级队列,消息中间件

Redis 复制(replica)

Redis 哨兵(sentinel)

Redis 集群(cluster)

SpringBoot 集成 Redis

总体概述

Jedis(老项目使用) -- lettuce(采用一段时间后,被springboot整合) -- RedisTemplate(常用)

集成 Jedis

集成 lettuce

集成 RedisTemplate

标签:AOF,文件,--,Redis,redis,笔记,学习,RDB
From: https://www.cnblogs.com/syr463/p/18454894

相关文章

  • redis集成到spring boot中使用
    (一)添加依赖  redis服务器在官网中公开了自己使用的协议--RESP,所以我们可以使用这个协议来访问redis服务器,但是如果我们要自己实现库,那肯定是非常麻烦的,所以我们可以使用网上的库,我们直接调用接口,不需要关注redis协议的细节,我们这里使用的是jedis<dependency> <groupId......
  • AI 学习方法与算法现状
    在人工智能(AI)的漫长历史中,我们见证了从早期的规则驱动系统到现代的机器学习模型的转变。AI的学习方法是其进步的核心,而算法现状则反映了当前技术的高度和未来的发展方向。Ⅰ.AI学习方法AI的工作原理基于深度神经网络,这是一种模仿人脑处理信息方式的计算模型。在设计AI系统时......
  • Treap学习笔记
    Treap(树堆)学习笔记(此处为带旋Treap)Treap简介Treap是一种二叉搜索树,其中,权值val满足二叉搜索树的性质,节点优先级priority满足堆的性质(作用后面会讲到)Treap适用情况因为属于二叉搜索树,所以可以维护二叉搜索树的信息,带旋Treap可以更好地控制树的深度,使得每次操作不至于被......
  • 自由学习记录(3)
    可以自己去看ugui的实现代码,如果以后有需要 CanvasGroup这个东西有点吊给Canvas里的各个面板的分组,不是多个canvas的意思添加之后,该对象的及子对象全部都会放到一个CanvasGroup,可以整体控制显隐整体控制是否可交互(所有按钮失活,这个也可以设置成等级限制的功能使用,66)......
  • DeepLearning.ai专项课程总结:深度学习入门指南
    DeepLearning.ai-SummaryDeepLearning.ai专项课程:深度学习的最佳入门之选DeepLearning.ai是由斯坦福大学教授AndrewNg在Coursera平台上推出的一个深度学习专项课程。作为人工智能和机器学习领域的顶级专家,AndrewNg精心设计了这一系列课程,旨在帮助学习者系统地掌握深度学习......
  • Coursera:在线学习的革命性平台
    Coursera:开启全球学习新纪元在这个数字化时代,教育的形式正在发生翻天覆地的变化。Coursera作为在线教育领域的佼佼者,为全球学习者打开了一扇通往知识的大门。本文将全面介绍Coursera平台,探讨其如何revolutionize了传统教育模式,以及它为学习者带来的无限可能。Coursera的诞生与发......
  • Java中泛型的学习
    泛型目录泛型什么是泛型泛型方法泛型的作用泛型的特性泛型的使用普通泛型静态泛型方法什么是泛型Java泛型(generics)是JDK5中引入的一个新特性,泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类......
  • 深度学习对对联:探索seq2seq-couplet项目的智能对联生成
    引言对联作为中国传统文化的瑰宝,一直以其对仗工整、意境深远而备受推崇。随着人工智能技术的发展,利用深度学习来生成对联成为了一个引人注目的研究方向。本文将深入探讨seq2seq-couplet项目,这是一个利用序列到序列(seq2seq)模型来实现智能对联生成的开源项目。seq2seq-couple......
  • TensorFlow Serving: 高性能机器学习模型部署利器
    servingTensorFlowServing简介TensorFlowServing是一个专为生产环境设计的灵活、高性能机器学习模型服务系统。它主要处理机器学习的推理(inference)阶段,负责管理训练后模型的生命周期,并通过高性能的引用计数查找表为客户端提供版本化访问。虽然TensorFlowServing原生支持Ten......
  • python——celery异常consumer: Cannot connect to redis://127.0.0.1:6379/1: MISCON
    1.检查Redis日志:查看Redis的日志文件(通常位于/var/log/redis/redis-server.log或者根据你的配置文件中指定的位置),以获取有关错误原因的详细信息。2.检查磁盘空间:确保你的服务器有足够的磁盘空间。使用以下命令检查磁盘使用情况:bashdf-h如果磁盘空间不足,清理一些不必......