redis的学习(二):常见数据结构及其方法

简介

redis常见的数据结构和他们的常用方法

redis的数据结构

redis是一个key-value的nosql,key一般是字符串,value有很多的类型。
j基本类型:

  • string
  • hash
  • list
  • set
  • sortedSet

特殊类型:

  • GEO
  • BitMap
  • HyperLog

key的结构

可以使用多个单词,中间使用:隔开来形成层级结构
例如 :
school:student:1
school:teacher:1
在这里插入图片描述
在这里插入图片描述
在图形界面可以查看到层级结构
在这里插入图片描述

redis的常用通用命令

可以使用help @generic查看全部的通用命令的帮助文档,也可以使用help 具体命令 查看具体命令的帮助文档。
下面是一些常用的通用命令

keys

可以接通配符,如

keys *:查看所有的key。
keys n * :查看所有n开头的key
在这里插入图片描述

注意:不建议在生产环境下使用

del

del key名:删除key,可以同时删除多个

exist

exist key名:查看指定key是否存在,存在返回1,不存在返回0。
在这里插入图片描述

expire

expire key名 时间(秒):给一个key设置有效时间,到了有效时间改key会删除。

ttl

ttl key名:查看key剩余有效时间,-1表示永久有效,-2表示已过期
在这里插入图片描述

String类型

是redis中最简单的存储类型。但根据字符串的格式,可以分为

  • string:普通字符串
  • int:整型,可进行自增自减操作
  • float:浮点类型,可进行自增自减操作
    它们的底层都是字节形式存储,只是编码方式不同
常用命令:
  • set:添加键值对或修改已经存在的key的value
  • get:根据key获得value
  • mset:批量添加键值对
  • mget:根据多个key获得多个value
  • incr:整型类型的数字自增长1
  • incrby:整型类型的数字自增长,指定增长值,加上负数就是自减
  • incrbyfloat:浮点类型的数字自增长,可以指定增长值
  • setnx:添加一个string类型的键值对,这个key要不存在,否则不执行。
  • setex:添加一个string类型的键值对,并指定有效期
    在这里插入图片描述

hash类型

也叫散列,其value是个无序字典

常用命令
  • hset key名 字段名 value值:添加或者修改hash类型的key的字段的值
  • hget key名 字段名:获取hash类型的字段的值
  • hmset:批量添加多个hash类型的key的字段的值
  • hmget:批量获取多个hash类型的key的字段的值。
  • hgetall:获取一个hash类型的key中的所有的field字段和value值。
  • hkeys:获取一个hash类型的key中的所有的field字段。
  • hvals:获取一个hash类型的key中的所有的value值。
  • hincrby:让一个hash类型key的字段值自增并指定步长。
  • hsetnx:添加一个hash类型的key的field值,前提是这个field不存在,否则不执行。
    在这里插入图片描述

list类型

和Java中的linkedlist类似,支持正向检索和反向检索。
特点:

  • 有序
  • 元素可重复
  • 插入和删除快,查询一般
常用命令
  • lpush key element …:向列表左侧插入一个或多个元素。
  • lpop key:移除并返回列表左侧的第一个元素,如果没有元素,则返回 nil。
  • rpush key element …:向列表右侧插入一个或多个元素。
  • rpop key:移除并返回列表右侧的第一个元素。
  • lrange key start end:返回列表中指定区间内的元素,起点包括,终点不包括。
  • blpop和 brpop :这两个命令类似于 LPOP 和 RPOP,但在没有元素的时候会阻塞等待指定的时间,而不是立即返回 nil。
    在这里插入图片描述

set类型

和Java中的hashset类似
特点:

  • 无序
  • 元素不可重复
  • 查询快
  • 可以进行交集,并集的操作
常用命令
  • sadd key member …:set中添加一个或多个元素
  • srem key member…:溢出set中指定的元素
  • scard key:返回set中的元素的个数
  • sismember key member:判断一个元素是否存在于set中
  • smembers:获取set中的所有元素

在这里插入图片描述

  • sinter key1 key2…:key1和key2的交集,共同拥有的部分
  • sdiff key1 key2 …:key1和key2的差集,key1有key2没有的部分
  • sunion key1 key2…:key1和key2的并集,key1和key2的加起来
    在这里插入图片描述

