【速成Redis】02 Redis 五大基本数据类型常用命令

news2024/9/20 7:22:12

前言:

上一节课,我们对redis进行了初步了解,和安装好了redis。
【速成Redis】01 Redis简介及windows上如何安装redisicon-default.png?t=O83Ahttps://blog.csdn.net/weixin_71246590/article/details/142319358?spm=1001.2014.3001.5501

该篇博客,我们正式开始学习redis的操作。

上节课我们讲到redis的数据类型有如下几种:

本篇我们将讲解:redis五大基本数据类型(也是就上图的第一列)的常用语句。 

食用说明:初学者建议边看边看边敲。复习者可根据目录快速复习某个命令。

目录

1.字符串String

设置键值对:set key value

根据键取其值:get key

删除某个键:del key 

判断一个键是否存在:exists key 

 查找所有的键:keys * 

查找所有以ge结尾的键:*ge

删除所有的键:flushall 

如何设置带有过期时间的键值对?

- setnx 和setex 的区别

2.list(列表)

lpush(头插元素)

lrange(查看当前元素)

lpop、rpop 命令也可以一次性删除多个元素

删除操作: 

3.集合Set

新建/增加set中的元素:sadd  set x y z 

查看set中的成员:smember  set

判断某个元素是否在set中:sismember set element

删除set中某个元素 :srem sourse element

4.有序集合sortedSet

创建一个集合/追加元素:zadd 

查看集合中的元素:zrange

查看某个成员分数:zscore

查看某个成员排名(从大到小):zrevrank

- 删除有序集合中的某个成员:ZREM

- 对某个成员的分数进行增加ZINCRBY

- 删除某个排名范围内的成员ZREMRANGEBYRANK

5.哈希Hash

 hset用法示例:设置名为person的集合的键值对

hget用法示例: 查看名为person的某个key对应的value

hgetall:查看某个集合里的所有的键值对 

hdel:删除某个集合里的某个键值对

hexists:查看某个集合里的某个键值对是否存在 

 hkeys:获取所有键值对的key 

 hlen:获取所有键值对的数量


1.字符串String

redis insight 中也可以使用命令行。

- redis中的值以键值对的方式存储。

设置键值对:set key value
根据键取其值:get key


- redis里的键区分大小写

- redis里默认使用字符串存储数据,并且是二进制安全的,我们可以把很多类型的数据存储到redis当中,比如数字,布尔类型,序列化后的对象等。


删除某个键:del key 


判断一个键是否存在:exists key 


 查找所有的键:keys * 


查找所有以ge结尾的键:*ge


删除所有的键:flushall 

 


(ps:redis中的值都是以二进制的形式存储的,默认是不支持中文的) 

中文 -> 二进制

\x表示后面的是16进制

解决办法:

在连接服务时候加上一个raw参数,表示以原始形式显示内容:

redis-cli --raw


跟着练习的小伙伴们,这时候的命令行窗口已经很满了,我们需要清空屏幕: 

清空屏幕:clear


如何设置带有过期时间的键值对?

- TTL命令查看键的过期时间(time to live :表示这个键还有多久过期) 

ttl key 

- 给已经存在的key设置过期时间:

expire key 10 (默认为单位为秒)

- 直接新建一个带有过期时间的键值对:

setex key seconds value


- setnx 和setex 的区别

setnx key value:当键不存在时,才新建该键,当键已经存在时,不做任何动作。

set key value:当键不存在时,新建该键。当键已经存在时,覆盖原value。


2.list(列表)

一般用来存储和操作一组有顺序的数据,类似数组。

lpush(头插元素)
lrange(查看当前元素)

lpush可以一次性添加多个元素~ 


当前list中的状况:  

通过观察我们可以知道:lpush是头插法:元素添加到list头部


rpush是尾插法(元素添加到列表尾部),其用法与lpush类似。

 


看这个图可以理解四个关键字:进出都有两个方向

l代表左边(left),r代表右边(right)

lpop、rpop 命令也可以一次性删除多个元素

一次性删除两个元素:lpop list

(注意:redis版本大于6.2.0才能一次性删除多个元素)


查看列表元素:llen list


实现简单的消息队列:可以用 rpop让队尾的元素出队 ,用lpush让心元素进队头。


删除操作: 

删除一个整个队列:del list

删除列表元素(理解为保留列表指定范围x-y内的元素):ltrim list x y

3.集合Set

set 为无序不重复集合,就是我们在数学上的那个集合。

list中的元素可以重复,而set中不可以。

set的命令以s开头

新建/增加set中的元素:sadd  set x y z 
查看set中的成员:smember  set

验证set的唯一性,尝试添加已有元素:

0 通常表示命令没有对目标数据造成实际变化,影响的元素数为 0

判断某个元素是否在set中:sismember set element

删除set中某个元素 :srem sourse element

 

(图片标注那里有个错别字啊啊啊,见谅)

我是故意的,让大家记住srem!!

 集合的运算:

两个集合之间的交集、并集等运算,redis当中也是支持的。


4.有序集合sortedSet

有序集合,可以理解为优先级队列,每个元素有一个分数,代表权重。

