Redis全局命令
"那篝火在银河尽头~"
Redis-cli命令启动
现如今,我们已经启动了Redis服务,下⾯将介绍如何使⽤redis-cli连接、操作Redis服务。客户端与服务端交互的方式有两种:
● 第⼀种是交互式⽅式: 后续所有的操作都是通过交互式的⽅式实现,不需要再执⾏redis-cli了。
redis-cli-h{host}-p{port}
进入redis后,我们可以敲下使用redis的一个命令:
● 第⼆种是命令⽅式: 就可以直接得到命令的返回结果.
reids-cli -h {host} -p {port} {command}
这里有两点需要注意由于我们连接的Redis服务位于127.0.0.1,端⼝也使⽤的是默认的6379端⼝。所以很多时候,所以可以省略-h{host}-p{port}。
Redis全局命令:
如何理解全局命令?
(1) set与get
redis中最核心的两个命令就是: "set" 和 "get".set是用来把 "key" 和 "value"存储进去,而"get"是用来通过 "key" 获取 ”value".
set命令使用:
set后面可以携带很多参数,但是开始学习阶段,我们就采取它最简单的用法。
对于上述的key value,如果你要表示字符串可以不用加 "",即便加上redis也不会报错。
get命令使用:
你说你现在设置了两个key就设置了嘛?你总得给我看看你设置的key是什么吧!
nil vs null:
null和nil都可以表示没有或者在价值上为0的概念,其中我们使用 "null"大多数用在数学、编程、商业等等,另一方面,在体育竞技或游戏方面使用 "nil"。
(2) Keys
参数 | 效果 |
? | 匹配任意一个字符 |
* | 匹配0个或多个任意字符 |
[abcde] | 只能匹配到这个选型的任意一个 |
[^e] | 匹配字符但 不包括e |
[a-b] | 匹配a~b这个范围,范围都是闭区间 |
设置部分keys。
keys *:
keys命令的时间复杂度是O(n),这很好理解,就是遍历redis服务器是上存储的所有key。"keys *"其效果就是遍历访问 redis上的所有设置过的key!在生产环境中,一般会禁止使用"keys *"命令, 因为执行 " keys *"命令所花费的时间非常长,而Redis是一个单线程进程,此时就会导致redis服务器被阻塞住了,无法给其他客户端提供服务!
(3) EXISTS
redis中支持很多数据结构,指的是value可以是一些复杂的数据结构。相对于redis自身的键值对,是通过哈希表的方式来组织的。
为什么redis很多命令可以进行多参数传递?
这两次写法有什么区别?
我们需要了解,redis是一个网络服务,它的服务端和客户端的交流方式一定是以这样的形式:
如果输入多条命令,也就是需要多次网络传输网络通信,相反,如果将这些命令打包成一条命令,那么仅仅需要进行一次网络传输即可!大大减少了网络IO次数,提高数据处理的能力!
(4) DEL
(5) (P)EXPIRE\(P)TTL
返回值:1表⽰设置成功。0表⽰设置失败。
这里我们可以联想我们手机收到的验证码,什么几分钟内有效。
返回值:剩余过期时间。-1表⽰没有关联过期时间,-2表⽰key不存在。
对计算机而言,秒实在是很慢,所以你也会看到p开头的诸如 “pexpire\pttl”它们的时间是以毫秒为单位。
(6) type

