2023年关于redis,常常靠常常忘的知识点

article/2024/6/24 17:28:40

一.使用过 Redis 分布式锁么,它是怎么实现的?

先拿 setnx 来争抢锁,抢到之后,再用 expire 给锁加一个过期时间防止锁忘记了释放。如果在 setnx 之后执行 expire 之前进程意外 crash 或者要重启维护了,那会怎么样?set 指令有非常复杂的参数,这个应该是可以同时把 setnx 和 expire 合成一条指令来用的!

二.使用过 Redis 做异步队列么,你是怎么用的?有什么缺点?

一般使用 list 结构作为队列,rpush 生产消息,lpop 消费消息。当 lpop 没有消息的时候,要适当 sleep一会再重试。

缺点:

在消费者下线的情况下,生产的消息会丢失,得使用专业的消息队列如 rabbitmq 等。

能不能生产一次消费多次呢?

使用 pub/sub 主题订阅者模式,可以实现 1:N 的消息队列。

三.什么是缓存穿透?如何避免?什么是缓存雪崩?何如避免?

缓存穿透

一般的缓存系统,都是按照 key 去缓存查询,如果不存在对应的 value,就应该去后端系统查找(比如DB)。一些恶意的请求会故意查询不存在的 key,请求量很大,就会对后端系统造成很大的压力。这就叫做缓存穿透。

如何避免?

1:对查询结果为空的情况也进行缓存,缓存时间设置短一点,或者该 key 对应的数据 insert 了之后清理缓存。

2:对一定不存在的 key 进行过滤。可以把所有的可能存在的 key 放到一个大的 Bitmap 中,查询时通过

该 bitmap 过滤。

缓存雪崩

当缓存服务器重启或者大量缓存集中在某一个时间段失效,这样在失效的时候,会给后端系统带来很大压力。导致系统崩溃。

如何避免?

1:在缓存失效后,通过加锁或者队列来控制读数据库写缓存的线程数量。比如对某个 key 只允许一个线程查询数据和写缓存,其他线程等待。

2:做二级缓存,A1 为原始缓存,A2 为拷贝缓存,A1 失效时,可以访问 A2,A1 缓存失效时间设置为短期,A2 设置为长期

3:不同的 key,设置不同的过期时间,让缓存失效的时间点尽量均匀。


http://www.ngui.cc/article/show-861314.html

相关文章

RDC 2022纪念版开发板-D1S在RT-Smart运行

开发环境 软件 ubuntu20.04VMware Workstation 硬件 RDC2022纪念版开发板全志D1s芯片 材料下载 首先打开虚拟机,创建一个目录存放本次测试的代码,然后克隆RT-Smart用户态代码。 git clone https://github.com/RT-Thread/userapps.git在userapps目…

Navicat Monitor 3.0 现已上市 | 欢迎下载试用

Navicat Monitor 3.0 现已上市Navicat Montior 3.0 现已发布!一经发布,受到广大专业运维人员的关注与选择! 五大新亮点带给运维团队最为实用且有效地提升监控能力。其具备 PostgreSQL 服务器监控能力、支持优化慢查询、构建自定义指标、性能分析工具优化…

计算机视觉和图像处理简介:PIL (Python Image Library) 的基本使用

文章大纲 Image Files and PathsLoad Images in PythonPlotting an ImageGrayscale Images, Quantization and Color ChannelsGrayscale ImagesQuantizationColor ChannelsPIL Images into NumPy ArraysIndexingQuestion 1:ReferencesPillow Library (PIL) Estimated time need…

第5章 Linux平台安装MongoDB教程

Linux平台install MongoDB MongoDB 提供了 linux 各个发行版本 64 位的install 包,帅哥可以在官网download install 包。 install 前咱们需要install 各个 Linux 平台依赖包。 Red Hat/CentOS: sudo yum install libcurl opensslUbuntu 18.04 LTS (“…

Qt 开发环境搭建

一、Qt下载与安装 1、qt下载网站https://download.qt.io/ 其中各个目录含义如下: 目录说明snapshots/预览版,最新开发测试的Qt库和开发工具online/在线安装源official_releases/正式发布版,是与开发版相对应的稳定版Qt库和开发工具&#x…

Linux: command: traceroute traceroute6

文章目录 参考昨天遇到一个问题命令功能描述UDP方式ICMP 方式TCP方式traceroute --help解决参考 https://en.wikipedia.org/wiki/Traceroute https://linux.die.net/man/8/traceroute 昨天遇到一个问题 说这个traceroute显示的全是 星花,没有路由信息。根据多年的经验,这种…

MobaXterm使用指南

MobaXterm使用指南 1. 介绍 通俗的来讲,MobaXterm就是一款SSH客户端,它帮助我们在Windows操作系统下去连接并操作Linux服务器。MobaXterm 又名 MobaXVT,是一款增强型终端、X 服务器和 Unix 命令集(GNU/ Cygwin)工具箱。MobaXterm 可以开启多…

【Linux】项目自动化构建工具-make/Makefile与Linux调试器-gdb使用

文章目录Linux项目自动化构建工具-make/MakefileLinux调试器-gdb使用Linux项目自动化构建工具-make/Makefile 背景 会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录…

小红书的大致运营思路是怎样的?

小红书在运营的过程中经常会不知道被什么原因所限流自己的小红书账号,所以这篇文章主要讲述一下我们在平时的运营的过程中应该注意哪些事情?还有怎样避免违规操作! 一、小红书的敏感词 小红书的笔记中如果有敏感词汇,那么这篇笔…

655. 汽车大甩卖2 etiger.vip 答案

题目描述 有n辆车大甩卖,第i辆车售价a[i]元。有m个人带着现金来申请购买,第i个到现场的人带的现金为b[i]元,只能买价格不超过其现金额的车子。你是大卖场总经理,希望将车和买家尽量多地进行一对一配对,请问最多卖出多…