[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命令的风险
-
性能问题:
KEYS命令是阻塞操作,会遍历整个数据库来查找匹配的键。- 在键数量较多时,执行
KEYS命令可能会导致 Redis 服务卡顿,影响其他操作的响应时间。 - 这种操作的时间复杂度为 O(N),其中 N 是数据库中的键数量。
-
阻塞客户端:
- 如果一个客户端执行
KEYS命令,其他客户端的请求可能会被阻塞,直到KEYS命令执行完毕。 - 在高并发场景下,这种阻塞可能导致大量请求堆积,造成 Redis 服务不可用。
- 如果一个客户端执行
-
内存消耗:
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策略在所有键中移除最近最少使用的键。
相关文章:
[Redis]基本全局命令
Redis存储方式介绍 在 Redis 中数据是以键值对的凡事存储的,键(Key)和值(Value)是基本的数据存储单元。以下是对 Redis 键值对的详细讲解: 键(Key): 类型:…...
【Linux】- HBase集群部署 [19]
简介 apache HBase是一种分布式、可扩展、支持海量数据存储的 NoSQL 数据库。 和Redis一样,HBase是一款KeyValue型存储的数据库。 不过和Redis涉及方向不同 Redis设计为少量数据,超快检索HBase设计为海量数据,快速检索 HBase在大数据邻域…...
js如何遍历FormData的值
遍历FormData的值,一般有2种方法:forEach 和 for...of entries const data new FormData();data.append(aaa, 111); data.append(bbb, 222);// 方法1 data.forEach((value, key) > {console.log(key, value); }) 输出 aaa 111 和 bbb 222// 方法2 …...
【C语言】明析部分C语言内存函数
目录 1.memcpy 2.memmove 3.memset 4.memcmp 以下都是内存函数,作用单位均是字节 1.memcpy memcpy是C/C语言中的一个内存拷贝函数,其原型为: void* memcpy(void* dest, const void* src, size_t n);目标空间(字节)…...
一阶数字高通滤波器
本文的主要内容包含一阶高通滤波器公式的推导和数字算法的实现以及编程和仿真 1 计算公式推导 1.1.2 算法实现及仿真 利用python实现的代码如下: import numpy as np # from scipy.signal import butter, lfilter, freqz import matplotlib.pyplot as plt #2pifW…...
Linux多线程系列2: 模拟封装简易语言级线程库,线程互斥和锁,线程同步和条件变量,线程其他知识点
Linux多线程系列2: 模拟封装简易语言级线程库,线程互斥和互斥锁,线程同步和条件变量,线程其他知识点 1.前言 一.模拟C11线程库自己封装简易语言级线程库1.实现框架2.迅速把构造等等函数写完3.start和work1.尝试一2.尝试二3.最终版本4.给出代码 二.模拟实现多线程(为编写线程池做…...
VUE3-form表单保存附件与基本信息
element-ui代码 <el-dialog :title"上传附件" v-model"dialogAdds.visible" width"500px" append-to-body> <el-form-item label"唯一标识"> <dict-tag v-if"form.groupId" :options"unique_identifica…...
无线网络安全技术基础
无线网络安全技术基础 无线网络安全风险和隐患 随着无线网络技术广泛应用,其安全性越来越引起关注.无线网络的安全主要有访问控制和数据加密,访问控制保证机密数据只能由授权用户访问,而数据加密则要求发送的数据只能被授权用户所接受和使用。 无线网络在数据传输时以微波进…...
sheng的学习笔记-docker部署Greenplum
目录 docker安装gp数据库 mac版本 搭建gp数据库 连接数据库 windows版本 搭建gp数据库 连接数据库 docker安装gp数据库 mac版本 搭建gp数据库 打开终端,输入代码,查看版本 ocker search greenplum docker pull projectairws/greenplum docker…...
【投稿资讯】区块链会议CCF A -- SP 2025 截止6.6、11.14 附录用率
会议名称:46th IEEE Symposium on Security and Privacy( S&P) CCF等级:CCF A类学术会议 类别:网络与信息安全 录用率:2023年 195/1147,2024年录用了17篇和区块链相关的论文 Topics of interest inc…...
C++哪些函数不能被声明为虚函数
在C中,某些函数不能被声明为虚函数。下面详细解释哪些函数不能被声明为虚函数,并通过代码示例进行说明。 C哪些函数不能被声明为虚函数 不能声明为虚函数的函数示例代码及解释一、构造函数不能是虚函数二、静态成员函数不能是虚函数三、友元函数不能是虚…...
vue中数据已经改变了,但是table里面内容没更新渲染!
解决方案: 给table或者el-table标签上添加一个动态key值,只要数据发生改变,key值变动一下即可 标签上: :key“timeStamp” 初始data:timeStamp:0, 更新数据:this.timeStamp 这样每次更新数据ÿ…...
头歌实践教学平台:Junit实训入门篇
第2关:Junit注解 任务描述 给出一个带有注解的Junit代码及其代码打印输出,要求学员修改注解位置,让输出结果变为逆序。 相关知识 Junit注解 Java注解((Annotation)的使用方法是" 注解名" 。借助注解&a…...
matlab使用教程(80)—修改图形对象的透明度
1.更改图像、填充或曲面的透明度 此示例说明如何修改图像、填充或曲面的透明度。 1.1坐标区框中所有对象的透明度 透明度值称为 alpha 值。使用 alpha 函数设置当前坐标区范围内所有图像、填充或曲面对象的透明度。指定一个介于 0(完全透明)和 1&#x…...
mysql bin 日志转成sql
首先确定mysql binlog 服务开启 SHOW VARIABLES LIKE log_bin; 找到binlog日志 find / -name mysql-bin.* -type f 下载下来 本地找到mysql安装位置的bin目录 在窗口路径处直接输入cmd 执行 mysqlbinlog --no-defaults --base64-outputdecode-rows -v --start-datetime&…...
河南道路与桥梁乙级资质申请:注册证书与职称证书准备
在河南道路与桥梁乙级资质申请中,注册证书与职称证书的准备是不可或缺的环节。以下是关于如何准备这些证书的一些关键步骤和要点: 明确所需证书类型: 注册证书:这通常指的是相关专业的注册工程师证书,如注册土木工程师…...
3D工业视觉
前言 本文主要介绍3D视觉技术、工业领域的应用、市场格局等,主要技术包括激光三角测量、结构光、ToF、立体视觉。 一、核心内容 3D视觉技术满足工业领域更高精度、更高速度、更柔性化的需求,扩大工业自动化的场景。 2D视觉技术基于物体平面轮廓&#…...
使用auth_basic模块进行基础认证
在建立和维护Web服务器时,身份认证是一个至关重要的环节。Nginx作为一个高性能的Web服务器,支持许多认证方法,其中较为简单和常用的一种即是基础身份认证(Basic Authentication),这需要借助auth_basic模块实…...
深度解析物联网平台:优化数据点位管理的实战策略
策略管理 策略,作为在物联网平台数据点位创建过程中可设定的规则,涵盖了多个重要方面,策略是在创建点位的时候,可以设置的规则,包括存储策略、告警策略、通知策略以及联动策略。这些策略都是通过专门的列表页面进行集…...
Spring常见问题
如何理解spring属于低侵入式设计? 在代码中不需要写明具体依赖对象,在运行时进行自动注入,降低了组件的耦合依赖的是接口,而接口的实现类具有拓展性 Spring IOC 实现了什么功能,谈谈你对IOC的理解。 负责创建对象&…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...
uniapp 小程序 学习(一)
利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 :开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置,将微信开发者工具放入到Hbuilder中, 打开后出现 如下 bug 解…...
pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决
问题: pgsql数据库通过备份数据库文件进行还原时,如果表中有自增序列,还原后可能会出现重复的序列,此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”,…...
使用VMware克隆功能快速搭建集群
自己搭建的虚拟机,后续不管是学习java还是大数据,都需要集群,java需要分布式的微服务,大数据Hadoop的计算集群,如果从头开始搭建虚拟机会比较费时费力,这里分享一下如何使用克隆功能快速搭建一个集群 先把…...
