Redis基本知识

一、什么是Redis
Redis是一种基于内存的数据库,对数据的读写操作都是在内存中完成,因此读写速度非常快,用于存储键值对、缓存、消息队列、分布式锁等。

二、Redis和mencached的区别
相同:都是基于内存的数据库,读写都很快
不同:
1.Redis支持的数据类型更丰富(string、list、hash、set、zset);而mencached只支持string
2.Redis支持数据的持久化,可以将内存中数据保存在磁盘中,重启的时候可以重新加载使用;mencached没有持久化功能
3.Redis原生支持集群模式

三、Redis实现持久化
1.AOF日志:Redis在执行完一条写操作命令后,把该命令以追加的方式写入到一个文件里面(先执行后写入),重启Redis时会读取该文件里的命令逐一操作来进行数据恢复
2.AOF重写机制:当AOF日志过大时,读取每一条键值对最新的操作命令记录到新的AOF文件中。相当于压缩了AOF日志。
3.RDB快照:每次执行把内存中所有的数据都记录到磁盘中,这样恢复数据的效率会比AOF高些。用save(主线程里执行)和bgsave命令。
4.混合持久化:工作在AOF日志重写的过程。新的AOF文件前半部分是RDB格式的全量数据,后半部分是AOF格式的增量数据。重启时由于前半部分是RDB全量数据所以加载速度会很快,后半部分的增量数据会使丢失的数据更少。

四、Redis实现服务高可用
1.主从复制:主服务器进行读写操作;从服务器只进行读操作;主服务器将写操作同步到从服务器
2.哨兵模式:哨兵群进行监控,当主服务器发生故障,选举出新的主服务器

五、Redis过期删除策略
1.惰性删除:数据库访问key时才检测key是否过期
2.定期删除:每隔一段时间随机从数据库中取出一定数量的key进行检查

六、Redis内存淘汰算法
1.LRU(least recently used,最近最少使用算法):最新操作的键会被移动到表头
2.Redis采用的近似LRU算法:在Redis对象结构体中添加一个额外字段来记录此数据的最后一次访问时间,使用随机采样的方式淘汰数据

七、Redis的三大缓存问题
1.缓存雪崩:大量数据同时过期,或Redis故障宕机,大量请求直接访问数据库导致数据库压力骤增
解决方法:
(1)均匀设置过期时间
(2)设置互斥锁。访问到过期数据,在对其进行缓存重构时加锁(锁要设置超时时间避免阻塞)。未能获得互斥锁的要么等待要么返回默认值或空值
(3)后台更新缓存
(4)服务器熔断或请求限流
(5)构建高可用的Redis主从集群
2.缓存击穿:频繁被访问的热点数据过期了,也会导致大量请求直接访问数据库
解决方法:
(1)互斥锁
(2)后台更新缓存
3.缓存穿透:数据在缓存和数据库里都没有。缓存里找不到->访问数据库->数据库找不到无法重构缓存
解决方法:
(1)限制非法请求
(2)设置空值或默认值,后续请求得到该值后不会继续访问数据库
(3)使用布隆过滤器(位图+哈希函数)。写入数据库数据时用布隆过滤器做标记,缓存失效后去布隆过滤器里快速判断数据是否存在。这样请求只会访问混存和布隆过滤器

八、Redis保证数据库和缓存一致性
先更新数据库,再删除缓存。并用以下两种方法异步操作缓存
1.重试机制:引入消息队列记录删除缓存的操作。删除缓存失败的话可以从消息队列中读数据重试删除操作
2.订阅MySQL binlog:更新数据库的时候产生一条日志记录在binlog里,通过订阅binlog日志拿到具体要操作的数据再去删除缓存

参考文档:小林coding图解Redis

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年腾讯云部署幻兽帕鲁服务器,如何选择合适的服务器配置套餐畅玩游戏?

选择合适的服务器配置套餐以畅玩《幻兽帕鲁》游戏,首先需要考虑的是玩家数量和对服务器性能的需求。根据腾讯云提供的配置推荐,对于4到8人的玩家,推荐配置为4核16G12M;而10到20人的玩家则建议选择8核32G22M配置。这是因为《幻兽帕…

小程序页面指定区域局部滚动,做上拉和触底刷新

