Redis从入门到精通-常用命令

news2024/11/28 12:42:30

本文使用命令行模式进行操作

(1)keys

keys的作用是返回所有符合条件的key的列表

*是返回所有的,名字不限制

也可以使用限制

这个命令的原理是查询到所有名字符合条件的,然后返回

练习可以用,但是千万别在生产环境使用,如果生产环境有800w个key,即使使用了通配符进行名字的限制也是挨个去查然后过滤,会造成很恶劣的影响 

如果只是要看当前系统有多少个key的话,可以使用dbsize命令,这个是O(1)级别的:

(2)EXPIRE及ttl

这组命令是设置及查看过期时间

大于等于0代表实际的秒数(默认为秒),-1代表永不过期,-2代表不存在

 这里的坑:坑一:如果重新设置了key对应的value的值,如果没有设置过期时间,那这个key就永不过期了

坑2:只能设置顶级的key的过期时间,对于list或者set等复杂结构内部的某一条记录是无法设置过期时间的。

(3)rename

重新给key指定名字,这里要注意rename到的目标值是否存在:

 如果存在的话,会被当前的值覆盖

如果目的是存在则不覆盖也不重命名,可以使用renamenx(推荐使用避免覆盖了有用的数据)

 (4)exists

key是否存在,1表示存在,0表示不存在

(5)del

删除key对应的数据

可以一次删除多个:

del命令返回的数字代表删除成功了多少个 

(6)redis的key的命名

业务名:对象名:id(或者其他能代表一条数据的属性):属性

以下命令为string类型的命令

(7)mset mget

批量设置(获取)key和value

 批量命令可以提高性能:

set n次:n次网络+n次命令时间(redis执行时间)

mset n个key:1次网络+n次命令时间(redis执行时间)

(8)set

set 设置值

set key value

set命令有几个选项:

ex seconds: 为键设置秒级过期时间。

px milliseconds: 为键设置毫秒级过期时间。

nx: 键必须不存在,才可以设置成功,用于添加(分布式锁常用)。

xx: 与nx相反,键必须存在,才可以设置成功,用于更新。

(9) incr 和 decr

 

 (10)getset

设置新的值,返回原来键的值

要求原来的值必须存在

(11)setrange getrange

设置指定范围的值

 

--以下命令为hash类型专用

(12)hset hget

(13)hmset hmget

hset的结果也可以使用hmget去获取

我们也可以成对的使用hmset和hmget

 

(14)hdel hlen hkeys hvals

hdel 删除hash中的某个键或者多个键

hlen 返回hash的大小

hkeys 返回hash里key的列表

hvals返回hash里value的列表

(15)hgetall HINCRBY

hgetall获取hash中所有的键值对,奇数行代表key,偶数行代表value

HINCRBY类似于整数的自增,需要指定每次增加多少

 (16)String和hash的应用场景比较

String优点:简单直观,每个键对应一个值

String缺点:键数过多,占用内存多,用户信息分散,不用于生产环境(键比较少或者记录数比较少的时候也可以使用,不是绝对的)

Hash类型

优点:简单直观,使用合理可以减少内存空间消耗

缺点:老版本(3.2以前)注意ziplist和hashtable两种编码转换,新版本都是用的quicklist

将对象序列化存入string:

优点:编程简单,若使用序列化合理内存使用率高

缺点:序列化和反序列化有一定开销,查询不直观

总结:键比较少,记录比较少的时候可以用string,键比较多,记录比较多推荐使用json

比如一个表中有id,name,age,city等字段,我们就可以使用hmset

需要的时候按需根据hmget或者hget来取就行了 

--以下为list相关的命令

(17)rpush、lpush和lrange

rpush从右边插入,每次放到list的最右边

lpush从右边插入,每次放到list的最左边

lrange获取元素不弹出,-1代表最后

 (18)lpop、rpop

lpop,弹出最左边的元素,返回值是弹出的元素

rpop,弹出最右边的元素,返回值是弹出的元素

 (19)lrem

从左边删除元素  lrem demolist  2 x

表示从demolist的左边找到两个x并删除

 

 (20)ltrim lset

ltrim对list进行裁剪

lset设置list指定下标的值

 (21)lindex llen

lindex获取指定下标的值

llen返回list的长度

 (22)blpop brpop

阻塞式从左边或者右边弹出元素

跟lpop、rpop的区别是:如果有元素表现相同,如果没有元素的话,会阻塞。

可以使用作为简单的MQ

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++学习笔记之数组,结构体...

1️⃣.一维数组的声明: 一般声明:typeName arrayName[arraysize]; 要创建数组,可使用声明语句。数组的声明应该指出数组的①存储在每个元素中的值的类型②数组名③数组中的元素数 比如: short month[12] //create an array o…

各位软件工程师,你知道如何转行跨入Web3.0领域吗?

本篇博客介绍一些 Web3 领域相关知识,由于擦哥长期从事的 Python 研发工作,所以很多内容将从 Python 程序员的视角出发进行阐述。 本系列文章由擦哥撰写,下述用第三人称橡皮擦转述。 文章目录Web3 的学习路径Web3 是什么?语义网络…

轻松玩转树莓派Pico之六、pico-project-generator使用

之前几个项目,都是通过copy老项目的CMakeLists.txt方式来编译项目,今天来体验一下树莓派官方提供的工具pico-project-generator。pico-project-generator是树莓派官方出的Pico C SDK 项目的自动生成工具,该工具可以通过配置,自动生…

JavaEE9-Spring Boot概念,创建和运行

目录 1.Spring Boot是什么?为什么要学? 1.1.概念 1.2.优点 2.Spring Boot项目创建 2.1.使用Idea创建(ide开发商提供) 2.1.1.使用Idea社区版 2.1.2.使用Idea专业版 2.2.网页版创建(Spring官方提供) …

