【Redis】Redis学习笔记

news/2024/10/9 18:52:34

概况

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/69502.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

基于禁忌搜索算法的VRP问题求解matlab仿真,带GUI界面,可设置参数

1.程序功能描述基于禁忌搜索算法的VRP问题求解matlab仿真,带GUI界面,可设置参数。 2.测试软件版本以及运行结果展示MATLAB2022a版本运行 3.核心程序while COUNT<=Itertions ֲ L = zeros(Ant_Num,1); for i=1:Ant_Num Infor_Tabu_tmps = Infor_Tabu(i,:); R = Inf…

CMake 属性之全局属性

CMake 的全局属性是指在 CMake 配置过程中,对整个项目范围生效的设置。这些属性不同于目标 ( Target ) 属性或目录 ( Directory ) 属性,后者仅对特定的目标或目录生效。【写在前面】 CMake 的全局属性是指在 CMake 配置过程中,对整个项目范围生效的设置。 这些属性不同于目标…

自然人信息社工

人,是网络安全全流程中最大的弱点。针对人的攻击往往有出奇不意的效果。而想要利用人的弱点进行攻击,那么对目标的信息收集与了解就是非常重要的了。这篇文章记录了一些常用的用于对人进行身份信息收集的技术。这些技术常被用于溯源取证、社工攻击。 0x00 社工分析中的身份信…

Linux软中断ksoftirqd

前言 在上一篇 LINUX软中断-softirq的描述中,提到过ksoftirqd,这篇文章就介绍ksoftirqd ksoftirqd 是什么? ksoftirqd 是个内核线程,在创建的时候是绑定cpu的,每一个core对应生成一个ksoftirqd 线程 比如当前系统有4个core ~# ps aux | grep ksoftirqd root 3 0.0…

WPF Binding中的RelativeSource属性

一、简介 一个在Binding中比较重要的知识点——RelativeSource. 使用RelativeSource对象指向源对象。用这个可以在当前元素的基础上查找其他对象用于绑定到源对象。在实际使用Binding的过程中大部分时间Binding都放在了数据模板和控件模板中,(数据模板是控件模板用于定义控件…

信息学奥赛复赛复习15-CSP-J2022-01乘方-数据类型、类型转换、数据类型溢出、指数、模拟指数运算

PDF文档公众号回复关键字:202410091 P8813 [CSP-J 2022] 乘方 [题目描述] 小文同学刚刚接触了信息学竞赛,有一天她遇到了这样一个题:给定正整数 a 和 b,求 a^b 的值是多少。 a^b 即 b 个 a 相乘的值,例如 2^3 即为 3 个 2 相乘,结果为 222=8 “简单!”小文心想,同时很快…

20222327 2024-2025-1 《网络与系统攻防技术》实验一实验报告

一.实验内容 1.了解Linux系统下的基本操作命令,能够处理一些命令出现的error。 2.掌握了栈与堆的概念以及在进程内存管理中的应用。 3.了解基本的汇编语言指令及其功能。 4.能够深刻理解BoF的原理以及如何运用payload完成BoF的攻击 二.实验过程 任务一 直接修改程序机器指令,…

春秋云镜 Privilege

春秋云镜 Privilege上来先用fscan扫一下.___ _ / _ \ ___ ___ _ __ __ _ ___| | __ / /_\/____/ __|/ __| __/ _` |/ __| |/ / / /_\\_____\__ \ (__| | | (_| | (__| < \____/ |___/\___|_| \__,_|\___|_|\_\ fscan ve…