【Redis】Redis中的5种基础数据类型详解

news2024/11/27 16:32:19

文章目录

    • 1. Redis数据结构
    • 2. 基础数据结构详解
      • 2.1 String字符串
      • 2.2 List列表
      • 2.3 Set集合
      • 2.4 Hash散列
      • 2.5 Zset有序集合

1. Redis数据结构

对于Redis来说,所有的key(键)都是字符串,我们一般所讨论的Redis基础数据类型指的是存储的value值的类型,总共包括五种:String字符串、List列表、Set集合、Zset有序集合、Hash散列。
在这里插入图片描述

2. 基础数据结构详解

2.1 String字符串

String是redis中最基本的数据类型,一个key对应一个String类型的value。String类型是二进制安全的,意思是 redis 的 string 可以包含任何数据。如数字,字符串,jpg图片或者序列化的对象。

命令使用:

127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> get hello
"world"
127.0.0.1:6379> del hello
(integer) 1
127.0.0.1:6379> get hello
(nil)
127.0.0.1:6379> set counter 2
OK
127.0.0.1:6379> get counter
"2"

2.2 List列表

本质上就是列表,而且是双端列表。
可以利用List的push操作来添加元素,使用List的pop操作来弹出并获取该元素。
rpush和lpush分别表示将元素添加到列表的右端和左端,rpop和lpop分别表示将从列表的右端和左端弹出并获取元素。
lrange获取列表在给定范围上的所有值。
lindex可以通过索引获取列表上的指定值。

命令使用:

127.0.0.1:6379> lpush mylist 1 2 ll ls mem
(integer) 5
127.0.0.1:6379> lrange mylist 0 -1
1) "mem"
2) "ls"
3) "ll"
4) "2"
5) "1"
127.0.0.1:6379> lindex mylist -1
"1"
127.0.0.1:6379> lindex mylist 10  # index不在 mylist 的区间范围内,所以取不到
(nil)

2.3 Set集合

set集合是一种无序、不重复的数据结构。每次对集合进行遍历时,元素的顺序都可能不同。
set集合中的元素是唯一的,同一个元素不会被重复添加到集合中。
当尝试添加一个已经存在于集合中的元素时,集合不会发生任何变化,也不会报错。
set集合中的元素类型必须相同,也就是说,所有元素都必须是同一种数据类型。如果尝试向set集合中添加不同类型的元素,Redis会返回一个错误。

命令使用:

127.0.0.1:6379> sadd myset hao hao1 xiaohao hao
(integer) 3
127.0.0.1:6379> smembers myset
1) "xiaohao"
2) "hao1"
3) "hao"
127.0.0.1:6379> sismember myset hao
(integer) 1

2.4 Hash散列

Hash在Redis内部是使用一个散列表来实现的,因此它可以快速地插入、删除和查找键值对。
Hash的值可以是字符串、数字或者二进制数据,这使得它可以存储各种类型的数据。
每个hash可以存储多个键值对,每个键值对都有一个唯一的键和一个对应的值。
由于使用了散列表,Hash在Redis中的存储效率非常高,即使存储了大量的键值对也能快速地进行操作。

命令使用:

127.0.0.1:6379> hset user name1 hao
(integer) 1
127.0.0.1:6379> hset user email1 hao@163.com
(integer) 1
127.0.0.1:6379> hgetall user
1) "name1"
2) "hao"
3) "email1"
4) "hao@163.com"
127.0.0.1:6379> hget user user
(nil)
127.0.0.1:6379> hget user name1
"hao"
127.0.0.1:6379> hset user name2 xiaohao
(integer) 1
127.0.0.1:6379> hset user email2 xiaohao@163.com
(integer) 1
127.0.0.1:6379> hgetall user
1) "name1"
2) "hao"
3) "email1"
4) "hao@163.com"
5) "name2"
6) "xiaohao"
7) "email2"
8) "xiaohao@163.com"

2.5 Zset有序集合

zset 中的每个元素都有一个分数(score)与之关联,可以根据分数的大小来进行排序。同时,zset 还提供了根据分数范围或排名范围来获取元素的方法。
zset 中的每个元素都是唯一的,不能有重复的元素。如果需要更新某个元素的分数或者添加一个新元素,可以使用 Redis 提供的相关命令。
zset 支持添加元素、删除元素、获取元素数量、获取指定范围的元素等多种操作,同时还支持交集、并集和差集等多种集合操作。
zset 在 Redis 中被广泛应用于排行榜、计数器、社交网络应用等场景中,其有序性和唯一性特点能够很好地满足这些场景的需求。

