Resdis中关于字符串类型的基础命令

news2024/10/4 0:16:48

本文主要详解key-value中vaule为字符串类型的情况,value属于其他的数据类型不适应;有几个命令是通用命令

目录

1.set和get

2.keys 

3.exists

4.del 

5.expire

6.ttl

7.type

8.object encoding key

9.加减操作

10.字符串操作

11.命令小结

1.set和get

背景:redis存储数据是以键值对的形式,所以这两个命令就是最基础核心的两个,分别是存储键值对和取出键值对

主要学习下面几个命令:

set、get、mset、mget、setnx、setex、psetex

(1)set  语法:set key value,key和value默认为字符串,加或者不加单双引号都可以

存储了key为key1,value为value1的键值对,下面我们多存储几个,方便后的get命令。

(2)get  语法:get key,如果存在key,返回对应value值,否则返回nil

无论value在存储的时候以什么形式,返回的都是字符串形式,而且redis的命令是不区分大小写的

注意事项:get命令只能支持字符串类型的value,如果是其他类型,需要使用其他命令 

(3)进阶set

语法:setkey value [expiration EX seconds|PX milliseconds] [NX|XX]

含义:[]是可选项、里面的内容是二选一,下面介绍几种搭配

  • set key value  ex seconds

含义:设置key-value并且设置存活时间,单位秒s

  • set key value px milliseconds

含义:设置key-value并且设置存活时间,单位豪秒ms

  •  set key value nx

含义:如果key不存在,则创建;如果key存在,则不设置,返回nil(和默认值一样)

  •  set key value xx

含义:如果key存在,才设置,类似更新key的value;如果key不存在,则不会设置成功,返回nil

  • set key value ex seconds nx

含义:设置存活时间并且当key不存在时才会创建成功

(4)setnx

语法:setnx key value

含义:key不存在才能设置成功

(5)setex

语法:setex key seconds value

含义:设置key-value并且指定过期时间,单位秒s

(6)psetex

语法:psetex key milliseconds value 

含义:设置key-value并且指定过期时间,单位毫秒ms

 

(7)mset

语法:mset key1 value1 key2 value2

含义:同时设置多个key-value

时间复杂度:O(N),N为key的数量

(8)mget

语法:mget key1 key2 key3

含义:同时获取多个key的value

时间复杂度:O(N),N为key的数量

2.keys 

这是redis的一个全局命令。key固定是字符串,但是value可以是很多种数据类型,所以说全局命令就是可以随便搭配一个数据结构来使用。

语法:keys  通配符key,用来查询匹配的key值,也就是用来查询key的,不是查询value

这里的通配符有五种

先查看所有的key

(1)?

含义:任意匹配一个字符。也就是这个符号可以替换成任意符号

(2)*

含义:可以匹配0个或者多个任意字符

(3)[abcde]

含义:只能匹配[]中的字符,比如这里的abcde字符,其他字符不能匹配

(4)[^e]

含义:排除e字符,匹配除了e字符外的所有字符

(5)[a-b]

含义:可以匹配区间[a,b]的所有字符,其他字符不行

这些命令就类似mysql中的模糊查询,和select *一样,都需要谨慎使用,特别是keys *。

3.exists

语法:exists key1 key2 ……

含义:判断key值是否存在,可以同时判断多个。如果存在,返回存在的个数,否则返回0

(1)一次判断一个

(2)判断多个

  • 一般推荐一次查询多个,分开查询会消耗更多的网络资源,成本和时间也更加多。
  • 时间复杂度:O(m),m为查询的个数
4.del 

语法:del key1 key2 ……

含义:是delete的缩写,删除一个或者多个key,返回成功删除的个数

(1)一次删除一个

(2)一次删除多个

(3)这个操作在redis中不是应该很危险的操作

(4)时间复杂度:O(m),m为删除key的个数

5.expire

语法:expire key encods

含义:给指定的key设置过期时间,key存活时间超过就会自动被删除,默认单位是秒

(1)设置时间

(2)到达过期时间后

如果key过期后就会被删除

6.ttl

语法:ttl key

含义:查看key剩余的时间;如果key不存在,返回-2,key没有关联时间,发挥-1,其他则是返回剩余时间

(1)返回剩余时间

(2)不存在的key

(3)key没被设置过期时间

7.type

语法:type key

含义:返回key对应value的数据类型

