Redis过期淘汰策略
一. Redis过期淘汰策略
当Redis已用内存超过maxmemory限定时,触发主动清理策略。 主动清理策略在Redis 4.0之前一共实现了 6 种内存淘汰策略,在 4.0 之后,又增加了 2 种 策略,总共8种:
- 针对设置了过期时间的key做处理:
- volatile-ttl:在筛选时,会针对设置了过期时间的键值对,根据过期时间的先后进 行删除,越早过期的越先被删除。
- volatile-random:就像它的名称一样,在设置了过期时间的键值对中,进行随机 删除。
- volatile-lru:会使用 LRU 算法筛选设置了过期时间的键值对删除。
- volatile-lfu:会使用 LFU 算法筛选设置了过期时间的键值对删除。
- 针对所有的key做处理:
- allkeys-random:从所有键值对中随机选择并删除数据。
- allkeys-lru:使用 LRU 算法在所有数据中进行筛选删除。
- allkeys-lfu:使用 LFU 算法在所有数据中进行筛选删除。
- 不处理:
- noeviction:不会剔除任何数据,拒绝所有写入操作并返回客户端错误信息" (error) OOM command not allowed when used memory",此时Redis只响应读 操作。
二. Redis淘汰Key的算法LRU与LFU区别
- LRU 算法(Least Recently Used,最近最少使用):淘汰很久没被访问过的数据,以最近一 次访问时间作为参考。
- LFU 算法(Least Frequently Used,最不经常使用):淘汰最近一段时间被访问次数最少的 数据,以次数作为参考。
绝大多数情况我们都可以用LRU策略,当存在大量的热点缓存数据时,LFU可能更好点。
三. 删除Key的命令会阻塞Redis吗
有可能的,我们看下DEL Key命令的时间复杂度:
- 删除单个字符串类型的 key ,时间复杂度为 O(1)。
- 删除单个列表、集合、有序集合或哈希表类型的 key ,时间复杂度为 O(M), M 为以上数据结构内的元素数量。 如果删除的是列表、集合、有序集合或哈希表类型的 key,如果集合元素过多,是会阻塞 Redis的。对于这种情况我们可以借助scan这样的命令循环删除元素。
如果删除的是字符串类型的 key,但是key对应value比较大,比如有几百M,那么也是会 阻塞Redis的。这种bigkey是我们要尽量减少出现的情况。
相关文章:
Redis过期淘汰策略
一. Redis过期淘汰策略 当Redis已用内存超过maxmemory限定时,触发主动清理策略。 主动清理策略在Redis 4.0之前一共实现了 6 种内存淘汰策略,在 4.0 之后,又增加了 2 种 策略,总共8种: 针对设置了过期时间的key做处理…...

微信小程序---自定义组件
目录 1.局部引用组件 2.全局引用组件 3.组件和页面的区别 4.自定义组件样式 5.properties属性 6.data和properties的区别 7.数据监听器 8.纯数据字段 9.自定义组件-组件的生命周期 lifetimes节点 10.组件所在的页面的生命周期 pageLifetimes节点 11.插槽 &#x…...

CGAL的最优传输曲线重构
1、介绍 此程序包实现了一种重建和简化二维点集的方法。输入是一组具有质量属性的二维点,可能受到噪声和离群值的干扰。输出是一组线段和孤立点,它们近似于输入点,如下图所示。质量属性与每个点的近似重要性有关。 左:输入点集受到…...

使用Docker本地安装部署Draw.io绘图工具并实现远程访问协作办公
前言 提到流程图,大家第一时间可能会想到Visio,不可否认,VIsio确实是功能强大,但是软件为收费,并且因为其功能强大,导致安装需要很多的系统内存,并且是不可跨平台使用。所以,今天给…...

流程图、泳道图的介绍和示例分享,以及自定义元件库的介绍
目录 一. 流程图介绍 二. Processon使用 新建一个流程图 图形的使用 三. 流程图示例 登录界面 门诊业务流程图 住院业务流程图 药房业务流程图 会议OA流程图 四. 泳道图介绍 五. 自定义元件库 5.1 新建一个元件库 5.2 创建元件 5.3 使用自定义元件库 一. 流程图介…...

RabbitMq的详细使用
消息队列RabbitMQ详细使用 文章目录 消息队列RabbitMQ详细使用MQ 的相关概念什么是MQ为什么要用MQMQ 的分类MQ 的选择 RabbitMQRabbitMQ 的概念四大核心概念各个名词介绍安装RabbitMQWeb管理界面及授权操作Docker 安装Hello world简单示例 Work Queues轮训分发消息消息应答自动…...

软件设计师——软件工程(二)
📑前言 本文主要是【软件工程】——软件设计师——软件工程的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 🌄…...

