Redis——常用指令汇总指南(一)

目录

1.set & get

①set指令

②get指令

2.keys

3.del

4.expire & setex & psetex

5.ttl

6.exists

7.setnx

8.flushall

 9.object encoding

10. type


1.set & get

        set & get指令中key和value都是字符串,但是不需要加单引号或双引号。

        需要补充的是我们输入的value对于redis服务器而言是字符串,但是在存储时服务器会按内容找合适的类型存储。比如说当value是hello时,redis直接按短字符串(embstr)存;而value是数字时,redis服务器会把字符串转化为对应整数类型(int)存储。

①set指令

        set用于设置key和value对应关系。使用时一个key只能对应一个value,其用法如下:

set  key  value  [ex t | px t]  [nx | xx] 

        举例如下(未加可选字段):

        可选字段中ex和px用于设置过期时间,类比expire指令;ex以秒为单位,px以毫秒为单位。 

 使用时操作如下:

        可选字段nx代表当前数据库中该key不存在时,可以设置该KV并返回1,若key已存在则不设置并返回0。xx与nx正相反,若数据库中key存在则设置value并返回1,若key不存在则不设置并返回0。

        简单说就是nx用于创建KV,xx用于更新KV。举例如下:

         当然,对同一个key进行多次set会更新对应value:

②get指令

        get是根据key来获取value。其用法如下:

get  key

        返回:当KV映射关系存在时,自然是返回对应的value;当redis中没有此映射时会返回nil,即空,可以类比C++中的NULL。需要注意的是,get要求value必须是string类型,否则报错。

        当存在对应KV映射时, 返回对应的value :

        当不存在对应KV映射时,返回nil:

        当value非string类型时,报错: 

2.keys

        keys指令用于查询key值,其使用方式如下:

keys  pattern

        所谓pattern就是描述我想查询的key是什么样。如果是某个具体的key,那直接传名字就好;如果是范围查询,那就通过通配符进行模糊匹配。

常见的通配符如下:

通配符含义使用方式可匹配示例
?匹配任意一个或零个字符keys   ap?leapple  aple
*匹配任意多个字符keys   a*leapaale apable
[^ae]排除字符a和ekeys   ap[^p]leaple apple
[a-e]匹配a到e范围内的任意一个字符keys   ap[a-z]leapale apele
[acexz]只能匹配acexz中任意一个字符keys   ap[puqt]leapple  app

示例如下: 

        这里我们需要重点强调一下,keys * 操作可以查询当前Redis中所有的key,但是,在实际工作中,keys *极其危险。因为这是一个o(n)的操作,而Redis是一个单线程服务器,所以当Redis中有大量的key时,进行全局查询势必会消耗大量时间,影响其他客户端的操作请求,尤其是在生产环境中,这可能造成灾难性的后果。比如说,当进行keys *操作后,其他客户端随后访问Redis而发生超时,那么就会直接访问mysql,但mysql运载能力有限,若访问量太大很有可能直接就崩了。

3.del

        del指令用于删除指定的KV键值对。在使用时可以一次性删除多个key。

del  key1  key2  ...

       返回值是本次操作所删key的个数。

        对于del需要说明的是,相比于mysql数据库,对Redis中的数据发生del误操作的后果并没有那么重,因为Redis可以理解为是mysql中部分数据在内存中的拷贝,只要“根基”还在就能恢复。当然,对任何数据库中数据进行删除都应三思后行。

4.expire & setex & psetex

        ①expire指令用于设置特定key的过期时间。设置成功返回,失败返回0.

        ②setex指令是在设置KV时直接指定过期时间(秒为单位)。类比set的ex可选字段。

        ③psetex指令与setex相同,但过期时间以毫秒为单位。

expire  key  time

setex  key  time  vlaue   #一定要注意time 在前value在后

psetex  key  time  value

        使用示例如下: 

         相比而言,setex和psetex用于既需要更新过期时间又需要更新(或创建KV)value的场景,而expire用于更新过期时间但不需要更新value的场景。

5.ttl

        ttl指令用于查询特定key的过期时间。

        返回值有三种类型,返回0及以上正数代表剩余时间,返回-2代表已经过期,返回-1代表所查询的key没有设置过期时间。

ttl  key

        使用示例如下:

