【Redis】Redis常用命令-getsetkeysexistsexpirettltype

文章目录

  • 读取文档注意事项
  • set命令
  • get命令
  • 全局/通用命令
    • KEYS
    • EXISTS
    • DEL
    • EXPIRE
    • TTL
    • TYPE

读取文档注意事项

官方文档链接:https://redis.io/

注意:redis的命令不区分大小写

在redis文档给出的语法格式说明:

[]:相当于一个独立的单元,表示可选项,可有可无,[][]之间可以同时存在

|:或者的意思,多个只能出现一个

关于O(N)

N可以表示的含义:

  • 1.redis当中key的个数
  • 2.当前命令当中写的key的个数 =>此时可以看作是O(1)
  • 3.当前key对应的value里面的元素个数

关于有序

1.指的是 升序 / 降序

2.指的是顺序很关键,如果把元素位置颠倒,顺序调换,那么得到的内容会出错

修改配置文件

配置文件的路径为:/etc/redis/redis.conf,如果修改配置文件需要重新启动服务器才能生效

set命令

功能:存储K-V ,set可以填写两个参数(key-value),参数类型必须是字符串

  • 对于上述key-value,不需要加""就是表示字符串的类型,给他们加上双引号或单引号都可以

get命令

功能:根据Key获取Value。get 后跟key,就可以得到value,并且是带双引号,是字符串类型的。

  • 如果不存在key,就会返回nil,和null一个意思

image-20231020203333900


全局/通用命令

redis支持很多数据结构,整体上来说是键值对结构,k固定是字符串,v可以有多种类型,最常见的类型为:字符串,哈希表,列表,集合,有序集合。

操作不同的数据结构,都会有不同的命令,但是还有一些命令,在这些数据结构上都能使用,称作全局命令


KEYS

功能:用来查询当前服务器上匹配的key,可以通过一些特殊符号(通配符)来筛选key

命令语法: :KEYS pattern(样式、模式,描述字符串的模样)

1.*:匹配任意字符序列(0个或者多个任意字符)

  • KEYS * 匹配所有的键,展示当前服务器上所有的key
  • KEYS prefix* 匹配以 “prefix” 开头的键,如 “prefix123”、“prefixabc”。
  • KEYS *suffix 匹配以 “suffix” 结尾的键,如 “abcsuffix”、“defsuffix”

image-20231020204548359

2.?:匹配单个字符

  • KEYS key? 匹配以 “key” 开头,并且后面跟着一个字符的键,如 “key1”、“keyA”。

image-20231020204616760

3.[字符 abc]:匹配在括号内的任一字符

  • KEYS key[123] 匹配以 “key” 开头,并且后面跟着 “1"或"2” 或 “3” 的键,如 “key1”、“key2”、“key3”。

image-20231020204637027

4.[范围 a-b]:匹配在范围内的任一字符

  • KEYS key[1-5] 匹配以 “key” 开头,并且后面跟着数字1~5任意一个数字的键,如 “key1”、“key2”、“key3”。
  • KEYS k[a-b]ey 匹配以 “k” 开头,并且后面跟着字母a-b任意一个字母的键,如 “kaeyd”、“kbey”。

image-20231020204713024

5.[^字符]:匹配不在括号内的任一字符

  • KEYS key[^abc] 匹配以 “key” 开头,并且后面跟着的不是 “a"或"b” 或 “c” 的字符的键

image-20231020204731538

注意:keys 的时间复杂度是 O ( N ) O(N) O(N),因为需要遍历所有的key,然后匹配出符合要求的键,所以在生产环境当中一般禁止使用keys,尤其是keys *,它是匹配redis中的所有键,由于生产环境中key非常多,redis是一个单线程的服务器,就会导致执行keys *时间非常长,那么redis服务器就被阻塞,无法为其它客户端提供服务,给用户体验造成影响

redis的一个经典用途就是作为数据冷热分离的热点数据缓存,热点数据首先是去查redis的,如果redis被阻塞了,此时其它的查询redis操作就超时了,此时这些请求只能去查数据库了,大量的数据同时请求数据库的查询,可能会导致过载,数据库也无法正常提供服务了,整个系统基本就处于瘫痪状态


EXISTS

功能:用于检查给定键是否存在于数据库中。接受一个或多个键作为参数,并返回存在的键的数量

时间复杂度:$ O(1)$

命令语法: :EXISTS key [key ...]

例如:检测key1和key2是否存在

  • 写法1:写两条redis命令
  • 写法2:写一条redis命令

image-20231020204936431

上述哪种写法更好呢?

因为redis是基于客户端-服务器架构的,通过网络通信的中间件。因此上述分开查询key是否存在和同时检查多个键是否存在是有区别的,分开查询的写法,会产生更多次数的请求响应,也即网络通信。和直接操作内存来说,网络通信成本比较高,效率比较低,而同时检查多个键只需要一次请求响应,减少网络通信

image-20231020205222170

