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。例三 个人代码解析…

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…

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

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…

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…

畅阅读小程序|畅阅读系统|基于java的畅阅读系统小程序设计与实现(源码+数据库+文档)

畅阅读系统小程序 目录 基于java的畅阅读系统小程序设计与实现 一、前言 二、系统功能设计 三、系统实现 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|毕设布道师…

51单片机的宠物自动投喂系统【proteus仿真+程序+报告+原理图+演示视频】

1、主要功能 该系统由AT89C51/STC89C52单片机LCD1602显示模块温湿度传感器DS1302时钟模块蓝牙步进电机按键、蜂鸣器等模块构成。适用于猫猫/狗狗宠物自动喂食器等相似项目。 可实现基本功能: 1、LCD1602实时显示北京时间和温湿度 2、温湿度传感器DHT11采集环境温湿度 3、时…

数据在内存中的存储【上】

一.整型在内存中的存储 在讲解操作符的时候,我们就讲过了下面的内容: 整数的2进制表示方法有三种,即 原码、反码和补码 有符号的整数,三种表示方法均有符号位和数值位两部分,符号位都是用0表示"正"&#xff…

数据结构——计数、桶、基数排序

目录 引言 计数排序 1.算法思想 2.算法步骤 3.代码实现 4.复杂度分析 桶排序 1.算法思想 2.算法步骤 3.代码实现 4.复杂度分析 基数排序 1.算法思想 2.算法步骤 3.代码实现 4.复杂度分析 排序算法的稳定性 1.稳定性的概念 2.各个排序算法的稳定性 结束语 引…

在WPF中实现多语言切换的四种方式

在WPF中有多种方式可以实现多语言,这里提供几种常用的方式。 一、使用XML实现多语言切换 使用XML实现多语言的思路就是使用XML作为绑定的数据源。主要用到XmlDataProvider类. 使用XmlDataProvider.Source属性指定XML文件的路径或通过XmlDataProvider.Document指定…

IDEA 系列产品 下载

准备工作 下载 下载链接:https://www.123865.com/ps/EF7OTd-yVHnH 仅供参考 环境 演示环境: 操作系统:windows10 产品:IntelliJ IDEA 版本:2024.1.2 注意:如果需要其他产品或者版本可以自行下载&#xff0…