Redis 常用命令
目录
全局命令
1)keys
2)exists
3) del(delete)
4)expire
5)type
SET命令
GET命令
MSET 和 MGET命令
其他SET命令
计数命令
redis-cli
,进入redis
最核心的命令:我们这里只是先介绍 set 和 get 最简单的操作,后面有详细介绍
set: 存储 key 和 value
get: 根据 key 来取 value
key 和 value 的类型都是字符串
get 查询不存在的值会返回一个 nil
全局命令
1)keys
用来查询当前服务器上的匹配的 key
通过一下特殊符号(通配符)来描述 key 的模样,匹配上述模样的 key 就会被查出来。
keys pattern
,pattern 是包含特殊符号的字符串。
pattern 所支持的统配样式:
“?” 可以匹配任意一个字符
“ * ” 匹配 0 个或者多个任意字符
keys *
可以查询所有的 key
[ae] 只能匹配到 a/e 两个字符之一
[^e] 表示排除 e ,除了 e 之外可以匹配其他字符
[a-e] 匹配 a - e 范围内的字符,包含 a 和 e
注意:keys 的时间复杂度是 O(N)。在生产环境上,一般都会禁止使用 keys 命令。
2)exists
判定 key 是否存在。
exists key [key ...]
,返回值:返回 key 存在的个数
时间复杂度:O(N),此处的 N 是检查的 key 的个数
3) del(delete)
删除指定的 key,可以一次删除一个或者多个
del key [key ...]
, 返回值:返回删除 key 的个数
时间复杂度:O(N),此处的 N 是成功删除的 key 的个数
4)expire
给指定的 key 设置过期时间,key 存活时间超过这个指定的值,就会被自动删除。
expire key seconds
, expire 设置的时间单位是 秒。pexpire key 毫秒
, pexpire 设置的时间单位是毫秒
返回 0 表示设置失败,1 表示设置成功。
时间复杂度:O(1)。
ttl(time to live) 查询 key 的过期时间,单位秒。pttl 和 pexpire 搭配使用。
时间复杂度:O(1)。
返回值:剩余过期时间;-1 表示么有设置过期时间;-2 表示 key 不存在。
redis 的过期策略是怎么实现的?
如果直接遍历所有的 key,显然是不可能的,所有redis 采取了两种方式相结合:
1.定期删除
每隔一定时间,抽取一部分 key 检查是否到达删除时间,每次抽取一部分可以有效保证效率,不会浪费太多时间。 如果扫描过期 key 消耗的时间太多了,就可能会导致正常处理请求命令就阻塞了。
2.惰性删除
假设这个 key 已经到了过期时间,但是暂时还没有将其删除,key 依然存在,接下来再访问该 key 的时候,就会触发 redis 的删除操作,同时返回一个 nil。
redis 为了应对上述策略,还提供了一系列的内存淘汰策略。
5)type
type key
,返回 key 对应的 value 的数据类型。
SET命令
SET key value [NX | XX] [GET] [EX seconds | PX milliseconds |EXAT unix-time-seconds | PXAT unix-time-milliseconds | KEEPTTL]
NX:如果 key 不存在,才设置,如果 key 存在,则不设置(返回nil)
XX:如果 key 存在,才设置(相当于更新 key 的 value),如果 key 不存在,则不设置(返回nil)
EX:设置过期时间,单位秒
PS:设置过期时间,单位毫秒
EXAT:设置 key 过期的指定 Unix 时间(以秒为单位)
PXAT:设置 key 过期的指定 Unix 时间(以毫秒为单位)
KEEPTTL:保存与 key 相关联的生存时间
set key value ex 10
,就相当于set key value
和 expire key 10
。
因为 key2 已经过期了,所以我们在设置 key2 时加上 NX,成功设置 key2。由于 key1 已经存在,所以加上 NX 会返回一个 nil。
GET命令
GET key
,需要注意的是,GET 只能获取到字符串类型的 value,如果 value 是其他类型,使用 GET 获取就会出错!
MSET 和 MGET命令
MSET key value [key value]
,MSET 可以设置多组键值对,MGET key key
,MGET 可以获取多个 key 的 value。
MSET 和 MGET 的时间复杂度都是 O(N),N为 key 的个数。
其他SET命令
SETNX
:不存在才能设置,存在则设置失败。
SETEX
:设置 key 的过期时间(以秒为单位)
PSETEX
:设置 key 的过期时间(以毫秒为单位)
计数命令
incr 针对 value + 1
INCR key
,此时 key 对应的 value 必须是整数。
返回值:原 value +1 的结果
无论是字符串还是小数,还是太大的数(超出规定范围),都不能完成该操作
如果 incr 操作的 key 不存在,那么就会将这个 key 默认为0来操作
incrby 针对 value + n
INCRBY key increment
,incrby 的使用规则和 incr 一样,都只能对整数使用,我们就不再进行演示了。
incrby 不仅仅可以加一个正数,还能够加负数
decr 针对 value + 1
DECR key
返回值:返回 value-1 后的结果
对一个不存在的 key 进行该操作,同样默认该 key 的 value 为0
decrby 针对 value - n
DECRBY key decrement
incrbyfloat
incrbyfloat key increment
,把 key 对应的 value 进行 + - 运算,运算的操作数可以是浮点数
注意:Redis 中不存在 decrbyfloat
,只能通过 incrbyfloat
+ 负数来实现减法
相关文章:

