当前位置: 首页 > news >正文

redis 通用命令

目录

通用命令是什么

SET & GET

keys

EXISTS

DEL

EXPIRE

TTL

redis 的过期策略

定时器策略

基于优先级队列定时器

基于时间轮的定时器

TYPE


通过 redis 客户端和 redis 服务器交互。

所以需要使用 redis 的命令,但是 redis 的命令非常多。

通用命令是什么

在 redis 中,对于存入的不同数据的操作的命令是不同的,但是还是有一些命令是通用的,而这些对所有数据类型都通用的命令就是 ”通用命令“。

在介绍通用命令之前,其实我们可以去官方网站去学习一些有关 redis 的一些内容。

[Redis](https://redis.io/) 

我们就可以在主页面上有一个 search 可以用来搜索命令。

这里我们可以启动客户端,然后我们可以使用 ping 命令来验证一下连通性。

127.0.0.1:6379> ping
PONG

如果联通成功的话,那么就会返回 pong,实际上 redis 的命令一般都是大写和 mysql 是一样的,虽然小写也可以支持。

SET & GET

redis 是按照键值对的方式来存储的。

  • get:根据 key 来获取对应的 value

  • set:把 key 和 value 设置进去

这里的 key 和 value 都是字符串。

set key value
如果设置成功返回 OK

上面就是 set 的简单语法,set 后面跟一个 key 在跟一个value。

上面虽然说 key 和 value都是字符串,但是在set 的时候并不需要加双引号或者单引号。

127.0.0.1:6379> SET key1 value1
OK

下面可以通过 key 来获得 value

get key
如果有 key 就会返回对应的 value,否则就会返回 nil,上面的 nil 就是表示空或者不存在的意思。
127.0.0.1:6379> get key1
"value1"
127.0.0.1:6379> get key2
(nil)

KEYS

  • keys 可以查询当前 redis 中的 key

KEYS pattern
  • pattern 就是匹配模式

  • ?:表示匹配任意多一字符

  • *:匹配任意多个字符

  • [abc..]:匹配方括号里面的字符

  • [^abc]:匹配除非方括号里面的字符

  • [a-b]:匹配a~b中的字符

下面可以试一下

插入一批数据

127.0.0.1:6379> set hello 1
OK
127.0.0.1:6379> set hallo 1
OK
127.0.0.1:6379> set hbllo 1
OK
127.0.0.1:6379> set heeeeello 1
OK
127.0.0.1:6379> keys *
1) "hallo"
2) "hbllo"
3) "heeeeello"
4) "hello"
5) "key1"
  • 匹配任意一个字符

    127.0.0.1:6379> keys h?llo
    1) "hallo"
    2) "hbllo"
    3) "hello"

  • 匹配任意多个字符

    127.0.0.1:6379> keys h*llo
    1) "hallo"
    2) "hbllo"
    3) "heeeeello"
    4) "hello"

  • 匹配括号里的内容

    127.0.0.1:6379> keys h[ab]llo
    1) "hallo"
    2) "hbllo"

  • 匹配非括号里面内容

    127.0.0.1:6379> keys h[^e]llo
    1) "hallo"
    2) "hbllo"

  • 匹配括号里范围

    127.0.0.1:6379> keys h[ab]llo
    1) "hallo"
    2) "hbllo"

EXISTS

  • 该命令用来查询key 是否存在

exixts key [key...]
  • 该命令可以在后面跟多个 key

  • 返回查询到 key 的个数

  • 时间复杂度位O(N) N为key 的个数

  • 查询

    127.0.0.1:6379> exists hello hallo
    (integer) 2

DEL

  • 删除 key 以及对应的 value

del key [key...]
  • del 后面也可以跟多个 key

  • 返回值表示删除 key 的个数

  • 删除一个数据

    127.0.0.1:6379> del hello
    (integer) 1

  • 删除多个数据

    127.0.0.1:6379> del hallo hbllo
    (integer) 2

  • 删除不存在的数据

    127.0.0.1:6379> del abc
    (integer) 0

EXPIRE

  • 设置过期时间,单位秒