业务需求:在页面某个固定区域滑动 思路:滑动高度 页面高度 - 自定义导航高度(不是自己自定义的导航可以省略)- 按钮高度 - 单词数高度 实现 : 1.数据展示区内使用scroll-view,设置y轴滚动(…

swoole

php是单线程。php是靠多进程来处理任务,任何后端语言都可以采用多进程处理方式。如我们常用的php-fpm进程管理器。线程与协程,大小的关系是进程>线程>协程,而我们所说的swoole让php实现了多线程,其实在这里来说,就是好比让php创建了多个进程,每个进程执行一条…

初阶数据结构:二叉树

目录 1. 树的相关概念1.1 简述:树1.2 树的概念补充 2. 二叉树2.1 二叉树的概念2.2 二叉树的性质2.3 二叉树的存储结构与堆2.3.1 存储结构2.3.2 堆的概念2.3.3 堆的实现2.3.3.1 堆的向上调整法2.3.3.2 堆的向下调整算法2.3.3.3 堆的实现 1. 树的相关概念 1.1 简述&a…

域名及地址正确外,若依后台无法正常加载页面和退出报404问题

写小程序退出的时候,另外写了一个自定义退出处理类,里面的响应浏览器的代码每次都走。因为原来也有个退出处理类,所以先后走了2次,因为就出现了问题。 LogoutSuccessHandlerImpl类里的: ServletUtils.renderString(r…

【C++ AVL树】

文章目录 AVL树AVL树的概念AVL树节点的定义AVL树的插入AVL树的旋转右单旋左单旋左右双旋右左双旋 代码实现 总结 AVL树 AVL树的概念 二叉搜索树在顺序有序或接近有序的情况下,而插入搜索树将退化为单叉树,此时查找的时间复杂度为O(n),效率低…

鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:颜色渐变)

设置组件的颜色渐变效果。 说明: 从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 linearGradient linearGradient(value: { angle?: number | string; direction?: GradientDirection; colors: Array; repea…

mamba-ssm安装building wheel卡着不动后error...避坑解决方法

文章目录 方法1、下载whl文件到本地后pip install安装成功后验证: 方法2、拉取Docker镜像 对于项目中用到MambaIR的小伙伴,需要pip安装 causal_conv1d和 mamba-ssm两个包及其依赖: torch packing transformersMambaIR-Github主页&#xff0…

【C++】vector的使用及其模拟实现

这里写目录标题 一、vector的介绍及使用1. vector的介绍2. 构造函数3. 遍历方式4. 容量操作及空间增长问题5. 增删查改6. vector二维数组 二、vector的模拟实现1. 构造函数2. 迭代器和基本接口3. reserve和resize4. push_back和pop_back5. insert和erase5. 迭代器失效问题5. 浅…

【Java】基础算法练习题

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ 目录 基础算法练习题🚀1. 两数之和…

Django 管网项目 三

Django 官网文档 ​​Writing your first Django app, part 2 | Django documentation | Django 本文内容涉及创建视图 View,路由,和模版。并对内容进行渲染。 创建视图 在我们的投票应用中,我们需要下列几个视图: 问题索引页—…

ChatGPT支持下的PyTorch机器学习与深度学习技术应用

近年来,随着AlphaGo、无人驾驶汽车、医学影像智慧辅助诊疗、ImageNet竞赛等热点事件的发生,人工智能迎来了新一轮的发展浪潮。尤其是深度学习技术,在许多行业都取得了颠覆性的成果。另外,近年来,Pytorch深度学习框架受…

相关知识1111

一、 店铺编号和相关负责人 1、天猫兄弟、锦格 京东凡越 福林哥 如萍姐 2、京东锦格 天猫凡越 林森 雷佳华 3、天猫从简 京东从简 孔哥 4、抖音锦格 拼多多凡越 鸿哥 不知道哪个店铺编号:0 二、天猫京东聊天界面快捷搜索商品 1、 天猫只能根据标题搜索 2、京东是…

神经网络之万能定理python-pytorch实现,可以拟合任意曲线

神经网络之万能定理python-pytorch实现,可以拟合任意曲线 博主,这几天一直在做这个曲线拟合的实验,讲道理,网上可能也有很多这方面的资料,但是博主其实试了很多,效果只能对一般的曲线还行,稍微…

java之抽象类

什么是抽象类? 抽象就是不能具体化,不能实例化 作为父类,让子类去实现 abstract修饰类就是抽象类 abstract修饰方法就是抽象方法修饰符 abstract class 类名{修饰符 abstract 返回值类型 方法名(形参列表); }public abstract class A {//不…

CTFHUB--文件包含漏洞--RCE

文件包含漏洞 文件包含漏洞也是一种注入型漏洞,其本质就是输入一段用户能够控制的脚本或者代码,并让服务端执行。有时候由于网站功能需求,会让前端用户选择要包含的文件,而开发人员又没有对要包含的文件进行安全考虑,…

CSS【详解】居中对齐 (水平居中 vs 垂直居中)

水平居中 内部块级元素的宽度要小于容器(父元素) 方案一&#xff1a;文本居中对齐&#xff08;内联元素&#xff09; 限制条件&#xff1a;仅用于内联元素 display:inline 和 display: inline-block; 给容器添加样式 text-align:center<!DOCTYPE html> <html lang&q…

裴蜀定理(Bézout’s identity)

裴蜀定理&#xff08;Bzout’s identity&#xff09;是一个数论定理&#xff0c;也称为贝祖等式。它表明&#xff0c;对于任意给定的两个整数 a a a 和 b b b&#xff0c;存在整数 x x x 和 y y y&#xff0c;使得它们满足以下方程&#xff1a; a x b y gcd ⁡ ( a , b )…

【简略知识】项目开发中,VO,BO,PO,DO,DTO究竟是何方妖怪?

前言 在项目开发中&#xff0c;是否需要定义VO&#xff08;视图对象&#xff09;&#xff0c;BO&#xff08;业务对象&#xff09;&#xff0c;PO&#xff08;持久化对象&#xff09;&#xff0c;DO&#xff08;领域对象&#xff09;&#xff0c;DTO&#xff08;数据传输对象&…

CKKS EXPLAINED, PART 3: ENCRYPTION AND DECRYPTION

CKKS EXPLAINED, PART 3: ENCRYPTION AND DECRYPTION Introduction 在之前的文章中&#xff0c;CKKS解释了第二部分&#xff1a;完整的编码和解码&#xff0c;我们看到了如何实现CKKS的编码器和解码器&#xff0c;这使我们能够将向量转换为多项式&#xff0c;反之亦然。这一步…