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服务。客户端与服务端交互的方式有两种: ● 第⼀种是交互式⽅式: 后续所有的操作都是通过交互式的⽅式实现,…...

LibreOffice新一代的办公软件for Mac/Windows免费版
LibreOffice是一款免费、开源的办公软件套件,可在多个操作系统上运行,包括Windows、Mac和Linux。它提供了一系列功能强大的办公工具,包括文档处理、电子表格、演示文稿、数据库管理等。 LibreOffice的界面简洁直观,与其他流行的办…...
Python|OpenCV-读取视频,显示视频并保存视频(3)
前言 本文是该专栏的第3篇,后面将持续分享OpenCV计算机视觉的干货知识,记得关注。 在使用OpenCV处理视频的时候,不论是摄像头画面还是视频文件,通常情况下都要使用VideoCapture类来进行每一帧图像的处理。对于OpenCV而言,只要使用视频文件作为参数,它就可以打开视频文件…...

上传WSL项目到gitlab
上传WSL项目到gitlab 设置ssh将SSH公钥添加到Gitlab 将WSL上的代码上传到gitlab确保在WSL环境中安装了git下面是上传代码到GitLab的具体步骤: 可能遇到的各种错误 设置ssh Gitlab添加SSH KEY 什么是SSH ? SSH 是一种网络协议,具备协议级别的认证及会话…...

从0开始做yolov5模型剪枝
文章目录 从0开始做yolov5模型剪枝 ****1 前言2 GitHub取源码3 原理3.1 原理3.2 network slimming过程 4 具体实施步骤4.1 安装虚拟环境4.2 配置参数4.2.1 数据集参数4.2.2 模型结构参数4.2.3 train.py中的参数 4.3 正常训练4.3.1 准备4.3.2 训练及问题解决 4.4 稀疏化训练4.4.…...

飞天使-k8s基础组件分析-安全
文章目录 名称空间解释访问kubernetes API的控制RBAC的介绍 kubeconfig用户的创建集群默认角色 给组创建授权针对pod配置服务账户参考文档 名称空间解释 名字是啥? 答:集群中每个对象的名称对于该类型的资源都是唯一的。并且每一个对象在整个集群中也有…...

Mysql安装使用
Mysql下载: MySQL :: Download MySQL Community Server Mysql解压: 解压后在根目录新建data文件夹和新建my.ini文件 my.ini文件内容如下: 注意:记得修改目录位置 [mysqld] # 设置3306端口 port3306 # 设置mysql的安装目录 basedirD:\\mysql-5.7.30…...

聚类分析 | MATLAB实现基于LP拉普拉斯映射的聚类可视化
聚类分析 | MATLAB实现基于LP拉普拉斯映射的聚类可视化 目录 聚类分析 | MATLAB实现基于LP拉普拉斯映射的聚类可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 聚类分析 | MATLAB实现基于LP拉普拉斯映射的聚类可视化,聚类结果可视化,MATLAB程…...
uniapp 使用 mui-player 插件播放 m3u8/flv 视频流
在UniApp中使用mui-player插件播放M3U8/FLV视频流,可以按照以下步骤进行操作: 1. 安装mui-player插件 :在UniApp项目根目录下,使用命令行工具执行以下命令安装mui-player插件: npm install mui-player --save2. 在需…...

大数据课程K4——Spark的DAGRDD依赖关系
文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解Spark的DAG; ⚪ 掌握Spark的RDD的依赖关系; ⚪ 了解Spark对于DAG的Stage的划分; 一、DAG概念 1. 概述 Spark会根据用户提交的计算逻辑中的RDD的转换和动作来生成RDD之间的依赖关…...
disable 禁用元素后无法触发点击事件
业务需求点击被禁用的输入框触发事件 在被禁用元素上套一层div div上绑定事件 原本是不需要加事件穿透即可触发 但是最近谷歌更新触发不了 加一个事件穿透就好了 核心代码 style"pointer-events:none"style“pointer-events:none” 事件穿透 整体代码 <el-table-…...
uni-app开启gzip配置
指令:npm install webpack4.46.0 --save-dev 指令:npm install compression-webpack-plugin6.1.1 --save-dev vue.config.js const CompressionWebpackPlugin require(compression-webpack-plugin);module.exports {configureWebpack: config > {…...

房屋结构健康监测,科技助力让建筑更安全
房屋建筑是人们赖以生存的场所,然而当前我国许多房屋已经达到了使用寿命的中期,房屋的安全系数逐年降低,风险也随着时间的推移而累积。长期以来,我国的房屋普遍存在寿命短、隐患多的问题,“重建设,轻管理”…...

Android 面试之Glide做了哪些优化?
前言 Glide可以说是最常用的图片加载框架了,Glide链式调用使用方便,性能上也可以满足大多数场景的使用,Glide源码与原理也是面试中的常客。 但是Glide的源码内容比较多,想要学习它的源码往往千头万绪,一时抓不住重点.…...

【韩顺平 零基础30天学会Java】数组、排序和查找(2days)
数组、排序、查找和多维数组 数组可以存放多个同一类型的数据。数组也是一种数据类 型,是引用数据类型。 定义一个数组 double[] hens {3,5,1,3.4,2,50} 遍历数组得到数组所有元素的和 hens[下标],下标是从0开始编号的。 可以通过数组名.lenght得到数组…...

VUE笔记(一)初识vue
一、vue的简介 1、什么是vue 官网地址:Vue.js Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。 构建用户界面:之前在学习vue之前通过原生js对DOM操作进行构建用户界面的 使用原生js构建用户界面的不足 - 没有规范,…...
3D点云处理:学习总结(更新整理中)
文章目录 开发工具个人看法 微信:dhlddx B站演示视频 前置说明:仅是个人在使用pcl开发过程中的总结(点云处理顺序或比较实用的功能),不喜勿喷; 开发工具 开发IDE:Qt Creator(Windo…...

Day45|leetcode 70. 爬楼梯、322. 零钱兑换、279.完全平方数
leetcode 70. 爬楼梯 题目链接:70. 爬楼梯 - 力扣(LeetCode) 本题可以用背包问题来解决,就相当于楼顶是背包,台阶是物品,相当于之前写法的进阶版。 代码实现 class Solution { public:int climbStairs(in…...

arm:day9
1。思维导图 2..I2C实验,检测温度和湿度 iic.h #ifndef __IIC_H__ #define __IIC_H__ #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_rcc.h" #include "gpio.h" /* 通过程序模拟实现I2C总线的时序和协议* GPIOF ---> AHB4…...
【大模型AIGC系列课程 1-2】创建并部署自己的ChatGPT机器人
OpenAI API 调用 获取 openai api api-key https://platform.openai.com/account/api-keys 利用 python requests 请求 openai 参考 openai 接口说明:https://platform.openai.com/docs/api-reference/chat/create import json # 导入json包 import requests # 导入req…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...

tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...

基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...

免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...
上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式
简介 在我的 QT/C 开发工作中,合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式:工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...

C++实现分布式网络通信框架RPC(2)——rpc发布端
有了上篇文章的项目的基本知识的了解,现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...