[Redis]基本全局命令

Redis存储方式介绍

在 Redis 中数据是以键值对的凡事存储的,键(Key)和值(Value)是基本的数据存储单元。以下是对 Redis 键值对的详细讲解:

键(Key):

类型:键是字符串类型,可以包含任何二进制数据。

长度限制:键的最大长度为 512 MB。

命名规范:虽然 Redis 对键的命名没有严格的要求,但为了提高可读性和管理性,通常使用有意义的命名规范。例如: session:abc123

值(Value):

值可以是多种数据类型之一,Redis 提供了丰富的数据结构来存储不同类型的数据:

比如字符串(String)、哈希(Hash)、列表(List)、集合(Set)、有序集合(Sorted Set,ZSet)、位图(Bitmap)、HyperLogLog、地理空间索引(Geospatial)、流(Stream)

这里以字符串类型举例,其他数据类型后面会介绍

基础全局命令介绍

设置和获取键值对(string)

这里操作就是这是一个key1 value1的键值对,key1为键,value1为值

设置好后,再用get命令获取到key1对应的值

获取到value1

检查键是否存在

exists key



因为有key1,所以使用key1可以查询到,返回了1

(这里也可以一次性查询多个key,返回就是有几个查到了,就返回几)

没有key2,查询不到,返回0

查找键

keys [pattern]

返回所有满足样式(pattern)的 key。支持如下统配样式。

h?llo 匹配 hello , hallo 和 hxllo

h*llo 匹配 hllo 和 heeeello

h[ae]llo 匹配 hello 和 hallo 但不匹配 hillo

h[^e]llo 匹配 hallo , hbllo , ... 但不匹配 hello

h[a-b]llo 匹配 hallo 和 hbllo

 keys * 返回数据库中所有key

使用 keys 命令在 Redis 中有很大的风险,特别是在生产环境中。这是因为 keys 命令会扫描整个数据库并返回匹配指定模式的所有键。这种操作可能会对 Redis 服务器的性能产生严重影响,特别是在键数量较多的情况下。

keys命令的风险
  1. 性能问题

    • KEYS 命令是阻塞操作,会遍历整个数据库来查找匹配的键。
    • 在键数量较多时,执行 KEYS 命令可能会导致 Redis 服务卡顿,影响其他操作的响应时间。
    • 这种操作的时间复杂度为 O(N),其中 N 是数据库中的键数量。
  2. 阻塞客户端

    • 如果一个客户端执行 KEYS 命令,其他客户端的请求可能会被阻塞,直到 KEYS 命令执行完毕。
    • 在高并发场景下,这种阻塞可能导致大量请求堆积,造成 Redis 服务不可用。
  3. 内存消耗

    • KEYS 命令返回的结果集可能非常大,导致返回的数据量超出客户端的处理能力。
    • 结果集需要在内存中存储,可能导致 Redis 服务器的内存压力增大。

当然,也有其他命令可以代替keys,比如scan命令,后面会讲到。

在数据量很小的情况下,使用keys命令问题不大。

 删除键

del key

这里因为存在key1,所以使用del删除返回1,表示删除成功1个

但是key2不存在,没有删除任何key,返回0

设置过期时间

expire key seconds        (单位是秒)

pexpire key millisecond        (单位是毫秒)

设置key1,然后设置key1的过期时间为10秒

10秒后用exists查询,返回0,说明key1已经过期被删除了

查询键的剩余生存时间

TTL:获取键的剩余生存时间(单位是秒)

PTTL:获取键的剩余生存时间(单位是毫秒)

设置键值对并设置过期时间

用ttl和pttl查询剩余过期时间

过期后,key1被删除,返回-2

如果返回-1,说明key是永久存在的,没有设置过期时间

redis过期策略

Redis 通过多种策略来管理键的过期和内存回收

可以在redis系统文件的配置,也就是redis.conf里修改过期策略

1. 惰性删除(Lazy Deletion)

惰性删除策略意味着当客户端访问某个键时,Redis 会检查该键是否已经过期。如果该键已经过期,Redis 将立即删除它,并返回一个不存在的结果。

  • 实现方式
    • 每次读取或写入一个键时,Redis 都会检查该键的过期时间。
    • 如果过期时间已到,Redis 会删除该键,然后返回不存在的结果或进行相应的写操作。
  • 优点
    • 不会额外占用 CPU 资源,因为只在访问键时进行检查。
  • 缺点
    • 过期键在没有被访问时仍会占用内存。

2. 定期删除(Periodic Deletion)