6.exists

        exists指令用于查询key在数据库中是否存在,查询的时间复杂度是o(1)。该指令支持批量查询,可一次性查询多个key。其返回值是所查询到存在的key的数量。

exists  key1  key2  ...

        使用示例如下: 

7.setnx

        setnx指令即set指令+可选字段nx,用于确保所设置的KV在指令之前不存在。

        当setnx执行成功时会返回1,失败则返回0。

setnx  key  value

使用示例如下:
 

8.flushall

flushall指令一键删除所有键值对。用前三思哦~

flushall 

 9.object encoding

该指令用于查询value的编码方式。(而非类型,类型用type查)

object encoding key

使用示例如下: 

10. type

用于查询value的类型。

type  key

使用示例如下: 


如有错误,敬请斧正 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PDF处理控件Aspose.PDF教程:在 Java 中删除 PDF 页面

您是否需要使用 Java 从PDF文档中删除特定页面?无论您是要清理空白页、删除机密部分,还是仅仅在分发前调整内容,以编程方式操作 PDF 页面的能力都将大有裨益。本指南将向您展示如何借助Aspose.PDF仅用几行代码删除不需要的页面。让我们深入了…

RediSearch 字段类型与配置选项

1. 数值字段(NUMERIC) 用途:存储整数或浮点数,可进行范围查询与排序。 选项: SORTABLE:允许用 SORTBY 排序NOINDEX:不参与索引,仅供返回 定义语法 FT.CREATE idx ON HASH PREFIX…

PHP Yii2 安装SQL Server扩展-MAC M4 Pro芯片

MAC M4 Pro芯片版本,千锤百炼编译十几次终于成功 # 设置基础镜像并强制使用 x86_64 架构(适配 M4 芯片) FROM --platformlinux/amd64 php:8.1-fpm-alpine3.18WORKDIR /var/www/html# 可选:设置时区 ARG TZAsia/Shanghai ENV TZ${…

HTML初学者第二天

<1>HTML的语法规范 1.1标签 -双标签&#xff1a;如 <html></html> 前面的叫开始标签&#xff0c;后面的叫结束标签。 -单标签&#xff1a;如 <br /> 1.2基本语法概述 -HTML标签是由尖括号包围的关键词&#xff0c;例如<html>。 -HTML标…

【加解密与C】HASH系列(二) SHA

SHA&#xff08;安全散列算法&#xff09;简介 SHA&#xff08;Secure Hash Algorithm&#xff09;是由美国国家安全局&#xff08;NSA&#xff09;设计的一系列密码散列函数&#xff0c;用于将任意长度的数据转换为固定长度的散列值。SHA家族包括SHA-1、SHA-2&#xff08;含S…

【Python】进阶 - 数据结构与算法

系列篇章&#x1f389; No.文章1【Python】基础知识&#xff08;详细&#xff09;&#x1f680;2【Python】基础 - 循环、容器类型&#x1f680;3【Python】基础 - 推导式、函数&#x1f680;4【Python】基础 - 文件、异常、模块&#x1f680;5【Python】进阶 - 面向对象&…

【如何实现分布式压测中间件】

分布式压测中间件的原理及其实现 原理全链路追踪框架&#xff08;Trace&#xff09;MQ中间件数据库分布式缓存中间件&#xff08;Redis&#xff09;分库分表中间件 原理 通过大量阅读中间件源码&#xff0c;开源社区调研&#xff0c;得到设计原理&#xff1a; &#xff08;1&a…

Qt进程间保活方案:详解如何实现进程间通信与自动保活机制

目录 摘要 一、进程间保活的基本原理 二、具体步骤及代码示例 三、常见问题与优化 四、总体方案 摘要 在一些需要长时间运行的应用程序中&#xff0c;确保进程在意外退出时能够自动重启是一项非常重要的任务。尤其是在嵌入式开发、后台服务以及需要高可用性的场景下&#x…

Python-内置数据结构-list-tuple-bubble-字符串-bytes-bytesarray-切片-学习笔记

欠4年前自己的一份笔记&#xff0c;献给今后的自己。 分类 数值型 int、float、complex、bool 序列对象 字符串 str 列表 list tuple 键值对 集合set 字典dict 数值型 int、float、complex、bool都是class&#x…

利用事务钩子函数解决业务异步发送问题