创建一个集合/追加元素:zadd 
查看集合中的元素:zrange

使用例子:

注意使用zadd关键字时是先分数再成员。


查看某个成员分数:zscore

zscore key member

 


查看某个成员排名(从小到大):zrank

zrank result member 

 

注意:下标是从0开始的,这里的排名值的是升序排序(从小到大)的排名。


查看某个成员排名(从大到小):zrevrank

zrevrank result member 


- 删除有序集合中的某个成员:ZREM

可以使用 ZREM命令来删除有序集合中的某个或多个成员。

ZREM key member [member ...]

示例:

ZREM result alice


- 对某个成员的分数进行增加ZINCRBY

可以使用ZINCRBY命令为有序集合中的某个成员增加指定的分数。

ZINCRBY key increment member

示例:

ZINCRBY result 10 sally


- 删除某个排名范围内的成员ZREMRANGEBYRANK

可以使用 ZREMRANGEBYRANK 命令根据成员的排名范围删除成员。排名是按分数从低到高排列。

ZREMRANGEBYRANK key start stop

示例:

ZREMRANGEBYRANK result 0 2 

该命令将删除 result 集合中排名从 0 到 2 的成员(排名从 0 开始)。


5.哈希Hash

哈希是一个字符类型的字段和值的映射表。键值对的集合。特别适合存储对象。

 前面我们在学习字符串时所使用的set和get的操作在这里变成hset、hget

我们现在有一个对象person:

其name:taylor

其age:32

 hset用法示例:设置名为person的集合的键值对

hget用法示例: 查看名为person的某个key对应的value

hgetall:查看某个集合里的所有的键值对 

  

hdel:删除某个集合里的某个键值对

 

可以看到删除完之后只剩person了。

hexists:查看某个集合里的某个键值对是否存在 

 

1表示name存在,0表示age不存在。

注意这里的exists是有s的,可以理解为第三人称单数(?)

 hkeys:获取所有键值对的key 

 hlen:获取所有键值对的数量

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

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

相关文章

如何在Unity发布安卓移动端游戏

在移动端手机游戏开发的时候,我从最开始就遇到了一个问题,并不是技术上的问题,而是移动端游戏如何进行发布的问题,由于之前所使用的都是基于Windows平台的电脑游戏,并没有使用过手机游戏开发环境,所以&…

【ComfyUI】自定义节点ComfyUI_LayerStyle——模仿 Adob​​e Photoshop 的图层样式、图层混合、图文混合、添加不可见水印

官方代码:https://github.com/chflame163/ComfyUI_LayerStyle.git 相关资料下载:https://pan.baidu.com/s/16vmPe6-bycHKIjSapOAnZA?pwd0919 简介 在ComfyUI画布点击右键 - Add Node, 找到 “😺dzNodes”。 节点根据功能分为5组&#xff…

C++ | Leetcode C++题解之第403题青蛙过河

题目&#xff1a; 题解&#xff1a; class Solution { public:bool canCross(vector<int>& stones) {int n stones.size();vector<vector<int>> dp(n, vector<int>(n));dp[0][0] true;for (int i 1; i < n; i) {if (stones[i] - stones[i -…

【tomcat】tomcat学习笔记

文章目录 1.tomcat乱码问题1.1 linux乱码中文显示乱码问号问题1.2windows乱码1.2.1 方式一1.2.2方式二 1.3 Idea中运行tomcat乱码问题 2. 获取tomcat启动端口号3. idea运行tomcat 的配置问题4.dockerfile构建tomcat镜像问题4.1 替换端口号 5.启动多个tomcat方法6.修改tomcat JA…

Unity 设计模式 之 【什么是设计模式】/ 【为什么要使用设计模式】/ 【架构和设计模式的区别】

Unity 设计模式 之 【什么是设计模式】/ 【为什么要使用设计模式】/ 【架构和设计模式的区别】 目录 Unity 设计模式 之 【什么是设计模式】/ 【为什么要使用设计模式】/ 【架构和设计模式的区别】 一、简单介绍 二、 Unity 设计模式 1、Unity 开发中使用设计模式的特点 2…

LabVIEW软件维护的内容是什么呢?

LabVIEW软件维护涉及多个方面&#xff0c;确保程序的正常运行和长期稳定性。维护内容包括以下几个方面&#xff1a; 1. Bug修复 在开发和运行过程中&#xff0c;可能会出现各种软件问题或缺陷&#xff08;bugs&#xff09;。维护工作之一就是识别这些问题并通过修复程序中的代…

MATLAB 在数学建模中的深入应用:从基础到高级实践

目录 前言 一、MATLAB基础知识 1.1 MATLAB工作环境简介 1.1.1 命令窗口&#xff08;Command Window&#xff09; 1.1.2 工作区&#xff08;Workspace&#xff09; 1.1.3 命令历史&#xff08;Command History&#xff09; 1.1.4 编辑器&#xff08;Editor&#xff09; 1…

独立站冷启动SOP之市场和竞品调研1.0丨出海笔记