基于深度学习的车道线检测论文解读

Ultra Fast Structure-aware Deep Lane Detection 论文地址:https://arxiv.org/abs/2004.11757 1.任务概述 车道线检测使用OpenCV就能够实现,而基于深度学习的车道线检测尝试解决车道线检测中的遮挡问题。 数据集介绍: 常用数据集:CULane Dataset,Tusimple(特点就是非常…

PostgreSQL 逻辑复制搭建测试

一、 准备工作 1. Publication(发布)节点 postgersql.conf wal_level logical max_replication_slots 8 #每个订阅需要消耗一个slot max_wal_senders 10 #每个订阅需要使用一个wal sender max_worker_processes128 #必须 >max_wal_senders加并…

BIO NIO AIO IO多路复用的区别

1、基础概念 1.1、阻塞非阻塞和同步异步的结合 下面通过例子来具体说明: 同步阻塞: 小明一直盯着下载进度条,到100%的时候完成。 同步体现在:小明关注下载进度条并等待完成通知。(可以看成同步是我主动关注任务完成的…

进度管理(上)

规划进度管理 定义:规划进度管理是为实施项目进度管理制定计划的过程。 输入: 1、项目管理计划 2、项目章程(包含里程碑,这个和规划进度有直接干系) 3、组织过程资产 4、事业环境因素。 输出:进度管…

2 线性回归demo数据-参数配置|训练回归模型|常见的tensor格式|Hub模块简介|气温数据集与任务介绍

文章目录线性回归demo数据-参数配置线性回归demo数据-训练回归模型常见的tensor格式scalarvectormatrix线性回归demo数据-参数配置 # 先传入数据,可以是手动定义,也可以导入,这边就直接拿一条直线y2x1,来进行模拟了。 # 构造x和y…

一篇五分生信临床模型预测文章代码复现——Figure 7 外部数据集验证模型

之前讲过临床模型预测的专栏,但那只是基础版本,下面我们以自噬相关基因为例子,模仿一篇五分文章,将图和代码复现出来,学会本专栏课程,可以具备发一篇五分左右文章的水平: 本专栏目录如下: Figure 1:差异表达基因及预后基因筛选(图片仅供参考) Figure 2. 生存分析,…

python爬虫学习笔记-SQL学习

Sql概述 先来看一个例子:小王第一次使用数据库,然后跟数据库来了个隔空对话 其实,我们想一想,mysql是一个软件,它有它自己一套的管理规则,我们想要跟它打交道,就必须遵守它的规则,如…

【stl -- 常用算法】

目录:前言一、遍历算法for_each、transform二、查找、统计算法find、find_ifadjacent_findbinary_searchcount、count_if三、排序算法sortrandom_shufflemergereverse拷贝、替换算法copyreplace、replace_ifswap算数生成算法accumulatefill集合算法set_intersection…

Day10 @Import整合第三方框架原理

1 前言Spring与MyBatis注解方式整合有个重要的技术点就是lmport,第三方框架与Spring整合xml方式很多是凭借自定义标签完成的,而第三方框架与Spring整合注解方式很多是靠import注解完成的。然后Import可以导入如下三种类:普通的配置类&#xf…

【蓝桥杯】历届真题 画廊(决赛)Java

【资源限制】 内存限制:256.0MB C/C时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s 【问题描述】 小蓝办了一个画展,在一个画廊左右两边陈列了他自己的作品。为了使画展更有意思,小…

英语学习打卡day6

2023.1.26 1.promiscuous adj.混杂的;杂乱的;滥交的 pro(往前)misc(mix):在混乱上勇往直前 2.susceptible adj.易受影响(或伤害等);敏感;过敏;感情丰富的;善感的 accept(抓)接受 be susceptible to对…敏感 She isn…

【数据结构】7.3 树表的查找

文章目录7.3.1 二叉排序树1. 二叉排序树的定义2. 二叉排序树的查找二叉排序树算法二叉排序树算法分析3. 二叉排序树的插入4. 二叉排序树的生成5. 二叉排序树的删除7.3.2 平衡二叉树1. 平衡二叉树的定义2. 平衡二叉树的平衡调整方法LL型调整RR型调整LR型调整RL型调整3. 构造平衡…

C#手动操作DataGridView之------使用各种数据源填充表格实例

C#中的表格控件只有一个,那就是datagridview,不像QT中可以用QTableview,QTableWidget。新手拿到datagridview的第一个问题就是数据从哪里来?难道从设计器中一个个手动输入,到时候要变怎办?所以,…

Python3 PIL处理任意尺寸图片为1920*1080 图片模糊 虚化 图片合并居中叠加

各位好,我是宋哈哈,很久没更新文章了,其实这篇代码是我在年前已经写好了。代码呢,也比较冷门适合人很少。仅仅对会AE , PR 视频剪辑, 又要会 python 的人,而且在公司领导又要你来做相册视频,在公…

MSBuild 命令行编译Delphi

为了构建项目,IDE现在使用MSBuild而不是以前的内部生成系统。IDE中的build、compile和make命令调用Microsoft的新生成引擎:MSBuild,它提供了全面的依赖性检查。MSBuild项目文件基于XML,包含描述项目的特定项、属性、任务和目标的部…

[GWCTF 2019]枯燥的抽奖

目录 信息收集 知识回顾 解题思路 信息收集 查看源码&#xff0c;发现check.php <?php #这不是抽奖程序的源代码&#xff01;不许看&#xff01; header("Content-Type: text/html;charsetutf-8"); session_start(); if(!isset($_SESSION[seed])){ $_SESSIO…