命令使用:

127.0.0.1:6379> zadd myscoreset 100 hao 90 xiaohao
(integer) 2
127.0.0.1:6379> ZRANGE myscoreset 0 -1
1) "xiaohao"
2) "hao"
127.0.0.1:6379> ZSCORE myscoreset hao
"100"

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

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

相关文章

ref在Vue2、Vue3中的使用

文章目录 前言一、ref在Vue2中的用法二、ref在Vue3中的用法 前言 记录一下ref在Vue2与Vue3中的使用,ref可以获取DOM元素,也可以获取子组件的数据、方法。 一、ref在Vue2中的用法 给元素绑定一个ref,然后在js中通过this.$refs获取DOM。 ref命…

@PostConstruct注解和@PreDestroy注解

前言 Bean注解指定初始化和销毁的方法,也介绍了使用InitializingBean和DisposableBean来处理bean的初始化和销毁。JDK中还提供了两个注解能够在bean创建完成并且属性赋值完成之后执行一些初始化工作和在容器销毁bean之前通知我们进行一些清理工作。 1.PostConstru…

java 获取当前线程的方法

我们知道,线程是程序运行的基本单元,是程序中各进程之间通信的桥梁,一个线程的创建和销毁直接影响整个程序的运行效率。 我们在 Java中经常使用 Runnable接口来获取当前线程,获取线程的主要目的就是为了快速地启动进程。但是&…

一键导出ChatGPT聊天记录:让备份更简单

重要性: 备份ChatGPT的聊天记录同样非常重要,因为这些记录可能包含了您与ChatGPT的交互记录,这些记录可能包含了您的个人信息、兴趣爱好、偏好和其他敏感信息。以下是备份ChatGPT聊天记录的一些重要性: 防止数据丢失:…

FT2000+ qemu kvm 64C64G 通过频繁设置CPU online 状态导致虚拟机红旗操作系统假死测试用例

宿主机配置 虚拟机配置文件 <domain typekvm> //如果是Xen&#xff0c;则type‘xen’<name>redflag1</name> //虚拟机名称&#xff0c;同一物理机唯一<uuid>44748c15-7c00-4817-8724-675a27c3f821</uuid> //同一物理机唯一&#xff0c;可用uu…

北京 Meetup 预告 | 内含六个话题,满满干货,期待见面!

在春之末尾&#xff0c;夏之开始的5月&#xff0c;响应社区小伙伴们的呼唤&#xff0c;我们泽拓科技将在北京举办线下社区技术交流活动。 此次我们泽拓科技邀请了去哪儿网、ScaleFlux、美团、SphereEx的相关资深专家来分享他们的数据库探索与实践。我们真诚邀请数据库技术社区…

Day3_Springboot框架搭建

前面两天介绍了vue前端的主体框架&#xff0c;并完成了相关页面的部分设置&#xff0c;接下来开始介绍springboot后端开发的过程&#xff0c;手把手实践。包括项目的初始构建以及集成mybatis、mybatis-plus实现增删改查&#xff0c;分页查询&#xff0c;集成swagger-ui测试&…

Spring(4) Spring是如何使用三级缓存来解决循环依赖问题?

目录 1.什么是循环依赖&#xff1f;2.什么是Spring的循环依赖&#xff1f;3.三级缓存解决循环依赖3.1 假如只使用一级缓存3.2 假如使用二级缓存3.3 为什么要使用三级缓存 4.三级缓存解决循环依赖的局限性 1.什么是循环依赖&#xff1f; 假设我们有两个类 A 和 B&#xff0c;类…

【Docker】1、认识 Docker 和安装 Docker

目录 零、项目部署问题一、Docker 简介二、Docker 和虚拟机三、镜像和容器四、Docker 架构五、CentOS7 上安装 Docker(1) 卸载曾经安装过的 Docker(2) 安装 Docker(3) 启动 Docker(4) 启动、关闭、重启 Docker 六、配置 Docker 镜像国内仓库 零、项目部署问题 大型项目组件较多…

爬虫(requsets)笔记

1、request_基本使用 pip install requests -i https://pypi.douban.com/simple 一个类型六个属性 r.text 获取网站源码 r.encoding 访问或定制编码方式r.url 获取请求的urlr.content 响应的字节类型r.status_code 响应的状态码r.headers 响应的头信息 import requestsurl…