所以redis支持一个命令能操作多个key来减少网络通信


DEL

功能:删除指定的key。和EXISTS命令相同,也可以支持操作多个key,返回删除key的个数

时间复杂度: O ( 1 ) O(1) O(1)

命令语法: DEL key [key......]  

在redis当中删除,和mysql中的删库删表来说危险性比较低,因为redis是作为缓存,如果丢失少量的数据,问题不大,而MySQL不能丢失数据,丢失了数据就可能后续查不到了

但是如果丢失大批的数据,那么客户端来的查询先去redis当中进行查找,找不到就会到MySQL当中进行查找,就可能会导致MySQL过载,导致系统瘫痪。


EXPIRE

功能:用于为键设置过期时间。接受两个参数:键 以秒为单位的过期时间

  • 设置键的过期时间 过期时间到达后,该键将自动被删除

注意:key必须已经存在才能设置,如果设置成功返回1,失败返回0

时间复杂度: O ( 1 ) O(1) O(1)

命令语法: EXPIRE  key  seconds   

image-20231020212530487

补充:基于redis实现的分布式锁,为了避免出现不能正确解锁的情况,加锁时通常会设置一个过期时间,时间到达之后会自动解锁


TTL

功能:检查键的过期时间

返回:要检查的键的剩余过期时间,以秒为单位,

  • 如果键不存在 或者 没有设置过期时间,则返回-1
  • 如果键已经过期,则返回-2

时间复杂度: O ( 1 ) O(1) O(1)

命令语法: TTL key 

image-20231020212437831

注意:EXPIRE和TTL命令都有对应的⽀持毫秒为单位的版本:PEXPIRE和PTTL


TYPE

功能:用于获取指定键的数据类型

可能返回的结果为:none string list hash set zset stream (redis作为消息队列的时候会使用这个类型作为value)

命令语法: TYPE key

使用例子:

返回值为"string",表示键"mykey"的数据类型是字符串(String)。
127.0.0.1:6379> type mykey
string
 
返回值为"list",表示键"mylist"的数据类型是列表(List)。
127.0.0.1:6379> LPUSH mylist "value"
(integer) 1
127.0.0.1:6379> type mylist
list
 
返回值为"set",表示键"myset"的数据类型是集合(Set)。
127.0.0.1:6379> SADD myset "value"
(integer) 1
127.0.0.1:6379> type myset
set

返回值为"hash",表示键"myhash"的数据类型是哈希(Hash)。
127.0.0.1:6379> HSET myhash field "value"
(integer) 1
127.0.0.1:6379> type myhash
hash
 
返回值为"zset",表示键"myzset"的数据类型是有序集合(Sorted Set)。
127.0.0.1:6379> ZADD myzset 1 "value"
(integer) 1
127.0.0.1:6379> type myzset
zset
 
返回值为"nil",表示键"nonexistingkey"不存在。
127.0.0.1:6379> TYPE nonexistingkey
none

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

面试—如何介绍项目中的多级缓存?

项目中使用的多级缓存也就是 分布式缓存 Redis 本地缓存 Caffeine,那么令 Caffeine 作为一级缓存,Redis 作为二级缓存,在项目中通过记录数据的访问次数,将热点数据放在 本地缓存,将非热点数据放在 Redis缓存 中&#…

详解RSA加密算法 | Java模拟实现RSA算法

目录 一.什么是RSA算法 二.RSA算法的算法原理 算法描述 三.RSA算法安全性 四.RSA算法的速度 五.用java实现RSA算法 一.什么是RSA算法 1976年,Diffie和Hellman在文章“密码学新方向(New Direction in Cryptography)”中首次提出了公开…

FSB逮捕为乌克兰网络部队工作的俄罗斯黑客

导语 近日,俄罗斯联邦安全局(FSB)逮捕了两名涉嫌协助乌克兰网络部队对俄罗斯重要基础设施目标进行网络攻击的个人。这起事件引起了广泛关注,涉及到了网络安全和国际关系等多个领域。本文将为您详细介绍这一事件的背景和最新进展。…

强大的pdf编辑软件:Acrobat Pro DC 2023中文

Acrobat Pro DC 2023是一款强大的PDF编辑和管理软件,它提供了广泛的功能,使用户能够轻松创建、编辑、转换和共享PDF文档。通过直观的界面和先进的工具,用户可以快速进行文本编辑、图像调整、页面管理等操作,同时支持OCR技术&#…

IOS渲染流程之提交图层数据至RenderThread进程

大致链路 UIView/CALayer---->CoreAnimation./Core Graphics/Core Image---->GPU Drive-->GPU 图层树/视图树 一个UIView(视图)对应一个CALayer(图层),CALayer对应显示的数据其有个content代表Bitamp&#…

firefox浏览器添加自定义搜索引擎方法

