• Redis学习笔记(超详细,看完必会)


    开头:
    在这里插入图片描述

    1、Redis基本概念

    • Redis是一个键值对的数据库,大量操作都是在内存中完成的,读写的效率很高,因此广泛用于缓存
    • Redis是单线程的
    • Redis实际上是采用了线程封闭的观念,把任务封闭在一个线程,自然避免了线程安全问题
    • Redis的数据类型:String、hash、set、list、sorted set

    Redis使用单线程+多路IO复用
    在这里插入图片描述

    2、为什么使用Redis?

    在业务系统中,并发量非常大,使用Redis作为中间件缓存,可以大大的减轻Mysql的压力。

    3、Redis的作用?

    当系统的并发量比较高的时候,请求会直接落在Mysql上,在中间插入了缓存Redis,所有的请求先到Redis中查,如果查到了直接返回,请求就不会落在Mysql上,减轻了Mysql的压力。如果没查到,再去Mysql中查,查到结果后,将数据放到Redis中,方便下一次获取。

    4、Redis如何保证与数据库数据一致?

    更新的时候,先删除缓存,再更新数据库,读的时候,先读缓存,如果没有的话,就去数据库中读,同时将数据放到缓存,并返回响应。

    5、缓存穿透?缓存雪崩?

    5.1缓存穿透:

    概念:一个恶意的请求,假如有3000万个请求,要查询数据id=-1的,Redis缓存中查不到数据,然后去Mysql中查,Mysql中也查不到,那么3000万个请求全落在Mysql,永远起不来服务(恶意请求,永远查不到数据)。

    解决: 在Redis中查不到,就去查Mysql,查Mysql结果为空,也将他添加到Redis缓存中,添加空值
    ​ 给Key设置失效时间

    5.2缓存雪崩:

    概念:内部系统在启动服务器时,都要去连接数据库,请求量比较大的时候,一些系统启动失败,连接不上Mysql。
    解决:预热(手动将一些数据导到Redis中)

    6、Redis持久化方式:

    6.1、RDB:

    ​ 在不同的时间点,将 redis 存储的数据生成快照并存储到磁盘 等介质上。如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式效率高

    6.2、AOF:

    ​ 将 redis 执行过的所有写指令记录下 来,在下次 redis 重新启动时,只要把这些写指令从前到后再重复执行一遍,就可以实现 数据恢复了。

    ​ 其实RDB和AOF两种方式也可以同时使用,在这种情况下,如果redis重启的话,则会优先采用AOF方式来进行数据恢复,这是因为AOF方式的数据恢复完整度更高。

    7、Redis数据结构

    五种数据结构:String、List、hash、set、zset
    【redis数据结构 – strings】
    在这里插入图片描述

    【redis数据结构 – list】
    在这里插入图片描述

    【redis数据结构 – set】
    在这里插入图片描述

    【redis数据结构 – zset】
    在这里插入图片描述

    【redis数据结构 – 哈希】
    hashes存的是字符串和字符串值之间的映射,比如一个用户要存储其全名、姓氏、年龄等等,就很适合使用哈希。
    在这里插入图片描述

    8、Redis事务处理:

    1、事务

    Redis事务的作用:串联多个命令防止别的命令插队

    1.MULTI用来组装一个事务;
    2.EXEC用来执行一个事务;
    3.DISCARD用来取消一个事务;
    4.WATCH用来监视一些key,一旦这些key在事务执行之前被改变,则取消事务的执行。

    ​ 从输入multi命令开始,输入的命令都会依次进入命令队列中,但不会执行,直到输入exec后,Redis会将之前命令队列中的命令依次执行,组队的过程中可以通过discard来放弃组队。

    在这里插入图片描述

    QUEUED的字样,这表示我们在用MULTI组装事务时,每一个命令都会进入到内存队列中缓存起来,如果出现QUEUED则表示我们这个命令成功插入了缓存队列,在将来执行EXEC时,这些被QUEUED的命令都会被组装成一个事务来执行。

    WATCH本身的作用是“监视key是否被改动过”,而且支持同时监视多个key,只要还没真正触发事务,WATCH都会尽职尽责的监视,一旦发现某个key被修改了,在执行EXEC时就会返回nil,表示事务无法触发。

    在这里插入图片描述

    2、事务的错误处理:

    • 在组队过程中发生错误,执行时所有的队列都会被取消
    • 执行阶段某个命令报错,只有报错的命令不会被执行,而其他的命令都会执行
  • 相关阅读:
    DSPE-PEG2K-MAL|磷脂聚乙二醇马来酰亚胺(DSPE-PEG-MAL)|二硬脂酰基磷脂酰乙醇胺 聚乙二醇 马来酰亚胺,齐岳生物
    有必要给猫吃罐头吗?“合适的”比“贵的”更重要!
    写的一款简易的热点词汇记录工具
    gd32 禁用读写保护
    自动驾驶中的人工智能,自动驾驶与人工驾驶
    typescript 八叉树的简单实现
    flink篇——Time和watermark机制
    猫头虎博客带您使用Markdown编辑器
    二十三种设计模式(待更)
    卷积神经网络 - Keras入门与残差网络的搭建
  • 原文地址:https://blog.csdn.net/qq_44860722/article/details/125798040