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
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
redis 通用命令
目录 通用命令是什么 SET & GET keys EXISTS DEL EXPIRE TTL redis 的过期策略 定时器策略 基于优先级队列定时器 基于时间轮的定时器 TYPE 通过 redis 客户端和 redis 服务器交互。 所以需要使用 redis 的命令,但是 redis 的命令非常多。 通用命令…...
![](https://img-blog.csdnimg.cn/d838c8f45c61424daea1afa32781cf06.jpeg)
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到本地&…...
![](https://www.ngui.cc/images/no-images.jpg)
CSS transition 过渡
1 前言 水平居中、垂直居中是前端面试百问不厌的问题。 其实现方案也是多种多样,常叫人头昏眼花。 水平方向可以认为是内联方向,垂直方向认为是块级方向。 下面介绍一些常见的方法。 2 内联元素的水平垂直居中 首先,常见内联元素有&…...
![](https://img-blog.csdnimg.cn/3324bcb653b84d5abd3e95981b68059f.gif)
Unity中Shader的UV扭曲效果的实现
文章目录 前言一、实现的思路1、在属性面板暴露一个 扭曲贴图的属性2、在片元结构体中,新增一个float2类型的变量,用于独立存储将用于扭曲的纹理的信息3、在顶点着色器中,根据需要使用TRANSFORM_TEX对Tilling 和 Offset 插值;以及…...
![](https://img-blog.csdnimg.cn/bb111097ddd642259b21fe2e01fcb84f.png)
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…...
![](https://www.ngui.cc/images/no-images.jpg)
自定义TimeLine
自定义TimeLine 什么是TimeLineData(数据)Clip(片段)Track(轨道)Mixer(混合) 什么是TimeLine 在 Unity 中,TimeLine(时间轴)是一种用于创建和管理…...
![](https://www.ngui.cc/images/no-images.jpg)
如何使用SQL系列 之 如何在SQL中使用WHERE条件语句
引言 在结构化查询语言 (SQL)语句中,WHERE子句限制了给定操作会影响哪些行。它们通过定义特定的条件(称为搜索条件)来实现这一点,每一行都必须满足这些条件才能受到操作的影响。 本指南将介绍WHERE子句中使用的通用语法。它还将概述如何在单个WHERE子句…...
![](https://img-blog.csdnimg.cn/44b68787936d4b98b53480e3a8d9295b.png)
leetcode:1941. 检查是否所有字符出现次数相同(python3解法)
难度:简单 给你一个字符串 s ,如果 s 是一个 好 字符串,请你返回 true ,否则请返回 false 。 如果 s 中出现过的 所有 字符的出现次数 相同 ,那么我们称字符串 s 是 好 字符串。 示例 1: 输入:s…...
![](https://www.ngui.cc/images/no-images.jpg)
Echarts 各种点击事件监听
目录 一、鼠标事件1.1、左击1.2、双击1.3、右击1.4、右键双击1.5、中轴滚动二、时间轴2.1、时间轴监听三、拖动3.1、拖动事件一、鼠标事件 1.1、左击 chart.on(click, function(params)...
![](https://img-blog.csdnimg.cn/bdd4f87824db4c649b5bdfdeea33ffda.png)
《智能网联汽车自动驾驶功能测试规程》
一、 编制背景 2018 年4 月12 日,工业和信息化部、公安部、交通运输部联合发布《智能网联汽车道路测试管理规范(试行)》(以下简称《管理规范》),对智能网联汽车道路测试申请、审核、管理以及测试主体、测试驾驶人和测试车辆要求等…...
![](https://img-blog.csdnimg.cn/f6e4e4d43d504585a39b3e8918e3ca64.png)
NVIDIA CUDA Win10安装步骤
前言 windows10 版本安装 CUDA ,首先需要下载两个安装包 CUDA toolkit(toolkit就是指工具包)cuDNN 1. 安装前准备 在安装CUDA之前,需要完成以下准备工作: 确认你的显卡已经正确安装,在设备管理器中可以看…...
![](https://img-blog.csdnimg.cn/cfe9410b8dd6416fb39eff19d8287e28.png)
Elasticsearch、Kibana以及Java操作ES 的快速使用
docker 安装elastic search 、 kibana(可视化管理elastic search) docker pull elasticsearch:7.12.1 docker pull kibana:7.12.1创建docker自定义网络 docker自定义网络可以使得容器之间使用容器名网络互连,默认的网络不会有这功能。 一定…...
![](https://www.ngui.cc/images/no-images.jpg)
逐鹿人形机器人,百度、腾讯、小米卷起来
长期不温不火的人形机器人产业迎来新风口,技术显著提升、新品层出不穷、资本投资态度也逐渐好转。 8月18日,2023世界机器人大会博览会正式开放,全面展示了机器人行业的新技术、新产品和新应用。据悉,此次展会展览总面积达4.5万平…...
![](https://www.ngui.cc/images/no-images.jpg)
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.…...
![](https://www.ngui.cc/images/no-images.jpg)
mysql异常占用资源排查
通过执行日志与连接信息排查 查看是否开启日志记录 mysql> show global variables like %general%; --------------------------------- | Variable_name | Value | --------------------------------- | general_log | OFF | | general_log_file…...
![](https://www.ngui.cc/images/no-images.jpg)
requests 库:发送 form-data 格式的 http 请求 (python)
安装 requests-toolbelt !pip install requests-toolbeltdemo from requests_toolbelt import MultipartEncoder import requestsm MultipartEncoder(fields{query: """第一,向量化匹配是有能力上限的。搜索引擎实现语义搜索已经是好几年的事情了…...
![](https://img-blog.csdnimg.cn/40520506b62e4f64a8e758fc448d8b68.png)
行测图形推理规律(一)元素组成
题库:粉笔网题库 (fenbi.com) 不知道和测评的行测题库是不是一样的,但是总结的规律应该是一样的。 规律并不唯一,题库的答案也只是参考答案,切勿当杠精,你觉得你的规律更合适就别管。本人所归纳的规律仅代表本人想法…...
![](https://img-blog.csdnimg.cn/af21faeae6ac4725b373bc2b4bebb59f.png)
【python爬虫】13.吃什么不会胖(爬虫实操练习)
文章目录 前言项目实操明确目标分析过程代码实现 前言 吃什么不会胖——这是我前段时间在健身时比较关注的话题。 相信很多人,哪怕不健身,也会和我一样注重饮食的健康,在乎自己每天摄入的食物热量。 不过,生活中应该很少有人会…...
![](https://www.ngui.cc/images/no-images.jpg)
深入理解联邦学习——联邦学习与现有理论的区别与联系
分类目录:《深入理解联邦学习》总目录 作为一种全新的技术,联邦学习在借鉴一些成熟技术的同时也具备了一定的独创性。下面我们就从多个角度来阐释联邦学习和其他相关概念之间的关系。 联邦学习与差分隐私理论的区别 联邦学习的特点使其可以被用来保护用…...
![](https://img-blog.csdnimg.cn/img_convert/46a2618df85d860719dc0b38766308d7.jpeg)
基于Python+DenseNet121算法模型实现一个图像分类识别系统案例
目录 介绍在TensorFlow中的应用实战案例最后 一、介绍 DenseNet(Densely Connected Convolutional Networks)是一种卷积神经网络(CNN)架构,2017年由Gao Huang等人提出。该网络的核心思想是密集连接,即每…...
![](https://www.ngui.cc/images/no-images.jpg)
旋转图片两种方法
这两种方法在旋转图像时,可能会产生一些不同的效果: rotate_image_new()旋转后的图像完全包含旋转前的内容,并且填充边界尽可能小 rotate_image() 保持原始图像的大小,并根据填充选项决定是否填充边界为白色。如果 if_fill_whit…...
![](https://img-blog.csdnimg.cn/b7cf359e7de44899bd4e6fbbd2f85ea9.png)
10 mysql tiny/small/medium/big int 的数据存储
前言 这里主要是 由于之前的一个 datetime 存储的时间 导致的问题的衍生出来的探究 探究的主要内容为 int 类类型的存储, 浮点类类型的存储, char 类类型的存储, blob 类类型的存储, enum/json/set/bit 类类型的存储 本文主要 的相关内容是 int 类类型的相关数据的存储 …...
![](https://img-blog.csdnimg.cn/8b1d1b46e047429cba0f4a2a115d53d7.png)
UI自动化测试之Jenkins配置
团队下半年的目标之一是实现自动化测试,这里要吐槽一下,之前开发的测试平台了,最初的目的是用来做接口自动化测试和性能测试,但由于各种原因,接口自动化测试那部分功能整个废弃掉了,其中和易用性有很大关系…...
![](https://img-blog.csdnimg.cn/4f2d87dc6de24aeab1eccc132e6b4efd.png)
电视盒子什么品牌好?数码博主盘点目前性能最好的电视盒子
电视盒子是非常重要的,老人小孩基本每天都会看电视,而电视盒子作为电视盒子的最佳拍档销量十分火爆,我自己每个月都会测评几次电视盒子,今天给大家详细解读一下电视盒子什么品牌好,看看目前性能最好的电视盒子是哪些&a…...
![](https://www.ngui.cc/images/no-images.jpg)
对于枚举类型的输出
对于枚举类型的输出 对于枚举类型的输出,您可以使用以下方法:1. 将枚举值转换为整数进行输出:cppODU_TYPE type ODU_TYPE_331;int value static_cast<int>(type);std::cout << "ODU_TYPE: " << value <<…...
![](https://img-blog.csdnimg.cn/e074ae3af8ae432da5f7bacd597ecd1d.png)
solidity开发环境配置,vscode搭配remix
#学习笔记 初学solidity,使用remix非常方便,因为需要的环境都配置好了,打开网站就可以使用。 不过在编写代码方面,使用vscode更方便,而vscode本身并不能像remix那样部署合约,它还需要安装插件。 点击红色箭…...
![](https://www.ngui.cc/images/no-images.jpg)
chatGPT生成代码--go组合算法
提问:用golang写一个组合算法函数zuhe(x,n),x为组合所需的字符,n 为组合后的字符串长度,例如 x"ab", n2 结果返回 aa,ab,bb,ba 结果:下面是一个用Go编写的生成长度为n的字符串组合的函数 zuhe,其…...
![](https://img-blog.csdnimg.cn/img_convert/a76d68a2d039faebdc727282b8cc4c77.jpeg)
推荐6款普通人搞副业做自媒体AI工具
hi,同学们,我是赤辰,本期是赤辰第5篇AI工具类教程,文章底部准备了粉丝福利,看完可以领取!身边越来越多的小伙伴靠自媒体实现财富自由了!因此,推荐大家在工作之余或空闲时间从事自媒体…...
![](https://www.ngui.cc/images/no-images.jpg)
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…...
![](https://www.ngui.cc/images/no-images.jpg)
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…...
![](/images/no-images.jpg)
定西做网站/广州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…...
![](https://img-blog.csdnimg.cn/20200806234705825.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FhMjUyODg3Nzk4Nw==,size_16,color_FFFFFF,t_70)
做身份证网站/市场推广方案怎么做
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 配置路由 引入…...
![](/images/no-images.jpg)
广州做网站(信科网络)/百度小说排行榜2021
1. 题目 原题链接 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈 的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹…...
![](https://static.leiphone.com/uploads/new/article/740_740/201612/5854f3549c7fd.jpg?imageMogr2/format/jpg/quality/90)
做外贸哪个网站比较好/搜索排名广告营销怎么做
雷锋网(公众号:雷锋网)按:数据科学、大数据和物联网正在以令人炫目的速度发展和演进,而商业界正以缓慢的速度将更多来自不同渠道的数据整合起来,并能从中洞察更多信息。本文是 Andrew Dipper 对数据科学行业2017年的展望ÿ…...
![](https://images2018.cnblogs.com/blog/1252614/201805/1252614-20180529152706605-1402819012.png)
电子商务网站建设与管理感想/技术优化seo
转载于:https://www.cnblogs.com/xiaobiaomei/p/9105282.html...
![](https://img-blog.csdnimg.cn/2020111815163211.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0ZlaTIwMTQwOTA4,size_16,color_FFFFFF,t_70#pic_center)
什么浏览器不限制网站/免费网站推广网站破解版
环境 Ubuntu20.04CLion 2020.2.4MySQL5.7 源码 代码下载自己各显神通吧,直接git clone会比较慢 我使用的是这个油猴脚本的直接下载单个版本的,没有git相关信息。 安装依赖 包含各种编译所需依赖,其中部分是ubuntu系统已经有的 sudo apt…...