sortedset类型

可排序的set组合,它的每一个元素都带有score属性,可以基于这个score属性对元素进行排序。
特点:

  • 可排序
  • 元素不可重复
  • 查询速度快
常用命令

zadd key score member:添加一个或多个元素到sorted set,如果已经存在则更新其score值
zrem key member:删除sorted set中的一个指定元素
zscore key member :获取sorted set中的指定元素的score值
zrank key member:获取sorted set中的指定元素的排名
zcard key:获取sorted set中的元素个数
zcount key min max:统计score值在给定范围内的所有元素的个数
zincrby key increment member:让sorted set中的指定元素自增,步长为指定的increment值
zrange key min max:按照score排序后,获取指定排名范围内的元素
zrangebyscore key min max:按照score排序后,获取指定score范围内的元素
zdiff:差集
zinter:交集
zunion:并集
注意:这里的排序都是升序的,如果要降序,把命令的开头z换成zrev
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

常用的网络爬虫工具推荐

在推荐常用的网络爬虫工具时,我们可以根据工具的易用性、功能强大性、用户口碑以及是否支持多种操作系统等多个维度进行考量。以下是一些常用的网络爬虫工具推荐: 1. 八爪鱼 简介:八爪鱼是一款免费且功能强大的网站爬虫,能够满足…

mysql练习3

1.修改student 表中年龄(sage)字段属性,数据类型由int 改变为smallint 2.为Course表中Cno 课程号字段设置索引,并查看索引 3.为SC表建立按学号(sno)和课程号(cno)组合的升序的主键索引,索引名为SC_INDEX 4.创建一视图 stu info,查询全体学生的姓名&#…

MinIO使用基础教程

MinIO使用基础教程 一、背景二、快速安装2.1 虚拟机安装2.2 Windows安装2.2.1 下载MinIO服务器2.2.2 启动 MinIO Server2.2.3 通过浏览器访问MinIO服务控制台 三、使用介绍3.1 创建存储桶3.2 上传和下载文件3.3 设置文件公开访问 四、实战SpringBoot Minio实现文件上传和查询五…

思维+01背包,LeetCode LCP 47. 入场安检

一、题目 1、题目描述 「力扣挑战赛」 的入场仪式马上就要开始了,由于安保工作的需要,设置了可容纳人数总和为 M 的 N 个安检室,capacities[i] 记录第 i 个安检室可容纳人数。安检室拥有两种类型: 先进先出:在安检室中…

Git之repo sync -c与repo sync -dc用法区别四十八)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

看准JS逆向案例:webpack逆向解析

🔍 逆向思路与步骤 抓包分析与参数定位 首先,我们通过抓包工具对看准网的请求进行分析。 发现请求中包含加密的参数b和kiv。 为了分析这些加密参数,我们需要进一步定位JS加密代码的位置。 扣取JS加密代码 定位到JS代码中的加密实现后&a…

[@Aspect注解爆红]

在SpringAOP的实现过程中&#xff0c;定义切面中通过注解Aspect来声明当前类是一个切面&#xff0c;但是Aspec注解爆红。 上网查询了一下相关原因&#xff0c;才发现在仓库中复制的Spring AOP依赖不正确。 <!--Spring AOP--> <!-- https://mvnrepository.com/artifact…

ARM架构(二)—— arm v7-a/v8/v9寄存器介绍

1、ARM v7-A寄存器 1.1 通用寄存器 V7 V8开始 FIQ个IRQ优先级一样&#xff0c; 通用寄存器&#xff1a;31个 1.2 程序状态寄存器 CPSR是程序状态毒存器&#xff0c;保存条件标志位&#xff0c;中断禁止位&#xff0c;当前处理器模式等控制和状态位。每种异常模式下还存在SPS…

数学建模学习(2)——决策树

import pandas as pd from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier from sklearn.metrics import accuracy_score dfpd.read_excel(股票客户流失.xlsx) xdf.drop(columns是否流失)#x等于除是否流失这一列以外的数据…

在Windows安装、部署Tomcat的方法

本文介绍在Windows操作系统中&#xff0c;下载、配置Tomcat的方法。 Tomcat是一个开源的Servlet容器&#xff0c;由Apache软件基金会的Jakarta项目开发和维护&#xff1b;其提供了执行Servlet和Java Server Pages&#xff08;JSP&#xff09;所需的所有功能。其中&#xff0c;S…

