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

本文主要详解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.mzph.cn/diannao/55377.shtml

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

相关文章

DCGAN生成漫画头像

tutorials/application/source_zh_cn/generative/dcgan.ipynb MindSpore/docs - Gitee.com 在下面的教程中,我们将通过示例代码说明DCGAN网络如何设置网络、优化器、如何计算损失函数以及如何初始化模型权重。在本教程中,使用的动漫头像数据集共有70,17…

python UNIT 3 选择与循环(2)

目录 1。循环的优化 经典优化分析: 未优化的代码: 细节分析: 优化后的代码: 优化的细节: 性能对比 优化的关键在于: 经典习题讲解:(紫色的解析请重点关注一下) 1。例三 个人代码解析…

linux常用的命令

一、cd:Change directory 修改工作目录 cd / #进入根目录 cd - #返回上次的目录 cd #返回home目录 cd ~ #返回home目录 cd ../ # 返回上一级目录二、ls:List files 列出目录内容 -a 列出包括.a开头的隐藏文件的所有文件 -A 通-a,但…

SpringMVC源码-AbstractUrlHandlerMapping处理器映射器将实现Controller接口的方式定义的路径存储进去

DispatcherServlet的initStrategies方法用来初始化SpringMVC的九大内置组件 initStrategies protected void initStrategies(ApplicationContext context) {// 初始化 MultipartResolver:主要用来处理文件上传.如果定义过当前类型的bean对象,那么直接获取&#xff0…

随笔(四)——代码优化

文章目录 前言1.原本代码2.新增逻辑3.优化逻辑 前言 原逻辑:后端data数据中返回数组,数组中有两个对象,一个是属性指标,一个是应用指标,根据这两个指标展示不同的多选框 1.原本代码 getIndicatorRange(indexReportLi…

java集合 -- 面试

Java集合框架体系 ArrayList底层实现是数组 LinkedList底层实现是双向链表 HashMap的底层实现使用了众多数据结构,包含了数组、链表、散列表、红黑树等 List ps : 数据结构 -- 数组 ArrayList源码分析 ArrayList底层的实现原理是什么? ArrayList list new…

Electron 进程通信

预加载(preload)脚本只能访问部分 Node.js API,但是主进程可以访问全部API。此时,需要使用进程通信。 比如,在preload.js中,不能访问__dirname,不能使用 Node 中的 fs 模块,但主进程…

数据挖掘中的常见误区与注意事项

一、引言 数据挖掘是一种通过算法和统计分析方法从大量数据中提取有价值信息的技术。 然而,在这个过程中,我们可能会遇到一些常见的误区。 二、常见误区及具体例子 1. 误区一:数据越多越好 某电商公司收集了数百万用户的购物数据&#xff0c…

简单两步,Spring Boot 定时任务也能动态设置

在Spring Boot项目中实现定时任务通常涉及到使用Scheduled注解,这种方式简单直接,但往往存在一个问题:一旦应用启动,定时任务的执行时间和频率就被固定下来了,难以在不重启应用的情况下进行动态调整。为了实现Spring B…

深度学习的未来:推动人工智能进化的新前沿

深度学习的未来:推动人工智能进化的新前沿 深度学习是近年来人工智能(AI)领域的核心技术,它在图像识别、自然语言处理和语音识别等多个领域取得了突破性进展。作为机器学习的一种,深度学习通过模拟人脑的神经网络结构…

第二十一章 (动态内存管理)

1. 为什么要有动态内存分配 2. malloc和free 3. calloc和realloc 4. 常⻅的动态内存的错误 5. 动态内存经典笔试题分析 6. 总结C/C中程序内存区域划分 1.为什么要有动态内存管理 我们目前已经掌握的内存开辟方式有 int main() {int num 0; //开辟4个字节int arr[10] …

Django 配置邮箱服务,实现发送信息到指定邮箱

一、这里以qq邮箱为例,打开qq邮箱的SMTP服务 二、django项目目录设置setting.py 文件 setting.py 添加如下内容: # 发送邮件相关配置 EMAIL_BACKEND django.core.mail.backends.smtp.EmailBackend EMAIL_USE_TLS True EMAIL_HOST smtp.qq.com EMAIL…

828华为云征文|部署多功能集成的协作知识库 AFFiNE

828华为云征文|部署多功能集成的协作知识库 AFFiNE 一、Flexus云服务器X实例介绍二、Flexus云服务器X实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置2.4 Docker 环境搭建 三、Flexus云服务器X实例部署 AFFiNE3.1 AFFiNE 介绍3.2 AFFiNE 部署3.3 AFFiNE 使用 四、…

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针对同一个用户,多次的密码尝试请求有锁定保护策略。 但是我们可以切换用户,…

MySQL高阶2082-富有客户的数量

目录 题目 准备数据 分析数据 题目 编写解决方案找出 至少有一个 订单的金额 严格大于 500 的客户的数量。 准备数据 Create table If Not Exists Store (bill_id int, customer_id int, amount int)Truncate table Storeinsert into Store (bill_id, customer_id, amoun…

深入浅出Java多线程(六):Java内存模型

引言 大家好,我是你们的老伙计秀才!今天带来的是[深入浅出Java多线程]系列的第六篇内容:Java内存模型。大家觉得有用请点赞,喜欢请关注!秀才在此谢过大家了!!! 在并发编程中&#xf…

vscode 的terminal 输出打印行数限制设置

修改 VSCODE 的 settings.json文件 "terminal.integrated.scrollback": 100000, {"extensions.ignoreRecommendations": true,"workbench.colorTheme": "Monokai","explorer.confirmDelete": false,"editor.fontSize…

Python+Matplotlib可视化初等函数示例

import numpy as np import matplotlib.pyplot as pltplt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] Falsefig, axs plt.subplots(2, 3, figsize(15, 10))# 1. 幂函数 x np.linspace(-2, 2, 200) axs[0, 0].plot(x, x**2, labely x^2) axs[0,…

leetcode135:分发糖果

步骤1:计算问题性质的定义 我们需要解决的题目是一个典型的贪心算法问题,要求分发糖果的数量,满足特定条件。以下是问题的详细定义: 输入: ratings:长度为 n 的数组,表示每个孩子的评分&#x…