大家好&#xff0c;我是出海笔记Club的创始人Alan&#xff0c;过去半年我们做了15期的操盘手面对面&#xff0c;主要围绕的是跨境电商独立站的冷启动&#xff0c;基本上大部分方法和路径我们都覆盖到了。 我把目的&#xff0c;调研内容和可以使用的工具都罗列出来&#xff0c;…

Golang | Leetcode Golang题解之第417题太平洋大西洋水流问题

题目&#xff1a; 题解&#xff1a; type pair struct{ x, y int } var dirs []pair{{-1, 0}, {1, 0}, {0, -1}, {0, 1}}func pacificAtlantic(heights [][]int) (ans [][]int) {m, n : len(heights), len(heights[0])pacific : make([][]bool, m)atlantic : make([][]bool, …

如何使用 maxwell 同步到 redis?

文章目录 1、MaxwellListener2、MxwObject1. 使用Maxwell捕获MySQL变更2. 将Maxwell的输出连接到消息系统3. 从消息系统读取数据并同步到Redis注意事项 1、MaxwellListener package com.atguigu.tingshu.album.listener;import com.alibaba.fastjson.JSON; import org.apache.…

【RabbitMQ】重试机制、TTL

重试机制 在消息从Broker到消费者的传递过程中&#xff0c;可能会遇到各种问题&#xff0c;如网络故障、服务不可用、资源不足等&#xff0c;这些问题都可能导致消息处理失败。为了解决这些问题&#xff0c;RabbitMQ提供了重试机制&#xff0c;允许消息在处理失败之后重新发送…

汇编语言的基本指令及基本使用操作

一、立即数 立即数判断规则&#xff1a; 如果某个数的数值范围是0~255之间&#xff0c;那么这个数一定是立即数&#xff1b; 把某个数展开成2进制&#xff0c;这个数的最高位1至最低位1之间的二进制数序列的位数不能超过8位&#xff1b; 这个数的二进制序列的右边必须为偶数个…

Java-Day02学习

Java-Day02 一维数组 1.声明数组 int[ ] a; //声明数组时不规定数组长度 2.分配空间 a new int[5]; //分配空间: 告诉计算机分配几个连续的空间。eg:scores new int[30]; avgAge new int[6]; name new String[30]; 3.赋值 a [0] 8; //向分配的格子里放数…

结构体易忘点

结构体初始化 当我们去初始化一个结构体的时候&#xff0c;我们常常会按变量顺序初始化&#xff0c;但其实也可以不按顺序&#xff0c;同时也可以部分数据初始化。 结构体对齐 结构体里面的成员有一定的对齐规则&#xff0c;他不是每一个空间都存着有效数据的&#xff0c;有些…

大型语言模型 (LLM) 劫持攻击不断升级,导致每天损失超过 100,000 美元

Sysdig 威胁研究团队 (TRT) 报告称&#xff0c;LLMjacking&#xff08;大型语言模型劫持&#xff09;事件急剧增加&#xff0c;攻击者通过窃取的云凭证非法访问大型语言模型 (LLM)。 这一趋势反映了 LLM 访问黑市的不断增长&#xff0c;攻击者的动机包括个人使用和规避禁令和制…

小米机型“工程固件” 小米13工程资源预览 写入以及nv损坏修复

目前各大品牌机型中。可以录数于小米机型的工程固件最全 最多。这个也由于小米机型的加密机制比较特殊 。每款新机型发布后不久。工程包就会出现。从小米5起始以及红米note4起始都有工程固件。另外在维修行业中。米系机型更换cpu都需要先写入对应的绑定包。然后才可以写入官方m…

C++竞赛初阶L1-16-第七单元-字符串(36~37课)559: T456513 统计数字字符个数

题目内容 输入一行字符&#xff0c;统计出其中数字字符的个数。 输入格式 一行字符串&#xff0c;总长度不超过 255。 输出格式 输出为 1 行&#xff0c;输出字符串里面数字字符的个数。 样例 1 输入 Today is 2021-03-27 样例 1 输出 8 程序代码输出&#xff1a; #i…

idea多模块启动

文章目录 idea多模块启动2018版本的idea2019版本的idea idea多模块启动 2018版本的idea 1.首先看一下view> Tool Windows下有没有Run Dashboard 如果有&#xff0c;点击一下底部的窗口就会出现 如果不存在&#xff0c;执行下一步 2.查看自己项目的工作空间位置 点击 File&…

获取参数

获取querystring参数 querystring 指的是URL中 ? 后面携带的参数&#xff0c;例如&#xff1a;http://127.0.0.1:9090/web?query杨超越。 获取请求的querystring参数的方法如下&#xff1a; 方法1&#xff1a; Query package main// querystringimport ("github.com/…

如何通过IntelliJ IDEA 创建HTML项目

1、什么是IDEA? IntelliJ IDEA 是 JetBrains 开发的一款集成开发环境(IDE),主要用于 Java 编程,但也支持其他编程语言如 Kotlin、Groovy 和 Scala。它的特点包括智能代码补全、代码重构、集成版本控制、调试工具和丰富的插件支持。IDEA 提供了一个直观的用户界面,帮助开发…