Java | Leetcode Java题解之第275题H指数II

题目&#xff1a; 题解&#xff1a; class Solution {public int hIndex(int[] citations) {int n citations.length;int left 0, right n - 1;while (left < right) {int mid left (right - left) / 2;if (citations[mid] > n - mid) {right mid - 1;} else {lef…

uniapp中出现Uncaught runtime errors

项目中运行出现上面的错误信息&#xff0c;使用uniapp发现&#xff0c;其实我只是跨域了&#xff0c;控制台报错&#xff0c;但是不想屏幕上显示&#xff1b; 解决办法是在vue.config.js增加如下配置即可 devServer: {client: {overlay: false,errors:true},}, 错误信息也不想…

【杰理蓝牙开发】AC695x 音频部分

本文主要记录 杰理蓝牙audio接口的使用&#xff0c;包括ADC和DAC原理的介绍和API接口的使用。 【杰理蓝牙开发】AC695x 音频部分 0. 个人简介 && 授权须知1. ADC【音频数据采集】硬件部分1.1 单片机引脚1.2 硬件电路设计1.3 MIC 输入通路解释 2. 【DAC】音频信号编解码…

Apache压测工具ab(Apache Bench)工具的下载安装和使用示例

场景 Jmeter进行http接口压力测试&#xff1a; Jmeter进行http接口压力测试_接口压测两万量-CSDN博客 上面讲压测工具Jmeter的使用&#xff0c;下面介绍另外一个ab(Apache Bench)压测工具的使用。 apache bench apache bench是apache自带的压力测试工具。 ab不仅可以对ap…

MacOS安装SDKMan管理Java版本

文章目录 1 简介2 安装与卸载2.1 安装2.2 卸载 3 使用3.1 查看其他工具&#xff1a;支持 Ant, Maven 等3.2 查看Java版本3.3 安装Java&#xff0c;加上相关的版本3.4 设置Java版本(全局)3.5 只在当前窗口生效3.6 卸载1 默认环境无法卸载 4 jdk安装的位置5 与IDEA集成参考 1 简介…

推荐使用阿贝云免费云服务器、免费虚拟主机

官网地址&#xff1a;https://www.abeiyun.com 阿贝云的免费云服务器简直太棒了&#xff01; 首先&#xff0c;它的性能表现超出了我的预期。在使用过程中&#xff0c;服务器的响应速度非常快&#xff0c;无论是处理日常的网页浏览请求&#xff0c;还是运行一些小型的应用程序…

振荡器和谐振器的区别

首先了解一阶电路知识 一阶电路基础知识-CSDN博客 振荡器&#xff08;Oscillation&#xff09; 振荡器是一种在无外部激励信号下&#xff0c;它能够自激振荡&#xff0c;产生持续交变电压或电流输出&#xff0c;产生连续振荡信号的电路元件。它通过正反馈回路将一部分输出信号…

C++ 设计模式(五)——状态模式

状态模式 序言理解源码 序言 设计模式只是一个抽象的设计模式方法&#xff0c;并不是一个固定使用的搭配&#xff0c;就算是普通switch语句&#xff0c;Map&#xff0c;乃至状态机都是状态模式的其中一种实现方法 状态模式看起来好像和策略模式差不多&#xff0c;主要是其的侧…

企业快速获客-AI机器人批量筛选

那么企业利用AI机器人进行快速获客和批量筛选时&#xff0c;可以遵循以下步骤和策略&#xff0c;以确保高效、准确地获取目标客户&#xff1a; 1. 明确筛客需求 - 企业首先需要明确自身的筛客需求&#xff0c;例如筛选目标客户群、快速识别意向客户等。 - 明确需求有助于…

领夹麦克风哪个品牌好,电脑麦克风哪个品牌好,热门麦克风推荐

​在信息快速传播的时代&#xff0c;直播和视频创作成为了表达与交流的重要方式。对于追求卓越声音品质的创作者而言&#xff0c;一款性能卓越的无线麦克风宛如一把利剑。接下来&#xff0c;我要为大家介绍几款备受好评的无线麦克风&#xff0c;这些都是我在实际使用中体验良好…