定期删除策略是指 Redis 以固定的时间间隔对带有过期时间的键进行扫描和删除。

  • 实现方式
    • Redis 内部会运行一个后台任务,以每秒 10 次的频率随机抽取一部分带有过期时间的键进行检查。
    • 如果发现这些键已经过期,Redis 会删除它们。
  • 优点
    • 相对平衡了性能和内存回收的需求。
    • 可以在一定程度上避免大量过期键长时间占用内存。
  • 缺点
    • 由于是定期抽样检查,仍有可能存在一些过期键在被检查到之前长时间占用内存。

Redis 过期键处理策略(惰性删除和定期删除)是内置的,不需要特别配置。

但是可以通过以下配置调整定期删除的频率:(在redis.conf配置文件里)

hz 10
这表示 Redis 的事件循环频率,每秒执行 10 次事件循环。这个值会影响定期删除过期键的频率。

3. 主动删除(Active Deletion)

主动删除策略主要是通过内存淘汰策略(Eviction Policy)来实现,当 Redis 内存达到配置的最大使用量时,会主动删除一些键来释放内存。

  • 配置方式

    • 可以通过 maxmemory 配置项设置 Redis 的最大内存使用量。
    • 可以通过 maxmemory-policy 配置项设置内存淘汰策略,包括以下几种:
      • volatile-lru:从设置了过期时间的键中移除最近最少使用的键。
      • allkeys-lru:从所有键中移除最近最少使用的键。
      • volatile-lfu:从设置了过期时间的键中移除最不常使用的键。
      • allkeys-lfu:从所有键中移除最不常使用的键。
      • volatile-ttl:从设置了过期时间的键中移除将要过期的键。
      • noeviction:当内存达到限制时,不再进行删除操作,直接返回错误。
      • volatile-random:从设置了过期时间的键中随机移除键。
      • allkeys-random:从所有键中随机移除键。
  • 优点

    • 可以确保 Redis 在达到内存上限时继续运行。
    • 根据不同的策略,可以优化特定场景下的性能和内存使用。
  • 缺点

    • 可能导致一些热键(高频访问的键)被移除,从而影响性能。

4. 内存淘汰策略

当 Redis 内存使用达到限制时,会根据配置的内存淘汰策略删除一些键,以释放内存。以下是一些常用的内存淘汰策略:

  • LRU(Least Recently Used):删除最近最少使用的键。
  • LFU(Least Frequently Used):删除使用频率最少的键。
  • TTL(Time to Live):删除最早过期的键。
  • 随机删除:随机删除一些键。

可以通过 maxmemory-policy 配置项来设置具体的淘汰策略。

比如:

maxmemory-policy allkeys-lru

这表示当达到最大内存限制时,Redis 将采用 LRU策略在所有键中移除最近最少使用的键。

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

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

相关文章

英伟达:AI之火还在燃烧!

昨晚,全球市场屏息以待的一家公司财报终于发布了,没有超出大家预期的是,他还是超预期了。 大家当然都知道我们要说的是——英伟达! 如今,全球大模型之Z激Z正酣,AI芯片装备竞赛需求猛烈,作为AI…

OPPO Reno12 系列正式发布,仅2699元起售

5月23日,OPPO发布科技潮品 Reno12 系列,包含 Reno12 与 Reno12 Pro,以超美小直屏设计,以及行业首发的新科技,引领全新潮流方向。 据「TMT星球」了解,首次亮相的全新配色 Reno12 「千禧银」与Reno12 Pro的「…

spring常用知识点

1、拦截器和过滤器区别 1. 原理不同: 拦截器是基于java的反射机制,而过滤器采用责任链模式是基于函数回调的。 2. 使用范围不同: 过滤器Filter的使用依赖于Tomcat等容器,导致它只能在web程序中使用 拦截器是一个Sping组件&am…

爆火!开源多模态大模型在手机端进行本地部署!

节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对大模型& AIGC 技术趋势、大模型& AIGC 落地项目经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了…

Rust Tarui 中的 Scrcpy 客户端,旨在提供控制安卓设备的鼠标和按键映射,类似于游戏模拟器。

Scrcpy-mask 为了实现电脑控制安卓设备,本人使用 Tarui Vue 3 Rust 开发了一款跨平台桌面客户端。该客户端能够提供可视化的鼠标和键盘按键映射配置。通过按键映射实现了实现类似安卓模拟器的多点触控操作,具有毫秒级响应速度。该工具可广泛用于电脑控…

【算法】二分算法——寻找峰值

题解:寻找峰值(二分算法) 目录 1.题目2.暴力求解3.二分算法4.总结 1.题目 题目链接:LINK 2.暴力求解 暴力求解的思路很简单,这个数组的形状无非就三种: 一直上升下降(这里包含先下降后上升)先升后降 总结一下规律&#xff1…