(1)返回String

8.object encoding key

语法:object encoding key

含义:查看key对应的value的实际编码方式

(1)用法

9.加减操作

下面介绍的n为整数,时间复杂度都为1

(1)incr

含义:设置key对应的value+1,这里的value必须是整数

返回值:+1结果后的值

(2)incrby

含义:设置key对应的value+n

(3)decr

含义:设置key对应的value-1

(4)decrby

含义:设置key对应的value-n

(5)decrbyfloat

含义:设置key对应的value+n,n可以是任意数,包括浮点数和整数

10.字符串操作

(6)append

含义:在value后面拼接字符串,返回值为拼接好的字符串长度,单位字节

语法:append key value

(7)getrange

含义:截取范围区间的字符串,,范围为前闭后闭。返回也可以为负数,表示倒数第几个

语法:getrange key start end

(8)setrange

含义:修改区间范围内的字符串,从起始点开始修改,修改的内容为value,返回修改后的字符串长度

语法:setrange key offset value

(9)strlen

含义:求字符串长度,单位字节

语法:strlen key

11.命令小结

 

(1)通用命令小结

命令含义时间复杂度
keys *查看所有的keyO(m)
exists key1 key2 …返回key存在的个数O(m)
del key1 key2 …删除keyO(m)
expire key encods给对应key设置过期时间O(1)
ttl key获取key剩余过期时间O(1)
type key获取key对应value的数据类型O(1)
object encoding key查看key对应value的实际编码方式O(1)

(2)字符串类型命令小结

下面的命令操作的value都是为字符串类型,否则会报错

命令含义时间复杂度
set key value [key2 value]设置单个key-value
O(1)
get key获取key对应的value
O(1)
mset key value [key2 value]同时设置多个key-value
O(m)
mget同时获取多个key的value
O(m)
setnx设置key-value,key不存在才能设置成功
O(1)
setex设置kv并设置过期时间,单位秒/s
O(1)
psetex设置kv并设置过期时间,单位豪秒/ms
O(1)
incr key指定kye的value+1
O(1)
incrby key n指定kye的value+n
O(1)
decr key指定kye的value-1
O(1)
decrby key n指定kye的value-n
O(1)
incrbyfloat key n指定kye的value+n,n为有理数
O(1)
append key vlaue指定key的值追加value
O(1)
getrange key start end获取指定key的值的范围值
O(1)
setrange key offset value修改指定key的值的范围值
O(1)
strlen key获取指定key的长度
O(1) 

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

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

相关文章

拿下奇怪的前端报错:SyntaxError: Unexpected token ‘??=‘或‘xxx‘ - 浅谈Nodejs版本过高过低的部分问题

在前端开发时,如果同时维护多个项目,跨越的年度又比较大,难免会使用多个Nodejs版本。有时候版本不对,不仅仅是安装会报错 1 依赖无法安装 一般情况下nodejs又向后兼容较好(除了部分三方包),所…

day03-js 作业

js基础 一.选择 1C 2C 3D 4C 5B 6B 7C 8A 二.编程 2 函数 数组与对象 一.选择 1D 2C 3D 4A 5D 6B 7B 8A 二.编程 1 2 4

Linux驱动开发(速记版)--设备树插件

