当前位置: 首页 > news >正文

熟练使用 Redis 的五大数据结构:Java 实战教程

入门

入门阶段主要记住 Redis 的命令,熟练使用 Redis 的 5 大数据结构就可以了。

如果没有 Redis 环境,可以直接通过这个网址https://try.redis.io/,很赞,它会给你模拟一个在线的环境可供你尽情使用!

熟练使用Redis的五大数据结构将使您能够充分利用Redis在各种应用场景中的优势。以下是这五大数据结构的概述,以及它们在实际应用中的用途:

  1. 字符串(String): 字符串是Redis最基本的数据结构,用于存储文本、数字和序列化数据。您可以使用字符串来实现缓存、计数器、会话管理等功能。例如,您可以存储用户的登录状态、商品的库存数量或者缓存热门文章。
  2. 哈希表(Hash): 哈希表存储了字段(field)与值(value)之间的映射关系,类似于对象或字典。这种数据结构适用于存储复杂的结构化数据,如用户信息、配置项等。例如,您可以存储用户的详细信息,如姓名、年龄、邮箱等。
  3. 列表(List): 列表是有序的字符串集合,支持在两端插入和删除元素。它常用于实现消息队列、日志记录等场景。例如,您可以使用列表存储用户的操作日志,按照时间顺序进行记录。
  4. 集合(Set): 集合是无序、不重复的字符串集合,适用于存储唯一值。您可以使用集合来处理标签、关键词等,也可以用于实现点赞、关注等功能。例如,您可以存储用户喜欢的文章标签或者粉丝列表。
  5. 有序集合(Sorted Set): 有序集合是有序的集合,每个成员关联一个分数,可以按分数排序。它适用于实现排行榜、优先级队列等场景。例如,您可以存储用户的积分,并根据积分高低进行排名。

通过熟练使用这五大数据结构,您可以在不同的应用场景中灵活地存储和操作数据,从而充分发挥Redis的优势。每个数据结构都有其独特的特点和用途,了解它们将帮助您在实际开发中做出明智的选择。

常用操作学习

掌握 Redis 字符串(String)

  • 存储、获取字符串值
  • 字符串操作技巧:追加、长度、自增等
  • 应用案例:缓存、计数器
APPEND:将指定值追加到字符串的末尾。
STRLEN:获取字符串的长度。
INCR / DECR:将字符串值解释为整数并递增/递减它。存储:SET key value
获取:GET key
追加:APPEND key value
获取长度:STRLEN key
自增:INCR key

驾驭 Redis 哈希表(Hash)

  • 存储、获取哈希表数据
  • 哈希表操作:设置字段、批量操作
  • 应用案例:用户信息、配置管理
HMSET:设置多个字段和值。
HGETALL:获取所有字段和值。
HDEL:删除一个或多个字段。设置字段和值:HSET key field value
获取字段的值:HGET key field
设置多个字段和值:HMSET key field1 value1 field2 value2 ...
获取所有字段和值:HGETALL key
删除字段:HDEL key field1 field2 ...

玩转 Redis 列表(List)

  • 插入、删除列表元素
  • 列表操作:范围获取、修剪
  • 应用案例:消息队列、操作日志
LRANGE:获取列表范围内的元素。
LTRIM:修剪列表,保留指定范围内的元素。左端插入元素:LPUSH key element1 [element2 ...]
右端插入元素:RPUSH key element1 [element2 ...]
左端删除元素:LPOP key
右端删除元素:RPOP key
获取列表范围内的元素:LRANGE key start stop
修剪列表:LTRIM key start stop

探索 Redis 集合(Set)

  • 添加、移除集合成员
  • 集合操作:交集、并集、差集
  • 应用案例:标签、关注列表
SINTER:计算多个集合的交集。
SUNION:计算多个集合的并集。
SDIFF:计算集合的差集。添加集合成员:SADD key member1 [member2 ...]
移除集合成员:SREM key member1 [member2 ...]
计算多个集合的交集:SINTER key1 key2 [key3 ...]
计算多个集合的并集:SUNION key1 key2 [key3 ...]
计算集合的差集:SDIFF key1 key2

