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.mzph.cn/bicheng/48874.shtml

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

相关文章

MacOS M1 安装item2 并配置Zsh

文章目录 1 下载item22 美化item22.1 配置主题2.2 设置黑色的主题:2.3 配置显示状态栏 status bar 3 安装 Oh my zsh3.1 设置主题3.2 设置插件3.3 安装第三方插件1 下载仓库解压2 使用 git clone 一些常用插件以及其作用 参考 1 下载item2 MacOS自带终端&#xff0…

ontap simulator配置过程

一、下载模拟器 参考《Simulate_ONTAP_9-14-1_Installation_and_Setup_Guide.pdf》P4的指导,登录网站进行下载。 二、传入pve,并解压转换 # 解压 tar -xvf vsim-netapp-DOT9.14.1-cm_nodar.ova# 解压后的文件列表,其中ovf文件里定义了虚拟机…

WGS84经纬度坐标 GCJ02火星坐标 BD09百度坐标互相转换

WGS84经纬度坐标 GCJ02火星坐标 BD09百度坐标互相转换 背景:uniapp做的微信小程序,使用到了相机拍照并获取位置坐标信息;在腾讯地图上展示坐标点位置信息; 由于业务需要我们的PC端用的不是腾讯地图,需要使用WGS84坐标或…

《0基础》学习Python——第二十三讲__网络爬虫/<6>爬取哔哩哔哩视频

一、在B站上爬取一段视频(B站视频有音频和视频两个部分) 1、获取URL 注意:很多平台都有反爬取的机制,B站也不例外 首先按下F12找到第一条复制URL 2、UA伪装,下列图片中(注意代码书写格式) 3、Co…

ViT(Vision Transformer)网络结构详解

本文在transformer的基础上对ViT进行讲解,transformer相关部分可以看我另一篇博客(transformer中对于QKV的个人理解-CSDN博客)。 一、网络结构概览 上图展示了Vision Transformer (ViT) 的基本架构,我按照运行顺序分为三个板块进…

Rancher

文章目录 Rancher1. 安装和配置2. 服务部署和管理3. 容器自动化缩容和扩容 Rancher Rancher 是一个开源的企业级容器管理平台,旨在简化容器化应用的部署、管理和运维。它支持多种容器编排引擎,如 Kubernetes、Docker Swarm 等,并提供了统一的…

自动驾驶系统开发与调试:车路云一体化无人驾驶挑战赛参赛体验

点击蓝字 关注我们 在过去的几年里,自动驾驶技术在全球范围内吸引了大量关注。其潜力不仅在于提升行车安全,而且还可以改变我们的出行方式和城市规划,提高交通运输效率。国际汽车工程师学会(SAE)根据不同自动驾驶程度&…

JAVA在线文档

1.存在码 JDK21中文API 2.全栈行动派 JDK17中文API 3.mklab.cn JDK11中文API JDK8中文API JDK7-21英文API 4.docs.oracle.com JDK7-22英文文档

项目笔记| 基于Arduino和IR2101的无刷直流电机控制器

本文介绍如何使用 Arduino UNO 板构建无传感器无刷直流 (BLDC) 电机控制器或简单的 ESC(电子速度控制器)。 无刷直流电机有两种类型:有传感器和无传感器。有感无刷直流电机内置3个霍尔效应传感器,这些传感…

MLIR的TOY教程学习笔记

MLIR TOY Language 文章目录 MLIR TOY Language如何编译该项目ch1: MLIR 前端IR解析ch2: 定义方言和算子 (ODS)1. 定义方言2. 定义OP3. OP相关操作4. 定义OP ODS (Operation Definition Specification)1. 基本定义2. 添加文档3. 验证OP4. 新增构造函数5. 定义打印OP的格式 ch3:…

【机器学习】超参数选择:解锁机器学习模型潜力的关键

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 超参数选择:解锁机器学习模型潜力的关键引言什么是超参数&#xff1…

计算机的错误计算(三十八)

摘要 计算机的错误计算(十九)指出:两个等价大数相减,差不是正确值0,而是一个大数。本节用 Python的 torch库中函数进行计算验证,进一步说明错误的一般性。 例1. 在Windows10,Python 3.12.4 下…

Android APP Camerax应用(02)预览流程

说明:camera子系统 系列文章针对Android12.0系统,主要针对 camerax API框架进行解读。 1 CameraX简介 1.1 CameraX 预览流程简要解读 CameraX 是 Android 上的一个 Jetpack 支持库,它提供了一套统一的 API 来处理相机功能,无论 …

【HarmonyOS NEXT】网络请求 - 分页加载

分页加载关键字:onReachEnd 一、申请网络权限 在 module.json5 文件中,添加网络权限: {"module": {..."requestPermissions": [{"name": "ohos.permission.INTERNET","usedScene": {&qu…

网络安全常用易混术语定义与解读(Top 20)

没有网络安全就没有国家安全,网络安全已成为每个人都重视的话题。随着技术的飞速发展,各种网络攻击手段层出不穷,保护个人和企业的信息安全显得尤为重要。然而,在这个复杂的领域中,许多专业术语往往让人感到困惑。为了…

portainer教程-docker可视化管理工具

很多朋友刚接触docker 学习,就想问 docker有图形化界面吗 ,答案是肯定的, 这里白眉大叔 给大家推荐 Docker可视化管理平台 -- Portainer 1- 运行Portainer: docker run -d -p 8000:8000 -p 9000:9000 --name portainer --restarta…

【保姆级讲解C语言中的运算符的优先级!】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 🪶C语言中的运算符的优先级 🪶C语言中的运算符的优先级决定了…

二、C#数据类型

本文是网页版《C# 12.0 本质论》第二章解读。欲完整跟踪本系列文章,请关注并订阅我的Essential C# 12.0解读专栏。 前言 数据类型(Data Type)是一个很恼人的话题。 似乎根本没必要对数据类型进行展开讲解,因为人人都懂。 但是…

grafana大坑,es找不到时间戳 | No date field named timestamp found

grafana大坑,es找不到时间戳。最近我这边的es重新装了一遍,结果发现grafana连不上elasticsearch了(以下简称es),排查问题查了好久一直以为是es没有装成功或者两边的版本不兼容,最后才发现是数值类型问题 一…

浅聊 Three.js 屏幕空间反射SSR-SSRShader

浅聊 Three.js 屏幕空间反射SSR(2)-SSRShader 前置基础 渲染管线中的相机和屏幕示意图 -Z (相机朝向的方向)||| -------------- <- 屏幕/投影平面| | || | || | (f) | <- 焦距| | ||…