firefox浏览器添加自定义搜索引擎方法 1.在地址栏添加搜索引擎2.Mycroft Project 搜索引擎附加组件3.通过扩展插件添加自定义搜索引擎 Firefox这货居然不支持直接网址%s的搜索引擎定义方式,以下是添加方法。 firefox国际版119.0 1.在地址栏添加搜索引擎 &#xff…

使用vscode实现远程开发,并通过内网穿透在公网环境下远程连接

文章目录 前言1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar内网穿透4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程 前言 远程…

什么是Webpack的loader和plugin?它们的作用是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

vue2和vue3区别

Vue2 和 Vue3 双向绑定方法不同 总结 vue3中没有$set Vue2 和 Vue3 双向绑定方法不同 Vue2 : Object.defineProperty() Vue3 : new Proxy()vue3 实例 数据会更新 const addBtn () >{obj.c 3; } vue2实例 问题:数据更新了视图没更新 Object.defineProperty…

VR全景在医院的应用:缓和医患矛盾、提升医院形象

医患关系一直以来都是较为激烈的,包括制度的不完善、医疗资源紧张等问题也时有存在,为了缓解医患矛盾,不仅要提升患者以及家属对于医院的认知,还需要完善医疗制度,提高医疗资源的配置效率,提高服务质量。 因…

turn.js 模版简单使用

turn.js 不修改添加原功能仅 替换、修改图片格式使用模版 HTML文件 turn.js官网:http://www.turnjs.com/# 第一步 1.点击链接去到官网 2.点击下载按钮 下载左侧示例压缩包 3.解压完成拿到示例文件 turnjs4 4.在samples目录下案例中查看意向使用的模版样式 …

视频会议系统方案报价

视频会议系统 报价方案是咨询视频会议系统价格用户所关注的,但是报价是一个比较细致的工作,需要从多维度进行对比。 1. 视频会议终端设备费用:根据所需设备的数量和所选设备价格确定。视频会议终端类型各异,摄像头、麦克风、显示设…

UWB 技术在机器人和移动领域的应用题】

多年来,机器人生态系统不断增长,不同的应用程序也在不断增长。如今,机器人出现在许多不同的领域,例如私人家庭、商业场所、仓库和医疗场所。他们要么自主工作,要么与我们并肩工作,帮助我们完成任务。 根据…

S5PV210(十):LCD

本文主要探讨210的LCD相关知识。 LCD LCD称液晶(透光背光呈色),可在电信号驱动下使液晶分子旋转,呈现不同的颜色(被动发光) lcd接口为TTL接口(5V为1,0V为0),不能传输太远,远距离传输方式:SoC(TTL) ->VGA-> LCD(TTL) 其他显设备:CRT(…

【错误解决方案】TypeError: gca() got an unexpected keyword argument ‘projection‘

1. 错误提示 在 python程序中,使用Matplotlib库中的 gca() 函数出现错误,提示“TypeError: gca() got an unexpected keyword argument projection”。 2. 解决方案 这个错误的原因是 gca() 函数并不接受 projection 这个关键字参数。 gca() 函数是用来…

js调整table表格上下相邻元素顺序

有时候我们会遇到要通过箭头控制table表格上下顺序的需求,如下: 点击向下就将该元素下移一位,下面的一位元素就移上来,点击向上就将该元素上移一位,上面的一位元素就移下来,也就是相邻元素互换位置顺序: <el-table :data="targetTable" border style=&quo…

【深度学习 AIGC】stable diffusion webUI 使用过程,参数设置,教程,使用方法

文章目录 docker快速启动vae.ckpt或者.safetensorsCFG指数/CFG Scale面部修复/Restore facesRefinerTiled VAEClip Skipprompt提示词怎么写 docker快速启动 如果你想使用docker快速启动这个项目&#xff0c;你可以按下面这么操作&#xff08;显卡支持CUDA11.8&#xff09;。如…

windows和docker环境下springboot整合gdal3.x

链接: gdal官网地址 gdal gdal的一个用c语言编写的库&#xff0c;用于处理地理信息相关的数据包括转换&#xff0c;识别数据&#xff0c;格式化数据以及解析 同时提供第三方语言的SDK包括python&#xff0c;java上述需要编译后使用 java是需要使用jni接口调用实现方法在wind…

数码3C零售门店运营,智慧显示有何优势?以清远电信为例。

随着时代和科技的发展&#xff0c;线下实体零售门店运营方式也逐步进化&#xff0c;面对有大体量线门店&#xff0c;需要花费更多心思和资源管理的品牌&#xff0c;在全球经济缓慢增长的当下&#xff0c;开始走向去冗余、提效率的阶段&#xff0c;俗称降本增效。 在此阶段&…

网络协议的基本概念

网络协议的基本概念 随处可见的协议 在计算机网络与信息通信领域里&#xff0c;人们经常提及“协议”一词。互联网中常用的具有代表性的协议有IP、TCP、HTTP等。 “计算机网络体系结构”将这些网络协议进行了系统归纳。TCP/IP就是IP、TCP、HTTP等协议的集合。现在&#xff0…