掌握 Redis 有序集合(Sorted Set)

  • 添加、获取有序集合成员
  • 有序集合操作:按分数范围获取、排名
  • 应用案例:排行榜、优先级队列
ZRANGEBYSCORE:获取按分数范围的成员。
ZRANK:获取成员在有序集合中的排名。添加有序集合成员:ZADD key score member [score member ...]
获取有序集合成员的分数:ZSCORE key member
获取按分数范围的成员:ZRANGEBYSCORE key min max [WITHSCORES]
获取成员在有序集合中的排名:ZRANK key member
获取按分数范围的成员:ZRANGEBYSCORE key min max [WITHSCORES]
获取有序集合的成员:ZRANGE key start stop [WITHSCORES]
获取有序集合的成员(倒序):ZREVRANGE key start stop [WITHSCORES]

总结

通过学习本教程,你已经掌握了Redis的五大核心数据结构,以及如何在Java中熟练使用它们。不论是简单的文本存储、复杂的数据结构还是实时消息处理,你都可以通过这些数据结构在项目中获得出色的性能和灵活性。

最后,推荐一款应用开发神器

关于目前低代码在技术领域很活跃!

低代码是什么?一组数字技术工具平台,能基于图形化拖拽、参数化配置等更为高效的方式,实现快速构建、数据编排、连接生态、中台服务等。通过少量代码或不用代码实现数字化转型中的场景应用创新。它能缓解甚至解决庞大的市场需求与传统的开发生产力引发的供需关系矛盾问题,是数字化转型过程中降本增效趋势下的产物。