expire key second
  • expire 必须要是已经有了的 key

  • 返回值为 1 表示设置成功,0 表示失败

  • 但是 second 对于计算机来说时间太长,其实还有一个 pexpire 的单位为毫秒

  • 设置过期时间

    127.0.0.1:6379> expire hello 10
    (integer) 1

  • 为空 key 设置过期时间

    127.0.0.1:6379> expire abc 10
    (integer) 0

为已有的 key 设置过期时间返回 1,为没有的 key 设置过期时间返回 0,表示设置失败

而且设置成功后,等时间到期后,该key 会自动删除

TTL

  • 查看过期时间,和 expire 对对应

ttl key
  • 返回的单位是 秒

  • 如果想要查看毫秒级的就是 pttl 也就是和pexpire 对应

  • 返回值为剩余的过期时间,如果是 -1 表示没有设置过期时间,如果是 -2 表示没有该 key

  • 设置过期时间

    127.0.0.1:6379> expire hello 30
    (integer) 1

  • 查看过期时间

    127.0.0.1:6379> ttl hello
    (integer) 25

  • 查看没有设置的过期时间 key 的过期时间

    127.0.0.1:6379> ttl key1
    (integer) -1

  • 查看没有 key 的过期时间

    127.0.0.1:6379> ttl abc
    (integer) -2

redis 的过期策略

redis 的过期策略主要是两个方面:

  • 定期删除

  • 惰性删除

  • 首先说这个惰性删除,惰性删除就是每当用户访问该数据的时候, redis 会进行一番检查,如果是过期的,那么 redis 就会删除掉该 key,然后返回 nil

  • 定期删除就是,每隔一段时间 redis 就会抽取一部分数据进行检查过期时间,如果过期的话就会删除

  • 为什么是一部分数据呢?因为 redis 是单线程的,如果数据量太大的话,那么就会是 redis 阻塞,导致其他的服务无法被处理,所以 redis 每次都抽取一部分数据进行检查

  • 但是两个策略结合效果却也是一般

定时器策略

redis 过期策略还可以通过定时器来解决,但是这个定时器 redis 并没有实现,但是可以介绍一下如果使用定时器那么可以如何实现

基于优先级队列定时器

  • 可以将所有的过期时间的 key 都放到一个优先级队列里面

  • 优先级就是过期时间,过期时间越近,那么优先级越高

  • 所以第一个元素一定是最先过期的,所以我们只需要检查第一个元素即可

  • 而第一个元素也不一定要一直检查,可以隔一段时间检查一下

  • 然后就可以分一个线程,让该线程来检查过期时间,如果发现过期时间还没到,则可以先让该线程挂起

基于时间轮的定时器

  • 首先可以有一个循环队列,而循环队列里面的每一格代表一个一段时间的过期时间

  • 每个格子里面可以保存一个链表,该链表里面的所有事件的过期时间都在该格子表示的时间范围

  • 其中一个指针从循环队列特定位置开始,每隔一段时间(格子表示的时间)就向后走一个,然后检查里面的过期时间,过期就删除

  • 遇到新的事件就查看该事件的过期事件,push 到对应的格子里

虽然 redis 并没有使用这两种方法,但是这两种方法也是比较高效的处理过期事件的方法

TYPE

  • 返回 key 对应的 value 的类型

type key
  • 返回 key 对应的 value 的类型

  • 在 redis 里面 key 都是 string 类型

  • 如果没有key返回 none

  • 插入不同数据

    127.0.0.1:6379> lpush key2 111 222 333
    (integer) 3
    127.0.0.1:6379> sadd key3 aaa bbb ccc
    (integer) 3
    127.0.0.1:6379> hset key4 field1 value1
    (integer) 1

  • 查看不同数据类型

    127.0.0.1:6379> type key1
    string
    127.0.0.1:6379> type key2
    list
    127.0.0.1:6379> type key3
    set
    127.0.0.1:6379> type key4
    hash

相关文章:

redis 通用命令

目录 通用命令是什么 SET & GET keys EXISTS DEL EXPIRE TTL redis 的过期策略 定时器策略 基于优先级队列定时器 基于时间轮的定时器 TYPE 通过 redis 客户端和 redis 服务器交互。 所以需要使用 redis 的命令,但是 redis 的命令非常多。 通用命令…...