当然这些数据结构,会在后面的篇幅中讲解。我们现在只需要观察结果,不用在意敲击的命令是什么意思。
我们通过type可以很快地知道,每个redis中存在的key存储的value是什么类型。
Redis中的过期策略
我们可以使用Expire命令设置key的到期时间。可是一个redis中一定不止一个key设置了过期时间,这些key一定需要什么管理其来,到一定的时间对这些key进行释放。redis咋可能知道哪些key已经过期需要被删除呢,哪些可以还没有过期呢?
可是Redis是一个单线程进程,如果是遍历所有的key,这样显然是行不通的,效率太低了,那么redis采取的过期策略是什么呢?
虽然上述两种策略相结合,但是仍然会残存很多的过期Key,没有得到及时的删除。因此,redis还提供了一系列内存淘汰的策略,解决这个问题。
有兴趣可以看看这篇讲解redis的内存淘汰策略的文章:
https://baijiahao.baidu.com/s?id=1729630215002937706&wfr=spider&for=pc
redis并没有选择使用定时器的方式来实现对key的过期删除,如果存在多个key需要被过期删除,那么一个定时器可以高效、节省cpu资源的前提下,完成对过期key的清理。
所以,借着这个机会,我们来看看定时器思想的两种实现方法。
定时器思想:
1) 基于优先级队列实现的定时器: 
2) 基于时间轮实现的定时器
再次注意,redis中并没有采取这两种方案的任何一种来解决过期key的清理,但这两种方案都是高效的定时器实现方式,还是有一定的了解必要。
小结:
当前我们已经学了 redis几个基本的全局命令: get\set是redis的核心命令
① keys: 用来匹配规则pattern的所有key.
② exists: 用来判定指定的key是否存在.
③ (p)expire: 给key设置过期时间. ---> redis的过期策略
④ (p)ttl: 查询key的过期时间.
⑤ type: 查询key对应的value类型.
⑥ del: 删除指定的key
感谢你的阅读
祝你好运,向阳而生~
相关文章:

Redis全局命令
"那篝火在银河尽头~" Redis-cli命令启动 现如今,我们已经启动了Redis服务,下⾯将介绍如何使⽤redis-cli连接、操作Redis服务。客户端与服务端交互的方式有两种: ● 第⼀种是交互式⽅式: 后续所有的操作都是通过交互式的⽅式实现,…...

Xml转json
利用fastjson转换,pom文件依赖: <dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1.6.1</version> </dependency> <dependency><groupId>com.alibaba</groupId><artifa…...

Spring框架知识点汇总
01.Spring框架的基本理解 关键字:核心思想IOC/AOP,作用(解耦,简化),简单描述框架组成; Spring框架是一款轻量级的开发框架,核心思想是IOC(反转控制)和AOP&a…...

JavaScript Web APIs - 06 正则表达式
Web APIs - 06 文章目录 Web APIs - 06正则表达式正则基本使用元字符边界符量词范围字符类 替换和修饰符正则插件change 事件判断是否有类 目标:能够利用正则表达式完成小兔鲜注册页面的表单验证,具备常见的表单验证能力 正则表达式综合案例阶段案例 正…...