这边介绍一款好用的低代码平台——JNPF快速开发平台。近年在市场表现和产品竞争力方面表现较为突出,采的是最新主流前后分离框架(SpringBoot+Mybatis-plus+Ant-Design+Vue3。代码生成器依赖性低,灵活的扩展能力,可灵活实现二次开发。

以JNPF为代表的企业级低代码平台为了支撑更高技术要求的应用开发,从数据库建模、Web API构建到页面设计,与传统软件开发几乎没有差异,只是通过低代码可视化模式,减少了构建“增删改查”功能的重复劳动,还没有了解过低代码的伙伴可以尝试了解一下。

应用:https://www.jnpfsoft.com/?csdn

有了它,开发人员在开发过程中就可以轻松上手,充分利用传统开发模式下积累的经验。所以低代码平台对于程序员来说,有着很大帮助。

相关文章:

熟练使用 Redis 的五大数据结构:Java 实战教程

入门 入门阶段主要记住 Redis 的命令,熟练使用 Redis 的 5 大数据结构就可以了。 如果没有 Redis 环境,可以直接通过这个网址https://try.redis.io/,很赞,它会给你模拟一个在线的环境可供你尽情使用! 熟练使用Redis的…...

【Linux】kill 命令使用

经常用kill -9 XXX 。一直在kill,除了kill -9 -15 ,还能做什么?今天咱们一起学习一下。 kill 命令用于删除执行中的程序或工作。 kill命令 -Linux手册页 命令选项及作用 执行令 man kill 执行命令结果 参数 -l 信号,若果…...

面试-Redis-缓存雪崩

问:什么是缓存雪崩 ? 答:缓存过期是指设置缓存时都采用了同一过期时间,导致缓存在莫一时刻同时失效,从而请求全部全部打到数据库中,导致数据库压力过大而挂机。 它与缓存击穿的区别是:缓存击穿是一个key…...

AI全栈大模型工程师(九)Function Calling 的机制

文章目录 Function Calling 的机制Function Calling 示例 1:加法计算器Function Calling 实例 2:四则混合运算计算器后记Function Calling 的机制 Function Calling 示例 1:加法计算器 需求:用户输入任意可以用加法解决的问题,都能得到计算结果。 # 加载环境变量import o…...

音乐制作软件 Ableton Live 11 Suite mac中文版功能介绍

Ableton Live 11 Suite mac是一款专业级别的音乐制作软件,它提供了多种音乐制作和编辑功能,可以帮助用户创建各种音乐作品。界面简单直观,可以方便地进行各种音乐制作操作。它提供了丰富的音乐制作工具和功能,如录音、采样、编曲、…...

v-model和.sync区别

在vue2中提供了.sync修饰符,但是在vue3中不再支持.sync,取而代之的是v-model。 1.在vue2中v-model和.sync区别: 1.相同点:都是语法糖,都可以实现父子组件中的数据的双向通信。 ​ 区别在于往回传值的时候. sync 的 $…...

django cloudflare csrf 403

网站套了cloudflare flare发现登录接口403了,csrf验证失败, debug设置为False 详细报错如下: Reason given for failure: Referer checking failed - https://xxx/login does not match any trusted origins.In general, this can occur w…...

Hive 中级练习题(40题 待更新)

前言 最近快一周没更了,主要原因是最近在忙另一件事情(关于JavaFX桌面软件开发),眼看大三上一半时间就要过去了,抓紧先学Hive,完了把 Spark 剩下的补了,还有 Kafka、Flume,任务还是…...

核酸检测人员安排

题目描述: 在系统、网络均正常的情况下组织核酸采样员和志愿者对人群进行核酸检测筛查。每名采样员的效率不同,采样效率为N人/小时。由于外界变化,采样员的效率会以M人/小时为粒度发生变化,M为采样效率浮动粒度,M=N10%,输入保证N10%的结果为整数。采样员效率浮动规则:采…...

Vue组件间传值

一、父传子 子组件中定义一个props&#xff0c;用来取出父组件传来的值 <script>export default {props:[msg] //子组件定义props} </script> 在父组件中对子组件的自定义属性绑定父组件的变量 <template><div class"parent">//子组件&a…...

《低代码指南》——维格云和Airtable的比较

Airtable​ 什么是Airtable​ Airtable 是一个任务管理应用程序,它合并了电子表格、数据存储和模板,以帮助组织构建他们的工作流程。 适用于哪些企业/组织/人群​ 根据 Airtable 网站,该工具被超过 200,000 个组织的团队使用。 维格表与Airtable相比如何​ Airtable作为…...

牛客:NC59 矩阵的最小路径和

牛客&#xff1a;NC59 矩阵的最小路径和 文章目录 牛客&#xff1a;NC59 矩阵的最小路径和题目描述题解思路题解代码 题目描述 题解思路 动态规划&#xff0c;递推公式&#xff1a;matrix[i][j] min(matrix[i-1][j], matrix[i][j-1]) 题解代码 func minPathSum( matrix [][…...

20231017定时任务

1. 构建定时任务 表达式生成 在线Cron表达式生成器 1.1 启动类 1.2 测试范例 描述: 1,将该类用Component描述,交给spring管理. 2,定时任务方法用Scheduled&#xff0b;cron表达式描述 2. 定时任务的弊端和优化方案 1.假如有一个定时任务,每小时检查关闭超时未支付订单,当10…...

通讯录和内存动态管理

目录 (通讯录)动态增长版 实现效果 找单身狗 题目 源码 思路 三个内存函数的模拟实现 模拟实现strncpy 模拟实现strncat 模拟实现atoi (通讯录)动态增长版 该版本通讯录在原版的基础上增加了检查容量函数&#xff0c;实现了通讯录的动态…...

安全渗透测试之网络基础知识(IP地址)

#1.IP地址介绍 注意:不同局域网需要有不同的网络部分,通过网络部分区别出网段/网络; 局域网内部,主机部分不能一样,否则会出现地址冲突 范围:0.0.0.0-255.255.255.255 表示:点分十进制 组成:由网络部分和主机部分组成 192.168.1.1 1.1.1.1 255.254.188.2 二进制:00000…...

dubbogo-1 基础rpc服务

文章目录 基本环境处理编译pb接口开启rpc调用业务观察qa1 能取出protoc里面的字段值吗&#xff1f; 基本环境处理 https://cn.dubbo.apache.org/zh-cn/overview/quickstart/go/install/ 这里没有 protoc-gen-go --version 执行 go get -u github.com/golang/protobuf/protoc…...

分布式缓存Spring Cache

一、缓存里的数据如何和数据库的数据保持一致&#xff1f; 缓存数据一致性1)、双写模式2)、失效模式1、缓存数据一致性-双写模式 2、 缓存数据一致性-失效模式 我们系统的一致性解决方案: 1、缓存的所有数据都有过期时间&#xff0c;数据过期下一次查询触发主动更新 2、读写数据…...

CI2454 2.4g无线MCU芯片应用

Ci2454集成MCU芯片 | Ci2454是一款集成无线收发器和 8 位 RISC&#xff08;精简指令集&#xff09;MCU 的SOC芯片。 #Ci2454芯片 集成MCU芯片# 中国芯片# 无线收发器特性&#xff1a; 工作在 2.4GHz ISM 频段 调制方式&#xff1a;GFSK/FSK 数据速率&#xff1a;2Mbps/1Mbps…...

生成包含10个随机字母或数字的字符串,然后统计每个字符的出现次数

from random import choices from string import ascii_letters, digitsx .join(choices(ascii_lettersdigits, k10)) d dict() # 创建空字典 for ch in x:d[ch] d.get(ch, 0) 1 # x中有ch字符,个数1,并作为字典的值 print(x) print(d)也可以使用collections模块的defaul…...

huggingface 模型推理几个重要到类

pipeline 它可以让您方便地使用预训练的模型进行各种任务。当您用pipeline函数创建一个图像分割的pipeline时&#xff0c;它会自动加载和初始化一个SegformerForSemanticSegmentation的实例&#xff0c;并且封装了一些预处理和后处理的逻辑&#xff0c;例如将图像转换为张量&a…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

NPOI Excel用OLE对象的形式插入文件附件以及插入图片

static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机&#xff0c;点进去 点进去 查看URL&#xff0c;有 ?fileflag.php说明存在文件包含&#xff0c;原理是php://filter 协议 当它与包含函数结合时&#xff0c;php://filter流会被当作php文件执行。 用php://filter加编码&#xff0c;能让PHP把文件内容…...

Chrome 浏览器前端与客户端双向通信实战

Chrome 前端&#xff08;即页面 JS / Web UI&#xff09;与客户端&#xff08;C 后端&#xff09;的交互机制&#xff0c;是 Chromium 架构中非常核心的一环。下面我将按常见场景&#xff0c;从通道、流程、技术栈几个角度做一套完整的分析&#xff0c;特别适合你这种在分析和改…...

Qt的学习(一)

1.什么是Qt Qt特指用来进行桌面应用开发&#xff08;电脑上写的程序&#xff09;涉及到的一套技术Qt无法开发网页前端&#xff0c;也不能开发移动应用。 客户端开发的重要任务&#xff1a;编写和用户交互的界面。一般来说和用户交互的界面&#xff0c;有两种典型风格&…...

高分辨率图像合成归一化流扩展

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 1 摘要 我们提出了STARFlow&#xff0c;一种基于归一化流的可扩展生成模型&#xff0c;它在高分辨率图像合成方面取得了强大的性能。STARFlow的主要构建块是Transformer自回归流&#xff08;TARFlow&am…...

渗透实战PortSwigger Labs指南:自定义标签XSS和SVG XSS利用

阻止除自定义标签之外的所有标签 先输入一些标签测试&#xff0c;说是全部标签都被禁了 除了自定义的 自定义<my-tag onmouseoveralert(xss)> <my-tag idx onfocusalert(document.cookie) tabindex1> onfocus 当元素获得焦点时&#xff08;如通过点击或键盘导航&…...

自然语言处理——语言模型

语言模型 n元文法参数估计数据平滑方法加1法 神经网络模型提出原因前馈神经网络&#xff08;FNN&#xff09;循环神经网络 n元文法 大规模语料库的出现为自然语言统计处理方法的实现提供了可能&#xff0c;统计方法的成功应用推动了语料库语言学的发展。 语句 &#x1d460; …...