智能AI愈发强大,企业如何防范AI网络钓鱼攻击

随着AI技术的快速发展,如ChatGPT等智能化工具在各个领域得到了广泛应用。然而,这些工具的普及也给网络安全带来了新的挑战。AI模型的自然语言生成功能使得网络钓鱼攻击更加智能化和隐蔽化,攻击者能够利用AI技术生成高度逼真的欺骗性邮件和其他…

银河麒麟操作系统下使用QT连接TiDB数据库开发步骤

目标:实现项目软件+硬件都运行在国产化操作系统平台上。 方法:在虚拟机中安装麒麟系统V10Sp1+Qt5.14.2+MySql8.0+TiDB软件,编译MySql驱动,测试连接TiDB数据库项目。 步骤: 1、使用虚拟机软件VMWare安装银河麒麟操作系统。 2、在银河麒麟系统上安装QT5.14.2软件。 3、…

2024年5月20日优雅草蜻蜓API大数据服务中心v2.0.4更新

v2.0.4更新 v2.0.4更新 2024年5月20日优雅草蜻蜓API大数据服务中心v2.0.4更新-增加ai绘画接口增加淘宝联想词接口底部增加联系方式 更新日志 底部增加联系方式 增加ai绘画接口 增加淘宝联想词接口 增加用户中心充值提示 用户中心内页颜色改版完成 截图 部分具体更新接口信…

算法练习第23天|131.分割回文串、93.复原IP地址

131.分割回文串 131. 分割回文串 - 力扣(LeetCode)https://leetcode.cn/problems/palindrome-partitioning/description/ 题目描述: 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有…

23-LINUX--TCP连接状态

一.TCP服务的特点 传输层协议主要有两个:TCP 协议和 UDP协议。TCP 协议相对于UDP协议的特点是:面向连接、字节流和可靠传输。 使用TCP协议通信的双方必须先建立连接,然后才能开始数据的读写。双方都必须为该连接分配必要的内核资源&a…

STM32_ADC

1、ADC简介 ADC,即Analog-Digital Converter,模拟-数字转换器。 ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁。 12位逐次逼近型ADC,1us转换时间。 输入电压范围:0~3.3…

AHPPEBot:基于表型和姿态估计的自主番茄采摘机器人

论文:AHPPEBot: Autonomous Robot for Tomato Harvesting based on Phenotyping and Pose Estimation 作者:Xingxu Li, Nan Ma, Yiheng Han, Shun Yang, Siyi Zheng 收录:ICRA2024 编辑:东岸因为一点人工一点智能 AHPPEBot&am…

如何将Windows PC变成Wi-Fi热点?这里提供详细步骤

序言 Windows 10和Windows 11都有内置功能,可以将你的笔记本电脑(或台式机)变成无线热点,允许其他设备连接到它并共享你的互联网连接。以下是操作指南。 由于Windows中隐藏的虚拟Wi-Fi适配器功能,你甚至可以在连接到另一个Wi-Fi网络或无线路由器时创建Wi-Fi热点,通过另…

Mysql总结1

Mysql常见日志 (1)错误日志:记录数据库服务器启动、停止、运行时存在的问题; (2)慢查询日志:记录查询时间超过long_query_time的sql语句,其中long_query_time可配置,且…

【NumPy】关于numpy.genfromtxt()函数,看这一篇文章就够了

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

一款功能强大的安卓虚拟机应用——VMOS Pro使用分享

前段时间我刚刚分享一个WeChat平板模块能够允许用户自由修改系统设置,让你的Android备用手机焕发新生,实现手机PAD化,实现两台设备同时登录微信号。今天我分享的这个相比WeChat更为简单,因为它可以通过虚拟机的方式进行多种androi…

java文档管理系统的设计与实现源码(springboot+vue+mysql)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的文档管理系统的设计与实现。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 文档管理系统的…

H4vdo 台湾APT-27视频投放工具

地址:https://github.com/MartinxMax/H4vdo 视频 关于 H4vdo RTMP lock 屏播放视频工具,可以向目标发送有效载荷,播放目标的屏幕内容。目标无法曹作计算机 使用方法 安装依赖 根据你的操作系统选择一个安装程序 RTMP 服务端 ./rtsp-simple-server.…

C语言学习笔记--运算符与表达式(7521字爆肝)

上午好,本来想上午改简历下午学习c语言的,但想了一下上午精力充沛还是用来学习比较好,虽然现在失业了,但住在我姨家有吃有住的,再次感谢我姨,我要抓紧时间修改简历,然后找个工作搬出去&#xff…