利用事务钩子函数解决业务异步发送问题 一、问题背景二、实现方案1、生产者代码2、消费者代码 三、测试与验证1、未开启事务场景2、开启事务场景 四、项目结构及源码 一、问题背景 在某项业务中&#xff0c;需要在事务完成后&#xff0c;写入日志到某数据库中。需要要么都成功&…

uniapp选择相册

概述 一款针对Android平台下的图片选择器&#xff0c;支持从相册获取图片、视频、音频&拍照&#xff0c;支持裁剪(单图or多图裁剪)、压缩、主题自定义配置等功能&#xff0c;支持动态获取权限&适配Android 5.0系统的开源图片选择框架。 支持Uniapp和Uniapp X下的Vue2、…

MAC 多应用切换技巧,单应用切换技巧

在 Mac 上&#xff0c;有几种快捷键可以帮助你快速切换应用程序窗口&#xff1a; 1. Command (⌘) Tab - 这是最常用的快捷键&#xff0c;用于在打开的应用程序之间进行循环切换。按住 Command 键不放&#xff0c;然后反复按下 Tab 键可以选择下一个应用程序。当你松开 Comm…

SpringBoot+本地部署大模型实现知识库功能

SpringBoot本地部署大模型实现RAG知识库功能 1、Linux系统部署本地大模型1.1 安装ollama1.2 启动ollama1.3 下载deepseek模型 2、Springboot代码调用本地模型实现基础问答功能3、集成向量数据库4、知识库数据喂取5、最终实现RAG知识库功能 1、Linux系统部署本地大模型 1.1 安装…

嵌入式原理与应用篇---ARM

ARM 架构的 STM32 系列微控制器广泛应用于嵌入式系统开发&#xff0c;理解其汇编语言指令对于优化性能、访问硬件底层非常重要。下面详细解释常见的 ARM 汇编指令及其使用实例。 数据处理指令 1. MOV&#xff08;移动&#xff09; 功能&#xff1a;将立即数或寄存器值复制到…

【RHCSA-Linux考试题目笔记(自用)】servera的题目

一、开始 1、启动rhcsa环境 2、点击题目&#xff0c;看题 3、通过控制器来启动所有虚拟机 控制器 打开后点start&#xff0c;然后ok 之后进入一个有classroom、servera、serverb&#xff08;考试不一定叫这些名&#xff0c;但大差不差&#xff09;什么之类的界面&#xff0c;…

SpringBoot项目使用arthas-tunnel-server

参考官网Arthas Spring Boot Starter | arthas Spring Boot系列之使用Arthas Tunnel Server 进行远程调试实践-腾讯云开发者社区-腾讯云 springBoot项目, 增加maven依赖 <dependency><groupId>com.taobao.arthas</groupId><artifactId>arthas-sprin…

Modbus TCP 进阶:基于以太网的远程设备控制(二)

基于 Modbus TCP 的远程设备控制实战 &#xff08;一&#xff09;硬件与网络搭建实操 1. 设备选型与连接 在工业现场&#xff0c;根据远程控制需求进行设备选型至关重要 。对于传感器&#xff0c;若要监测温度&#xff0c;可选择高精度的热电偶传感器&#xff0c;如 K 型热电…

分库分表之实战-sharding-JDBC

大家好&#xff0c;我是工藤学编程 &#x1f989;一个正在努力学习的小博主&#xff0c;期待你的关注实战代码系列最新文章&#x1f609;C实现图书管理系统&#xff08;Qt C GUI界面版&#xff09;SpringBoot实战系列&#x1f437;【SpringBoot实战系列】Sharding-Jdbc实现分库…

httpcore-nio引起的线程、fd泄露问题

依赖来源&#xff1a;httpasyncclient-4.1.4.jar 现象 程序报错too many open files 线程数飙升、句柄数飙升 thread dump显示大量 "I/O dispatcher 7215" #9102 prio5 os_prio0 tid0x00002b7ba036a800 nid0x6f24 runnable [0x00002b7d98d41000]java.lang.Thread.…

多线程生产者消费者模型实战案例

多线程生产者消费者模型实战案例 前言业务场景术前准备无锁无事务有事务 synchronized事务在锁外事务在锁内 数据库行锁什么是数据库行锁有事务没有事务 乐观锁ReentrantLock分布式锁 前言 曾经一直有一个疑惑&#xff0c;就是关于多线程生产者消费者模型的学习过程中&#xf…