Python入门教程 | Python3 字符串
字符串是 Python 中最常用的数据类型。我们可以使用引号( ’ 或 " )来创建字符串。 创建字符串很简单,只要为变量分配一个值即可。例如: var1 Hello World! var2 "Tarzan"Python 访问字符串中的值 Python 不支持单字符类型ÿ…...

Playwright for Python:安装及初步使用
文章目录 一、Playwright介绍1.1 简单介绍1.2 支持的平台1.3 支持语言1.4 官方文档(python) 二、开始2.1 安装要求2.2 安装2.3 脚本录制2.4 代码示例 一、Playwright介绍 1.1 简单介绍 Playwright是微软推出来的一款自动化测试工具,是专门为…...

Ubuntu 20.04.5 怎么安装微信
这是我的ubutun版本号 在这个系统装桌面版微信很多功能不健全。搜索了很多方法,这个算是不错的一个法子。 1.添加仓库 首次使用时,你需要运行如下一条命令将移植仓库添加到系统中。 wget -O- https://deepin-wine.i-m.dev/setup.sh | sh 2.应用安装 …...

HummerRisk V1.4.0发布
大家好,HummerRisk 1.4.0和大家见面了,在这个版本中我们变更了多云检测的底层逻辑,增加了每次检测的project概念,更好的去支持检测历史和检索需要,增加阿里云最佳实践中资源监控检测规则,增加资源态势中的细…...

C语言每日一练----Day(12)
本专栏为c语言练习专栏,适合刚刚学完c语言的初学者。本专栏每天会不定时更新,通过每天练习,进一步对c语言的重难点知识进行更深入的学习。 今日练习题关键字:最大连续1的个数 完全数计算 💓博主csdn个人主页࿱…...

【Tkinter系列11/15】小部件 (Text)
24. 小部件Text 文本小部件是一种更通用的方法 处理比小部件多行文本。文本小部件几乎是一个完整的文本 窗口中的编辑器:Label 您可以将文本与不同的字体、颜色和 背景。 您可以用文本穿插嵌入的图像。一 图像被视为单个字符。请参见第 24.3 节 “文本小部件图像”…...

通过「内网穿透」技术,实现出差期间远程访问企业局域网中的象过河ERP系统
文章目录 概述1.查看象过河服务端端口2.内网穿透3. 异地公网连接4. 固定公网地址4.1 保留一个固定TCP地址4.2 配置固定TCP地址 5. 使用固定地址连接 概述 ERP系统对于企业来说重要性不言而喻,不管是财务、生产、销售还是采购,都需要用到ERP系统来协助。…...

ChatGPT和大型语言模型(LLM)是什么关系?
参考:https://zhuanlan.zhihu.com/p/615203178 # ChatGPT和大型语言模型(LLM)是什么关系? 参考:https://zhuanlan.zhihu.com/p/622518771 # 什么是LLM大语言模型?Large Language Model,从量变到质变 https://zhuanla…...

list(介绍与实现)
目录 1. list的介绍及使用 1.1 list的介绍 1.2 list的使用 1.2.1 list的构造 1.2.2 list iterator的使用 1.2.3 list capacity 1.2.4 list element access 1.2.5 list modififiers 1.2.6 list的迭代器失效 2. list的模拟实现 2.1 模拟实现list 2.2 list的反向迭代器 1.…...

Centos7 使用docker安装oracle数据库(超详细)
在linux中采用解压安装包的方式安装oracle非常麻烦,并且稍微不注意就会出现问题,因此采用docker来安装,下面为详细的步骤: 若不知道是否安装docker可查看这篇文章:docker安装 1、拉取oracle镜像 docker pull registr…...

昨天面试的时候被提问到的问题集合(答案)
1、vue的双向绑定原理是什么?里面的关键点在哪里? Vue的双向绑定原理是基于Object.defineProperty或者Proxy来实现的,其关键点在于数据劫持,即对数据的读取和修改进行拦截,在数据发生变化时自动更新视图 2、实现水平垂…...

PYTHON用户流失数据挖掘:建立逻辑回归、XGBOOST、随机森林、决策树、支持向量机、朴素贝叶斯和KMEANS聚类用户画像...
原文链接:http://tecdat.cn/?p24346 在今天产品高度同质化的品牌营销阶段,企业与企业之间的竞争集中地体现在对客户的争夺上(点击文末“阅读原文”获取完整代码数据)。 “用户就是上帝”促使众多的企业不惜代价去争夺尽可能多的客…...

详解IP协议
在介绍IP协议之前,先抛出一个概念:IP地址的作用——定位主机,具有将数据从主机A跨网络传输到主机B的能力,有了TCP提供的策略,例如滑动窗口、拥塞控制等,IP去执行它,所以我们通常叫TCP/IP协议&am…...

Stream流式编程用例
Stream流式编程用例: filter, map, flatmap, limit, skip, sort, distinct, collect, reduce, summary statistics public class StreamTest {public static void main(String[] args) {//filterStream<Integer> stream Stream.of(1, 2, 3, 4, 5);Stream&l…...

【Pytorch笔记】1. tensor的创建
参考视频: 深度之眼官方账号:01-02-张量简介与创建 torch.tensor() b torch.tensor(data, dtypeNone, deviceNone, requires_gradFalse, pin_memoryFalse)data:创建的tensor的数据来源,可以是list或numpy dtype:数据…...

Maven 基础之安装和命令行使用
Maven 的安装和命令行使用 1. 下载安装 下载解压 maven 压缩包(http://maven.apache.org/) 配置环境变量 前提:需要安装 java 。 在命令行执行如下命令: mvn --version如出现类似如下结果,则证明 maven 安装正确…...

运动耳机需要具备哪些功能、挂耳式运动蓝牙耳机推荐
作为运动爱好者,长时间的运动很容易枯燥,所以我会选择佩戴耳机来缓解运动的枯燥感,一款好的运动耳机可以让运动变得更加激情,还可以更好的享受运动的乐趣。 但现在的运动耳机产品实在是五花八门,到底什么样的运动蓝牙耳…...

【MCU】SD NAND芯片之国产新选择
文章目录 前言传统SD卡和可贴片SD卡传统SD卡可贴片SD卡 实际使用总结 前言 随着目前时代的快速发展,即使是使用MCU的项目上也经常有大数据存储的需求。可以看到经常有小伙伴这样提问: 大家好,请问有没有SD卡芯片,可以直接焊接到P…...

java 多线程
01.多线程类java.lang.Thread 这里继承Thread类的方法是比较常用的一种,如果说你只是想起一条线程。没有什么其它特殊的要求,那么可以使用Thread.(笔者推荐使用Runable,后头会说明为什么)。下面来看一个简单的实例&…...

ConsoleApplication17_2项目免杀(Fiber+VEH Hook Load)
加载方式FiberVEH Hook Load Fiber是纤程免杀,VEH是异常报错,hook使用detours来hook VirtualAlloc和sleep,通过异常报错调用实现主动hook 纤程Fiber的概念:纤程是比线程的更小的一个运行单位。可以把一个线程拆分成多个纤程&#…...

【Vue3 知识第五讲】条件渲染、列表渲染知识详解
文章目录 一、条件渲染1.1 概述1.2 演示代码 二、列表渲染2.1 使用 指令 v-for 遍历数组2.2 **使用 指令 v-for 遍历对象** 十、案例作业十一、总结 在前端开发过程中,条件和循环是经常被用到的逻辑。vue中封装了自己的组件渲染指令,可以更加方便的帮助开…...

vite+vue3从0开始搭建一个后管项目【学习随记二】
创建项目安装插件可以去【学习随记一】看下 1.路由配置 **文件路径是router/index.ts** import { createRouter, createWebHistory } from vue-router import { UserStore, userMenu } from /pinia import routes from ./routes import MainRouter from ./MainRouterconst ro…...

Linux的内存理解
建议 Mysql机器 尽量不要硬swap,如果是ssd磁盘还好。Free命令 free 命令显示系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存 输出简介: Mem 行(第二行)是内存的使用情况。Swap 行(第三行)是交换空间的使用情况。total 列显示系统总的可用物理内存和交换…...

财务数据分析?奥威BI数据可视化工具很擅长
BI数据可视化工具通常是可以用户各行各业,用于不同主题的数据可视化分析,但面对财务数据分析这块难啃的骨头,能够好好地完成的,还真不多。接下来要介绍的这款BI数据可视化工具不仅拥有内存行列计算模型这样的智能财务指标计算功能…...

趣味微项目:玩转Python编程,轻松学习快乐成长!
💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 在学习Python编程的旅程…...

总结安卓Preference使用过程中注意的问题
近期在做新项目中接触到了Preference,这是一种用户界面元素,用于存储和展示应用程序的各种设置和用户偏好。该控件几年前google就已经发布了只是一直没机会应用,其实用起来还是挺方便的,使用过程中遇到了几个问题在此记录下。 1、…...