Pycharm配置及使用Git教程

文章目录 1. 安装PyCharm2. 安装Git3. 在PyCharm中配置Git插件4. 连接远程Gtilab仓库5. Clone项目代码6. 将本地文件提交到远程仓库6.1 git add6.2 git commit6.3 git push6.4 git pull 平时习惯在windows下开发,但是我们又需要实时将远方仓库的代码clone到本地&…...

CSS transition 过渡

1 前言 水平居中、垂直居中是前端面试百问不厌的问题。 其实现方案也是多种多样,常叫人头昏眼花。 水平方向可以认为是内联方向,垂直方向认为是块级方向。 下面介绍一些常见的方法。 2 内联元素的水平垂直居中 首先,常见内联元素有&…...

Unity中Shader的UV扭曲效果的实现

文章目录 前言一、实现的思路1、在属性面板暴露一个 扭曲贴图的属性2、在片元结构体中,新增一个float2类型的变量,用于独立存储将用于扭曲的纹理的信息3、在顶点着色器中,根据需要使用TRANSFORM_TEX对Tilling 和 Offset 插值;以及…...

Automotive 添加一个特权APP

Automotive 添加一个特权APP platform: android-13.0.0_r32 一. 添加一个自定义空调的app为例 路径:packages/apps/Car/MyHvac app内容可以自己定义,目录结构如下: 1.1 Android.bp package {default_applicable_licenses: ["Andr…...

自定义TimeLine

自定义TimeLine 什么是TimeLineData(数据)Clip(片段)Track(轨道)Mixer(混合) 什么是TimeLine 在 Unity 中,TimeLine(时间轴)是一种用于创建和管理…...

如何使用SQL系列 之 如何在SQL中使用WHERE条件语句

引言 在结构化查询语言 (SQL)语句中,WHERE子句限制了给定操作会影响哪些行。它们通过定义特定的条件(称为搜索条件)来实现这一点,每一行都必须满足这些条件才能受到操作的影响。 本指南将介绍WHERE子句中使用的通用语法。它还将概述如何在单个WHERE子句…...

leetcode:1941. 检查是否所有字符出现次数相同(python3解法)

难度:简单 给你一个字符串 s ,如果 s 是一个 好 字符串,请你返回 true ,否则请返回 false 。 如果 s 中出现过的 所有 字符的出现次数 相同 ,那么我们称字符串 s 是 好 字符串。 示例 1: 输入:s…...

Echarts 各种点击事件监听

目录 一、鼠标事件1.1、左击1.2、双击1.3、右击1.4、右键双击1.5、中轴滚动二、时间轴2.1、时间轴监听三、拖动3.1、拖动事件一、鼠标事件 1.1、左击 chart.on(click, function(params)...

《智能网联汽车自动驾驶功能测试规程》

一、 编制背景 2018 年4 月12 日,工业和信息化部、公安部、交通运输部联合发布《智能网联汽车道路测试管理规范(试行)》(以下简称《管理规范》),对智能网联汽车道路测试申请、审核、管理以及测试主体、测试驾驶人和测试车辆要求等…...

NVIDIA CUDA Win10安装步骤

前言 windows10 版本安装 CUDA ,首先需要下载两个安装包 CUDA toolkit(toolkit就是指工具包)cuDNN 1. 安装前准备 在安装CUDA之前,需要完成以下准备工作: 确认你的显卡已经正确安装,在设备管理器中可以看…...

Elasticsearch、Kibana以及Java操作ES 的快速使用

docker 安装elastic search 、 kibana(可视化管理elastic search) docker pull elasticsearch:7.12.1 docker pull kibana:7.12.1创建docker自定义网络 docker自定义网络可以使得容器之间使用容器名网络互连,默认的网络不会有这功能。 一定…...

逐鹿人形机器人,百度、腾讯、小米卷起来

长期不温不火的人形机器人产业迎来新风口,技术显著提升、新品层出不穷、资本投资态度也逐渐好转。 8月18日,2023世界机器人大会博览会正式开放,全面展示了机器人行业的新技术、新产品和新应用。据悉,此次展会展览总面积达4.5万平…...

AndroidStudio推荐下载和配置

1、推荐下载链接 Download Android Studio & App Tools - Android Developers 2、gradle配置案例 // Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript {repositories {maven { url https://maven.aliyun.…...

mysql异常占用资源排查

通过执行日志与连接信息排查 查看是否开启日志记录 mysql> show global variables like %general%; --------------------------------- | Variable_name | Value | --------------------------------- | general_log | OFF | | general_log_file…...

requests 库:发送 form-data 格式的 http 请求 (python)

安装 requests-toolbelt !pip install requests-toolbeltdemo from requests_toolbelt import MultipartEncoder import requestsm MultipartEncoder(fields{query: """第一,向量化匹配是有能力上限的。搜索引擎实现语义搜索已经是好几年的事情了…...

行测图形推理规律(一)元素组成

题库:粉笔网题库 (fenbi.com) 不知道和测评的行测题库是不是一样的,但是总结的规律应该是一样的。 规律并不唯一,题库的答案也只是参考答案,切勿当杠精,你觉得你的规律更合适就别管。本人所归纳的规律仅代表本人想法…...

【python爬虫】13.吃什么不会胖(爬虫实操练习)

文章目录 前言项目实操明确目标分析过程代码实现 前言 吃什么不会胖——这是我前段时间在健身时比较关注的话题。 相信很多人,哪怕不健身,也会和我一样注重饮食的健康,在乎自己每天摄入的食物热量。 不过,生活中应该很少有人会…...

深入理解联邦学习——联邦学习与现有理论的区别与联系

分类目录:《深入理解联邦学习》总目录 作为一种全新的技术,联邦学习在借鉴一些成熟技术的同时也具备了一定的独创性。下面我们就从多个角度来阐释联邦学习和其他相关概念之间的关系。 联邦学习与差分隐私理论的区别 联邦学习的特点使其可以被用来保护用…...

基于Python+DenseNet121算法模型实现一个图像分类识别系统案例

目录 介绍在TensorFlow中的应用实战案例最后 一、介绍 DenseNet(Densely Connected Convolutional Networks)是一种卷积神经网络(CNN)架构,2017年由Gao Huang等人提出。该网络的核心思想是密集连接,即每…...

旋转图片两种方法

这两种方法在旋转图像时,可能会产生一些不同的效果: rotate_image_new()旋转后的图像完全包含旋转前的内容,并且填充边界尽可能小 rotate_image() 保持原始图像的大小,并根据填充选项决定是否填充边界为白色。如果 if_fill_whit…...

10 mysql tiny/small/medium/big int 的数据存储

前言 这里主要是 由于之前的一个 datetime 存储的时间 导致的问题的衍生出来的探究 探究的主要内容为 int 类类型的存储, 浮点类类型的存储, char 类类型的存储, blob 类类型的存储, enum/json/set/bit 类类型的存储 本文主要 的相关内容是 int 类类型的相关数据的存储 …...

UI自动化测试之Jenkins配置

团队下半年的目标之一是实现自动化测试,这里要吐槽一下,之前开发的测试平台了,最初的目的是用来做接口自动化测试和性能测试,但由于各种原因,接口自动化测试那部分功能整个废弃掉了,其中和易用性有很大关系…...

电视盒子什么品牌好?数码博主盘点目前性能最好的电视盒子

电视盒子是非常重要的,老人小孩基本每天都会看电视,而电视盒子作为电视盒子的最佳拍档销量十分火爆,我自己每个月都会测评几次电视盒子,今天给大家详细解读一下电视盒子什么品牌好,看看目前性能最好的电视盒子是哪些&a…...

对于枚举类型的输出

对于枚举类型的输出 对于枚举类型的输出&#xff0c;您可以使用以下方法&#xff1a;1. 将枚举值转换为整数进行输出&#xff1a;cppODU_TYPE type ODU_TYPE_331;int value static_cast<int>(type);std::cout << "ODU_TYPE: " << value <<…...

solidity开发环境配置,vscode搭配remix

#学习笔记 初学solidity&#xff0c;使用remix非常方便&#xff0c;因为需要的环境都配置好了&#xff0c;打开网站就可以使用。 不过在编写代码方面&#xff0c;使用vscode更方便&#xff0c;而vscode本身并不能像remix那样部署合约&#xff0c;它还需要安装插件。 点击红色箭…...

chatGPT生成代码--go组合算法

提问&#xff1a;用golang写一个组合算法函数zuhe(x,n)&#xff0c;x为组合所需的字符&#xff0c;n 为组合后的字符串长度&#xff0c;例如 x"ab", n2 结果返回 aa,ab,bb,ba 结果&#xff1a;下面是一个用Go编写的生成长度为n的字符串组合的函数 zuhe&#xff0c;其…...

推荐6款普通人搞副业做自媒体AI工具

hi&#xff0c;同学们&#xff0c;我是赤辰&#xff0c;本期是赤辰第5篇AI工具类教程&#xff0c;文章底部准备了粉丝福利&#xff0c;看完可以领取&#xff01;身边越来越多的小伙伴靠自媒体实现财富自由了&#xff01;因此&#xff0c;推荐大家在工作之余或空闲时间从事自媒体…...

vs中git提交合并分支的步骤记录

vs打开终端 PS D:\project\et_lower4_driver> git pull Already up to date. PS D:\project\et_lower4_driver> git branch * kiyun_usb7851 master PS D:\project\et_lower4_driver> git checkout master Switched to branch master Your branch is up to date wit…...

PostgreSQL 备份恢复:pg_probackup

文章目录 前言1. 安装备份工具1.1 环境介绍1.2 RPM 安装1.3 验证 2. 配置备份工具2.1 初始化设置2.2 创建备份用户2.3 配置自动归档 3. 工具使用介绍3.1 init3.2 add-instance3.3 del-instance3.4 set-config3.5 show-config3.6 set-backup3.7 backup3.8 show3.9 delete3.10 re…...

定西做网站/广州seo技术优化网站seo

基于LabVIEW的S7300PLC与PC机的串口通信2011 仪 表 技 术 与 传 感 器 20115 Instrument Technique and Sensor No5LabV IEW S7- 300 PLC PC刘小丽, 张晓光(, 221116): 根据工业系统设计需求, 采用图形化编程语言 LabVI W 设计了 S7 - 300 PLC和 PC机间的串 通信介绍了使用 396…...

做身份证网站/市场推广方案怎么做

Angular 中的路由 一、 Angular 创建一个默认带路由的项目 命令创建项目 ng new ng-demo --skip-install 创建需要的组件 ng g component components/home ng g component components/news ng g component components/newscontent找到 app-routing.module.ts 配置路由 引入…...

广州做网站(信科网络)/百度小说排行榜2021

1. 题目 原题链接 输入两个整数序列&#xff0c;第一个序列表示栈的压入顺序&#xff0c;请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如&#xff0c;序列 {1,2,3,4,5} 是某栈 的压栈序列&#xff0c;序列 {4,5,3,2,1} 是该压栈序列对应的一个弹…...

做外贸哪个网站比较好/搜索排名广告营销怎么做

雷锋网(公众号&#xff1a;雷锋网)按&#xff1a;数据科学、大数据和物联网正在以令人炫目的速度发展和演进&#xff0c;而商业界正以缓慢的速度将更多来自不同渠道的数据整合起来&#xff0c;并能从中洞察更多信息。本文是 Andrew Dipper 对数据科学行业2017年的展望&#xff…...

电子商务网站建设与管理感想/技术优化seo

转载于:https://www.cnblogs.com/xiaobiaomei/p/9105282.html...

什么浏览器不限制网站/免费网站推广网站破解版

环境 Ubuntu20.04CLion 2020.2.4MySQL5.7 源码 代码下载自己各显神通吧&#xff0c;直接git clone会比较慢 我使用的是这个油猴脚本的直接下载单个版本的&#xff0c;没有git相关信息。 安装依赖 包含各种编译所需依赖&#xff0c;其中部分是ubuntu系统已经有的 sudo apt…...