阿里云RDS MySQL 数据如何快速同步到 ClickHouse
云数据库 RDS MySQL 和 云数据库 ClickHouse 是阿里云推出的两个备受欢迎的数据库解决方案,它们为用户提供了可靠的数据存储方案、分析数仓方案,本文介绍如何快速将 RDS MySQL 的数据同步到云数据库 ClickHouse。 如何快速将RDSMySQL的数据同步到云数据库…...

HINet技术要点
《HINet: Half Instance Normalization Network for Image Restoration》发表于CVPR2021,是旷视科技&复旦大学&北大在图像复原方面的的最新进展,所提方案取得了NTIRE2021图像去模糊Track2赛道冠军。 下面谈谈该文章的主要技术点。 1. HIN&#…...

IntelliJ IDEA2023学习教程
详细介绍idea开发工具及使用技巧 1. 2023版安装1.1删除老版本1.2 下载及安装 3.快捷技巧4. 创建各种model 1. 2023版安装 1.1删除老版本 如果以前装有idea需要先删除,以避免冲突,在idea安装目录/bin/Uninstall.exe双击1.2 下载及安装 最新版本 https:/…...
MATLAB基础应用精讲-【数模应用】神经网络(补充篇)
目录 前言 几个相关概念 反向传播 梯度下降 损失函数 优化函数...
洛谷题单【算法1-7】搜索
P1135 奇怪的电梯 一开始以为深搜肯定没问题,从a点出发,衍生出一个二叉树,遍历所有情况就好了,但是会重复,所以加了一个vis防止重复,但是只拿了64pts,因为有可能某个点并不是最短被到达的&…...

WordPress主题Lolimeow v8.0.1二次元风格支持erphpdown付费下载
WordPress国人原创动漫主题lolimeow免费下载 lolimeow是一款WordPress国人原创主题,风格属于二次元、动漫、可爱萝莉风,带有后台设置,支持会员中心。该主题为免费主题。 1.侧栏/无侧栏切换! 2.会员中心(配套Erphpdown…...
WTN6xxx系列OTP语音芯片:智能语音解决方案的可靠之选
在智能语音交互领域,唯创知音的WTN6xxx系列OTP语音芯片以其独特的特性成为声音播放提示IC的可靠之选。本文将深入探讨WTN6xxx系列OTP语音芯片的应用优势,展示其在各个方面的卓越性能。 一、低成本、高性能 1.经济实惠: WTN6xxx系列OTP语音芯…...

腾讯云Elasticsearch Service产品体验
基本介绍 产品概述 腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需…...

SQLE 3.0 部署实践
来自 1024 活动的投稿系列 第一篇《SQLE 3.0 部署实践》 . 作者:张昇,河北东软软件有限公司高级软件工程师,腾讯云社区作者。 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 本文共 32…...

爬虫的分类
爬虫的分类 网络爬虫按照系统结构和实现技术,大致可分为4类,即通用网络爬虫、聚焦网络爬虫、增量网络爬虫和深层次网络爬虫。 1.通用网络爬虫:搜索引擎的爬虫 比如用户在百度搜索引擎上检索对应关键词时,百度将对关键词进行分析…...

简说vue-router原理
vue-router原理 hash模式 实现原理 改变描点监听描点变化 history模式 实现原理 改变url监听url变化 abstracthash 和 history 模式有什么区别? url 不一样原理不同 其他总结扩展 history 出现404错误 vue-router原理 vue-router是vue项目的重要组成部分&#x…...
什么是 Spring 框架?
Spring 框架是一个开源的、轻量级的企业级应用框架,用于构建 Java 应用程序。它提供了全面的基础设施支持,以简化企业级应用的开发。Spring 的核心目标是通过促进良好的设计原则和编程习惯来提高 Java 开发人员的效率和系统的可维护性。 Spring 框架的主…...

Vue2.x源码:new Vue()做了啥
例子1new Vue做了啥?new Vue做了啥,源码解析 initMixin函数 初始化 – 初始化Vue实例的配置initLifecycle函数 – 初始化生命周期钩子函数initEvents – 初始化事件系统初始化渲染 initRender初始化inject选项 例子1 <div id"app"><div class"home&…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...

基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
一、方案背景 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...
深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏
一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...
基于鸿蒙(HarmonyOS5)的打车小程序
1. 开发环境准备 安装DevEco Studio (鸿蒙官方IDE)配置HarmonyOS SDK申请开发者账号和必要的API密钥 2. 项目结构设计 ├── entry │ ├── src │ │ ├── main │ │ │ ├── ets │ │ │ │ ├── pages │ │ │ │ │ ├── H…...