VS2022汇编环境搭建

VS2022汇编环境搭建 使用VS2022搭建汇编语言运行环境Step 1 安装VS2022Step 2 创建项目 使用VS2022搭建汇编语言运行环境 使用Visual Studio 2022 搭建汇编语言项目&#xff0c;运行汇编语言代码。 Step 1 安装VS2022 自行到官网下载安装&#xff0c;选择C编程环境。 Step…

【RabbitMQ】| Lion带你 (超详细) 从0到1使用SpringBoot操作RabbitMQ

目录 一. &#x1f981; 前言二. &#x1f981; SpringBoot操作RabbitMQⅠ. 前期准备工作1. 创建项目&#xff08;不细说&#xff09;2. 添加依赖3. 编写配置文件 Ⅱ. 创建队列和交换机Ⅲ. 创建生产者Ⅳ. 创建消费者 三. &#x1f981; 总结 一. &#x1f981; 前言 Spring Bo…

Spring MVC开发及使用(8000字详解)

如何学习 Spring MVC&#xff1f; 学习 SPring MVC 只需要掌握以下三个功能&#xff1a; 连接的功能&#xff1a;将用户&#xff08;浏览器&#xff09;和 Java 程序连接起来&#xff0c;也就是访问一个地址能够调用到我们 Spring程序&#xff1b;获取参数的功能&#xff1a;用…

颜色空间转换RGB-YCbCr

颜色空间 RGB、YUV和YCbCr都是人为规定的彩色模型或颜色空间&#xff08;有时也叫彩色系统或彩色空间&#xff09;。它的用途是在某些标准下用通常可接受的方式对彩色加以说明。本质上&#xff0c;彩色模型是坐标系统和子空间的阐述。 YCbCr与RGB的相互转换 RGB->YCbCr Y …

2023五一杯数学建模竞赛ABC题思路解析+代码+论文

AB题见文末&#xff0c;下面是C C题&#xff1a;“双碳”目标下低碳建筑研究 “双碳”即碳达峰与碳中和的简称&#xff0c;我国力争2030年前实现碳达峰&#xff0c;2060年前实现碳中和。“双碳”战略倡导绿色、环保、低碳的生活方式。我国加快降低碳排放步伐&#xff0c;大力推…

金陵科技学院五年一贯制专转本电路分析考试大纲

金陵科技学院五年一贯制专转本电路分析考试大纲 专业名称&#xff1a;自动化 考试科目&#xff1a;专业基础课 一、考试要求 掌握电路分析的基本概念、基本原理和基本方法&#xff0c;提高分析电路的思维能力与计算能力&#xff0c;以便为学习后继课程奠定必要的基础。 二…

R 安装函数包及绘制图形

R语言绘制简单条形图 一、载入数据1.安装函数包2.导入文件3.读取数据&#xff08;.csv文件&#xff09; 二、绘制图形绘制简单条形图 一、载入数据 1.安装函数包 在控制台console输入命令&#xff1a; install.packages("bruceR")查看是否安装成功 library(bruce…

【二】MATLAB矩阵处理

【二】MATLAB矩阵处理 1 常用的特殊矩阵函数 zeros函数&#xff1a; zeros(m):产生mm零矩阵 zeros(m,n):产生mn零矩阵 zeros(size(A)):产生与矩阵A相同大小的零矩阵 ones函数&#xff1a; 产生4阶全1矩阵 ones(4) eye函数&#xff1a; 产生对角线为1的矩阵&#xff0c…

分享随机数和唯一ID的工具类

随机数一般也是会被常使用到的&#xff0c;比如在造一些模拟测试数据的场景&#xff0c;或者说是非高端应用的场景会被使用。而全局唯一ID的使用则相反&#xff0c;应用场景更广&#xff0c;更专业&#xff0c;更科学&#xff0c;比如在批量保存数据时&#xff0c;需要提前生成…

CVE漏洞复现-CVE-2016-10033-远程命令执行

CVE-2016-10033-远程命令执行 PHPMailer是一个基于PHP语言的邮件发送组件&#xff0c;被广泛运用于诸如WordPress、Drupal、1CRM、SugarCRM、Yii、Joomla等用户量巨大的应用与框架中。 CVE-2016-10033是PHPMailer中存在的高危漏洞&#xff0c;这个高危漏洞是由 class.phpmail…