第六十八章 设备树插件介绍 Linux 4.4之后引入了动态设备树,其中的设备树插件(Device Tree Overlay)是一种扩展机制,允许在运行时动态添加、修改或删除设备节点和属性。 设备树插件机制通过DTS(设备树源文件&#xff0…

50.哀家要长脑子了!

1.1705. 吃苹果的最大数目 - 力扣(LeetCode) 贪心贪在哪里,用一个优先队列(小根堆)存储腐烂日期和该日期苹果腐烂的数量。优先吃掉距离腐烂日期最近的苹果。吃苹果分为两个阶段,第一个是在1-n天内&#xff…

MySQL 中的 LAST_INSERT_ID()函数详解

在 MySQL 数据库中,LAST_INSERT_ID()是一个非常有用的函数。它可以帮助我们获取最近一次插入操作所生成的自增 ID 值。本文将详细解释 MySQL 中的LAST_INSERT_ID()函数及其用途。 一、函数介绍 LAST_INSERT_ID()是 MySQL 中的一个内置函数,它返回最近一…

跨平台音乐播放器Feishin

什么是 Feishin ? Feishin 是一款现代的自托管音乐播放器,支持多种音乐来源和功能。它是由Sonixd 的重构版本发展而来,能够与 Navidrome 或 Jellyfin API 音乐服务器兼容,目前还不支持 Subsonic API 。Feishin 具有现代化的用户界…

【mmsegmentation】Loss模块详解(入门)以调用FocalLoss为例

1、mmdet中损失函数模块简介 1.1. Loss的注册器 先来看段代码:mmseg/models/builder.py # mmseg/registry/registry.py # mangage all kinds of modules inheriting nn.Module # MODELS Registry(model, parentMMENGINE_MODELS, locations[mmseg.models])from mm…

风格迁移项目一:如何使用

前言 由于我不太会pr,所以直接新建的项目, 原项目地址:https://github.com/Optimistism/Style-transfer 原项目代码的讲解地址:https://www.bilibili.com/video/BV1yY4y1c7Cz/ 本项目是对原项目的一点点完善。 项目地址&…

C语言复习概要(一)

本文 C语言入门详解:从基础概念到分支与循环1. C语言常见概念1.1 程序的基本结构1.2 变量作用域和存储类1.3 输入输出1.4 编译与运行 2. C语言中的数据类型和变量2.1 基本数据类型2.2 变量的声明与初始化2.3 常量与枚举 3. C语言的分支结构3.1 if语句3.2 if-else语句…

Python笔记 - 函数、方法和类装饰器

前言 装饰器最早出现是Python2.4版本,为什么这个版本开始存在?这是因为最早标记类方法的做法是: def foo(self):perform method operation foo classmethod(foo)当方法体过长的时候很容易让人忽略掉最后的语句classmethod(foo)&#xff0c…

Win10之解决:设置静态IP后,为什么自动获取动态IP问题(七十八)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【…

域内密码喷洒 Password Spray 实验

password spray 1. 实验网络拓扑 kali: 192.168.72.128win2008: 192.168.135.129 192.168.72.139win7: 192.168.72.149win2012:(DC) 192.168.72.131 2. 简单原理 Kerberos针对同一个用户,多次的密码尝试请求有锁定保护策略。 但是我们可以切换用户,…

【Streamlit案例】制作销售数据可视化看板

目录 一、案例效果 二、数据分析 三、加载数据 四、网站前端 (一)网页标题和图标 (二)侧边栏和多选框 (三)主页面信息 ​(四)主页面图表 (五)隐藏部…

基于四种网络结构的WISDM数据集仿真及对比:Resnet、LSTM、Shufflenet及CNN

在上节中,我们已经详细介绍了WISDM数据集及如何使用CNN网络训练,得到了六个维度的模型仿真指标及五个维度的可视化分析,那么现在我们将训练模型推广到其他网路结构中去,通过仿真实验来对比一下不同网络之间对于WISDM数据集的训练效…

【docker笔记8-镜像推送】

docker笔记8-镜像推送 一、基本命令二、案例1.Java demo2.打包镜像 一、基本命令 (1)推送镜像到远程仓库 docker tag local-image:tagname new-repo:tagname docker push new-repo:tagname这里首先要登录到docker,然后需要输入登录用户名和…

构建electron项目

1. 使用electron-vite构建工具 官网链接 安装构建工具 pnpm i electron-vite -g创建electron-vite项目 pnpm create quick-start/electron安装所有依赖 pnpm i其他 pnpm -D add sass scss1. 启动项目 2. 配置 package.json "dev": "electron-vite dev --…

【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错

1. 运行项目 import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Appl…

Chromium 修改UA的几种办法方法c++

第一种方式 启动浏览器添加命令行 格式 --user-agent"自定义的UA" 1、C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chrome.exe --user-agent"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome…

vgg19提取特征

一般来说,大家使用VGG16,用的是第四列的网络架构,而使用VGG19,使用的就是第六列的网络架构。 使用vgg进行提取特征,在这个项目中,使用的就是每一块卷积层的第一层。 import torch.nn as nn from torchvis…

T10:数据增强

T10周:数据增强 **一、前期工作**1.设置GPU,导入库2.加载数据 **二、数据增强****三、增强方式**方法一:将其嵌入model中方法二:在Dataset数据集中进行数据增强 **四、训练模型****五、自定义增强函数****六、总结** 🍨 本文为&am…