Redis 常用命令
目录 全局命令 1)keys 2)exists 3) del(delete) 4)expire 5)type SET命令 GET命令 MSET 和 MGET命令 其他SET命令 计数命令 redis-cli,进入redis 最核心的命令:我们这里只是先介绍 set 和 get 最简单的操作…...
Integer.valueOf()用于字符和字符串的区别
LeetCode 17 电话号码的字母组合 先贴代码 class Solution {List<String> result new ArrayList<>();String temp new String("");Integer num;public List<String> letterCombinations(String digits) {dfs(digits, 0);return result;} publi…...

机械寿命预测(基于NASA C-MAPSS数据的剩余使用寿命RUL预测,Python代码,CNN_LSTM模型,有详细中文注释)
1.效果视频:机械寿命预测(NASA涡轮风扇发动机剩余使用寿命RUL预测,Python代码,CNN_LSTM模型,有详细中文注释)_哔哩哔哩_bilibili 环境库版本: 2.数据来源:https://www.nasa.gov/int…...

ConfigMaps-1
文章目录 主要内容一.使用 YAML 文件创建1.在data节点创建了一些键值:代码如下(示例): 2.解释 二.使用命令行创建1.创建了一个名为 person 的键值:代码如下(示例): 2.解释3.创建了一个 index.html 文件&…...
docker上安装es
安装docker 1 安装docker依赖 yum install -y yum-utils2 设置docker仓库镜像地址 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo3 安装制定版本的docker yum -y install docker-ce-20.10.17-3.el74 查看是否安装成功 y…...

#循循渐进学51单片机#c语言基础和流水灯实现#not.3
1、熟练掌握二进制、十进制和十六进制的转换方法。 多少进制就是多少之间相加,比如十六进制就是十六一次一加;二进制转化十六进制,分成四个一组。 2、C语言变量类型与取值范围,for、while等基本语句的用法。 for、while等基本语句…...

算法刷题 week3
这里写目录标题 1.重建二叉树题目题解(递归) O(n) 2.二叉树的下一个节点题目题解(模拟) O(h) 3.用两个栈实现队列题目题解(栈,队列) O(n) 1.重建二叉树 题目 题解 (递归) O(n) 递归建立整棵二叉树:先递归创建左右子树,然后创建根节点&…...

TCP详解之流量控制
TCP详解之流量控制 发送方不能无脑的发数据给接收方,要考虑接收方处理能力。 如果一直无脑的发数据给对方,但对方处理不过来,那么就会导致触发重发机制,从而导致网络流量的无端的浪费。 为了解决这种现象发生,TCP 提…...
mac根目录下创建文件不能问题
mac根目录下创建文件不能问题 解决办法2: 原因 mac os引入了系统完整性保护(SIP)机制,无法在/、/usr目录下新建文件 解决办法1: 打开终端,输入 csrutil status显示enabled表示启用了SIP,接下来需要禁用SIP…...
stable diffusion model训练遇到的问题【No module named ‘triton‘】
一天早晨过来,发现昨天还能跑的diffusion代码,突然出现了【No module named ‘triton’】的问题,导致本就不富裕的显存和优化速度雪上加霜,因此好好探究了解决方案。 首先是原因,由于早晨过来发现【电脑重启】导致了【…...
线性dp,优化记录,273. 分级
273. 分级 273. 分级 - AcWing题库 给定长度为 N 的序列 A,构造一个长度为 N 的序列 B,满足: B 非严格单调,即 B1≤B2≤…≤BN 或 B1≥B2≥…≥BN。最小化 S∑Ni1|Ai−Bi|。 只需要求出这个最小值 S。 输入格式 第一行包含一…...

JWT 安全及案例实战
文章目录 一、JWT (json web token)安全1. Cookie(放在浏览器)2. Session(放在服务器)3. Token4. JWT (json web token)4.1 头部4.1.1 alg4.1.2 typ 4.2 payload4.3 签名4.4 通信流程 5. 防御措施 二、漏洞实例(webgoa…...

Vue2+Vue3
文章目录 Vue快速上手Vue是什么第一个Vue程序插值表达式Vue核心特性:响应式 Vue指令v-htmlv-show 与 v-ifv-else 与 v-else-ifv-onv-bindv-forv-model指令修饰符 计算属性watch侦听器(监视器)watch——简写watch——完整写法 Vue生命周期 和 …...

华为云云耀云服务器L实例评测|redis漏洞回顾 MySQL数据安全解决 搭建主从集群MySQL 相关设置
前言 最近华为云云耀云服务器L实例上新,也搞了一台来玩,期间遇到过MySQL数据库被攻击的情况,数据丢失,还好我有几份备份,没有造成太大的损失;后来有发现Redis数据库被攻击的情况,加入了redis密…...

【C++】详解std::thread
2023年9月10日,周日下午开始 2023年9月10日,周日晚上23:35完成 虽然这篇博客我今天花了很多时间去写,但是我对std::thread有了一个完整的认识 不过有些内容还没完善,以后有空再更新.... 目录 头文件类的成员类型方法(construc…...

Apache HTTPD 漏洞复现
文章目录 Apache HTTPD 漏洞复现1. Apache HTTPD 多后缀解析漏洞1.1 漏洞描述1.2 漏洞复现1.3 漏洞利用1.4 获取GetShell1.5 漏洞防御 2. Apache HTTPD 换行解析漏洞-CVE-2017-157152.1 漏洞描述2.2 漏洞复现2.3 漏洞利用2.4 修复建议 3. Apache HTTP Server_2.4.49 路径遍历和…...
【C++从入门到精通】第2篇:C++基础知识(中)
文章目录 2.1 iostream介绍:cout、cin和endl2.1.1 输入/输出库2.1.2 std::cout2.1.3 std::endl2.1.4 std::cout是缓冲的2.1.5 std::endl与\n2.1.6 std::cin2.1.7 总结2.1.8 练习时间 2.2 未初始化的变量和未定义的行为2.2.1 未初始化的变量2.2.2 未定义行为2.2.3 明…...
【RuoYi移动端】uni-app中实现生成二维码功能(代码示例)
完整示例: <template><view><view class"titleBar">执法检查“通行码”信息</view><view class"twoCode"><canvas canvas-id"qrcode"></canvas></view></view> </templat…...

深度解剖数据在栈中的应用
> 作者简介:დ旧言~,目前大一,现在学习Java,c,c,Python等 > 座右铭:松树千年终是朽,槿花一日自为荣。 > 望小伙伴们点赞👍收藏✨加关注哟💕…...
Android10 SystemUI系列 需求定制(一)状态栏控制中心默认tile定制属性适配
一、前言 SystemUI 所包含的界面和模块比较多,这一节主要分享一下控制中心默认tile 列表的实现,通过配置可以实现 下拉状态栏,控制中心默认的tile显示 二、准备工作 按照惯例先找一下控制中心的代码,主要在下面这个路径下 frameworks/base/packages/SystemUI/src/com/andr…...

Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...

android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...
0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化
是不是受够了安装了oracle database之后sqlplus的简陋,无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话,配置.bahs_profile后也能解决上下翻页这些,但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可,…...

小智AI+MCP
什么是小智AI和MCP 如果还不清楚的先看往期文章 手搓小智AI聊天机器人 MCP 深度解析:AI 的USB接口 如何使用小智MCP 1.刷支持mcp的小智固件 2.下载官方MCP的示例代码 Github:https://github.com/78/mcp-calculator 安这个步骤执行 其中MCP_ENDPOI…...

【大模型】RankRAG:基于大模型的上下文排序与检索增强生成的统一框架
文章目录 A 论文出处B 背景B.1 背景介绍B.2 问题提出B.3 创新点 C 模型结构C.1 指令微调阶段C.2 排名与生成的总和指令微调阶段C.3 RankRAG推理:检索-重排-生成 D 实验设计E 个人总结 A 论文出处 论文题目:RankRAG:Unifying Context Ranking…...