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

springboot+redis实现将树形结构存储到redis

1.pom配置redis

 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>

2.yml文件配置:

spring:redis:database: 0host: 1.1.1.1port: 6379timeout: 2000password:jedis:pool:max-idle: 100min-idle: 50max-wait: 10000

3.TreeNode实体对象

import lombok.Data;import java.util.List;
@Data
public class TreeNode {private String id;private String name;private String parentId;private List<TreeNode> children;
}

4.service实现逻辑

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;@Service
public class TreeStructureRedisService {private static final String TREE_KEY_PREFIX = "tree:";@Autowiredprivate StringRedisTemplate redisTemplate;private final ObjectMapper objectMapper = new ObjectMapper();/*** 存储树形结构到 Redis* @param treeId 树形结构的唯一标识* @param root 树的根节点* @throws JsonProcessingException JSON 处理异常*/public void saveTree(String treeId, TreeNode root) throws JsonProcessingException {String key = TREE_KEY_PREFIX + treeId;String jsonTree = objectMapper.writeValueAsString(root);redisTemplate.opsForValue().set(key, jsonTree);}/*** 从 Redis 中获取树形结构* @param treeId 树形结构的唯一标识* @return 树的根节点* @throws JsonProcessingException JSON 处理异常*/public TreeNode getTree(String treeId) throws JsonProcessingException {String key = TREE_KEY_PREFIX + treeId;String jsonTree = redisTemplate.opsForValue().get(key);if (jsonTree != null) {return objectMapper.readValue(jsonTree, TreeNode.class);}return null;}
}

5.controller实现

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import java.io.IOException;@RestController
@RequestMapping("/trees")
public class TreeStructureController {@Autowiredprivate TreeStructureRedisService treeStructureRedisService;/*** 保存树形结构到 Redis* @param treeId 树形结构的唯一标识* @param root 树的根节点* @return 操作结果信息*/@PostMapping("/{treeId}")public String saveTree(@PathVariable String treeId, @RequestBody TreeNode root) {try {treeStructureRedisService.saveTree(treeId, root);return "Tree saved successfully";} catch (IOException e) {return "Error saving tree: " + e.getMessage();}}/*** 从 Redis 中获取树形结构* @param treeId 树形结构的唯一标识* @return 树的根节点*/@GetMapping("/{treeId}")public TreeNode getTree(@PathVariable String treeId) {try {return treeStructureRedisService.getTree(treeId);} catch (IOException e) {return null;}}
}

相关文章:

springboot+redis实现将树形结构存储到redis

1.pom配置redis <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>2.yml文件配置&#xff1a; spring:redis:database: 0host: 1.1.1.1port: 6379timeout:…...

6、使用one-api管理统一管理大模型,并开始使用本地大模型

文章目录 本节内容介绍集中接入&#xff1a;将大模型统一管理起来当使用了大模型代理大模型代理示例 开源模型&#xff1a;如何使用Hugging Face上的模型modelscope使用 pipeline 调用模型用底层实现调用模型流式输出 如何在项目中使用开源模型使用 LangChain使用集中接入开始使…...

Windows安装Lyx

Lyx介绍 LyX 是一个基于 LaTeX 的可视化编辑器&#xff0c;可以让在不编写 LaTeX 代码的情况下使用 LaTeX 的排版功能。 需要依赖Latex环境&#xff0c;如Tex live 或者 MiKTeX Lyx 官网 Lyx官网 安装包下载 点击download默认进入最新版本下载界面 在Recent News/ News里可选…...

一文讲透大模型部署工具ollama--结合本地化部署deepseek实战

Ollama 是一个开源的人工智能平台&#xff0c;专注于在本地高效运行大型语言模型&#xff08;LLMs&#xff09;。通过 Ollama&#xff0c;开发者可以在自己的机器上运行多种大规模语言模型&#xff0c;而不必依赖于云端服务。它支持对大模型的管理和本地化部署&#xff0c;并且…...

网络防御高级

接口配置&#xff1a; SW2: [sw2]vlan 10 [sw2]vlan 20 [sw2]interface GigabitEthernet 0/0/1 [sw2-GigabitEthernet0/0/1]port link-type trunk [SW2-GigabitEthernet0/0/1]port trunk allow-pass vlan 10 20 [sw2]interface GigabitEthernet 0/0/2 [sw2-GigabitEthernet0/0/…...

使用PyCharm进行Django项目开发环境搭建

如果在PyCharm中创建Django项目 1. 打开PyCharm&#xff0c;选择新建项目 2.左侧选择Django&#xff0c;并设置项目名称 3.查看项目解释器初始配置 4.新建应用程序 执行以下操作之一&#xff1a; 转到工具| 运行manage.py任务或按CtrlAltR 在打开的manage.pystartapp控制台…...

如何定义“破坏环境”

当我们谈论破坏环境时&#xff0c;通常会从人类活动对自然生态造成负面影响的角度来定义。例如&#xff0c;大规模的森林砍伐、工业污染排放、温室气体增加等&#xff0c;都是典型的破坏环境的行为。我们常常看到这些行为导致了生态系统的破坏、物种灭绝、气候变化等问题&#…...

现代前端开发的演进与未来趋势:从工具革新到技术突破

在过去的十年中&#xff0c;前端开发经历了翻天覆地的变化。从最初的静态页面到如今复杂的单页应用&#xff08;SPA&#xff09;&#xff0c;从手动操作 DOM 到基于虚拟 DOM 的高效渲染&#xff0c;从前端“三剑客”&#xff08;HTML/CSS/JS&#xff09;到全栈框架的兴起&#…...

活动预告 |【Part1】Microsoft 安全在线技术公开课:安全性、合规性和身份基础知识

课程介绍 通过参加“Microsoft 安全在线技术公开课&#xff1a;安全性、合规性和身份基础知识”活动提升你的技能。在本次免费的介绍性活动中&#xff0c;你将获得所需的安全技能和培训&#xff0c;以创造影响力并利用机会推动职业发展。你将了解安全性、合规性和身份的基础知识…...

idea Ai工具通义灵码,Copilot我的使用方法以及比较

我用过多个idea Ai 编程工具&#xff0c;大约用了1年时间&#xff0c;来体会他们那个好用&#xff0c;以下只是针对我个人的一点分享&#xff0c;不一定对你适用 仅作参考。 介于篇幅原因我觉得能说上好用的 目前只有两个 一个是阿里的通义灵码和Copilot&#xff0c;我用它来干…...

【JavaScript】《JavaScript高级程序设计 (第4版) 》笔记-Chapter8-对象、类与面向对象编程

八、对象、类与面向对象编程 ECMA-262 将对象定义为一组属性的无序集合。严格来说&#xff0c;这意味着对象就是一组没有特定顺序的 值。对象的每个属性或方法都由一个名称来标识&#xff0c;这个名称映射到一个值。正因为如此&#xff08;以及其他还未讨论的原因&#xff09;&…...

介绍下SpringBoot常用的依赖项

Spring Boot 是一个用于快速开发 Spring 应用程序的框架&#xff0c;它通过自动配置和依赖管理简化了开发过程。以下是一些 Spring Boot 项目中常用的依赖项&#xff1a; 1. Spring Boot Starter Web 作用: 用于构建 Web 应用程序&#xff0c;包括 RESTful 服务。依赖项: spr…...

深度解析策略模式:从理论到企业级实战应用

一、策略模式的本质&#xff1a;面向接口的算法工厂 策略模式&#xff08;Strategy Pattern&#xff09;是行为型设计模式的典型代表&#xff0c;其核心思想是将算法族抽象为独立对象&#xff0c;使其能够相互替换。这种模式完美体现了以下面向对象设计原则&#xff1a; 开闭原…...

【Linux】深入理解linux权限

&#x1f31f;&#x1f31f;作者主页&#xff1a;ephemerals__ &#x1f31f;&#x1f31f;所属专栏&#xff1a;Linux 目录 前言 一、权限是什么 二、用户和身份角色 三、文件属性 1. 文件属性表示 2. 文件类型 3. 文件的权限属性 四、修改文件的权限属性和角色 1. …...

C++STL(六)——list模拟

目录 本次所需实现的三个类一、结点类的模拟实现构造函数 二、迭代器类的模拟实现为什么有迭代器类迭代器类的模板参数说明构造函数运算符的重载- -运算符的重载和!运算符的重载*运算符的重载->运算符的重载引入模板第二个和第三个参数 三、list的模拟实现3.1 默认成员函数构…...

网络安全与AI:数字经济发展双引擎

在2025年年初&#xff0c;一场科技攻防战引发了全球关注。国产人工智能DeepSeek的爆火&#xff0c;伴随着大规模的网络攻击事件&#xff0c;将网络安全的重要性推上了风口浪尖。 在此背景下&#xff0c;我们计划探讨网络安全与人工智能如何为数字经济发展提供强大动力。网络安…...

WPS接入DeepSeek模型

1.wps 下载安装 WPS-支持多人在线协作编辑Word、Excel和PPT文档_WPS官方网站 &#xff08;最好是安装最新的wps&#xff09; 2.offieceAi工具下载安装 软件下载 | OfficeAI助手 下载后安装下载下来的两个工具。安装路径可以自行修改 3.打开WPS,点击文件-》 选项-》信任中心 勾…...

深度学习之神经网络框架搭建及模型优化

神经网络框架搭建及模型优化 目录 神经网络框架搭建及模型优化1 数据及配置1.1 配置1.2 数据1.3 函数导入1.4 数据函数1.5 数据打包 2 神经网络框架搭建2.1 框架确认2.2 函数搭建2.3 框架上传 3 模型优化3.1 函数理解3.2 训练模型和测试模型代码 4 最终代码测试4.1 SGD优化算法…...

采用分步式无线控制架构实现水池液位自动化管理

以下是基于巨控GRM241Q-4D4I4QHE模块的完整技术方案&#xff0c;采用分步式无线控制架构实现水池液位自动化管理&#xff1a; 一、系统架构设计 硬件部署 山顶单元 GRM241Q模块&#xff08;带4G功能&#xff09; 液位计&#xff08;4-20mA&#xff09; 功能&#xff1a;实时采…...

OpenEuler学习笔记(二十三):在OpenEuler上部署开源MES系统

在OpenEuler上部署小企业开源MES&#xff08;制造执行系统&#xff0c;Manufacturing Execution System&#xff09;是一个非常有价值的项目&#xff0c;可以帮助企业实现生产过程的数字化管理。以下是基于开源MES系统&#xff08;如 Odoo MES 或 OpenMES&#xff09;的部署步骤…...

蓝牙抓包不求人:从HCI日志里‘挖’出Link Key的两种实用方法(附安卓路径)

蓝牙安全逆向实战&#xff1a;从HCI日志中提取Link Key的深度解析在蓝牙协议安全研究领域&#xff0c;Link Key作为设备配对认证的核心凭证&#xff0c;其获取方式一直是逆向工程师关注的焦点。许多安全审计场景下&#xff0c;我们往往只能获得加密后的HCI通信日志&#xff0c;…...

top50 BF16算力(TFLOPS) 显卡排行榜 天梯图

排名显卡型号BF16算力(TFLOPS)售价(元)单TFLOPS价格(元)1B200(SXM)45002200000488.892H200(SXM)19801200000606.063MI300X1307750000573.834H100 SXM519501100000564.105RTX PRO 6000 Blackwell1150780000678.266H100 PCIe 80GB1560850000544.877RTX 50906803400050.008A100 80…...

从电磁炉到户外电源:拆解单相SVPWM如何让你的逆变器更安静、更高效

从电磁炉到户外电源&#xff1a;单相SVPWM如何实现静音与高效的双重突破当你深夜用电磁炉煮面时&#xff0c;是否曾被突然的蜂鸣声吓一跳&#xff1f;或是发现户外电源给设备充电时&#xff0c;散热风扇的噪音盖过了山林鸟鸣&#xff1f;这些常见问题背后&#xff0c;隐藏着一个…...

[智能体-69]:重新认知MCP:协议不生产智能,只是AI全域交互的标准化基石

MCP只是提供了大模型、编排调度、外部工具能够进行结构化交流的标准&#xff0c;而整个系统的智能主要依赖编排调度&#xff0c;与外部软件系统的交互取决于外部工具&#xff0c;包括外部语音交互、视觉交互、数字化交互。当下MCP&#xff08;Model Context Protocol&#xff0…...

OpenClaw 连接阿里云百炼图文教程

OpenClaw 连接阿里云百炼图文教程 前置准备 已安装并可以正常打开 OpenClaw Windows。 OpenClaw 顶部 Gateway 状态保持在线。 已准备好可正常登录的阿里云账号。 可以正常访问阿里云百炼登录地址&#xff1a;https://bailian.console.aliyun.com/cn-beijing#/home 建议提…...

Gofile批量下载自动化工具:5步实现高效文件管理解决方案

Gofile批量下载自动化工具&#xff1a;5步实现高效文件管理解决方案 【免费下载链接】gofile-downloader Download files from https://gofile.io 项目地址: https://gitcode.com/gh_mirrors/go/gofile-downloader 在当今数字化工作环境中&#xff0c;技术团队经常需要从…...

Sangfor文件夹可以删除吗?【图文讲解】深信服文件夹残留清理?如何彻底删除深信服?Sangfor文件夹是什么?

&#xff08;1&#xff09;问题背景打开C盘&#xff0c;突然冒出个Sangfor 文件夹&#xff0c;占用好几个 GB 空间&#xff0c;想删又不敢删&#xff0c;怕删坏系统、断网崩溃&#xff1b;上网一查&#xff0c;说法五花八门&#xff0c;有人说是病毒&#xff0c;有人说是办公软…...

配置OpenClaw Agent使用Taotoken作为后端模型提供商

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 配置OpenClaw Agent使用Taotoken作为后端模型提供商 基础教程类&#xff0c;指导希望使用OpenClaw等Agent工具的开发者&#xff0c…...

基于ATtiny84的智能冰箱监控器:低功耗温度与门状态监测方案

1. 项目概述&#xff1a;一个装在树莓派盒子里的智能冰箱管家如果你家里有台老冰箱&#xff0c;或者对食物储存温度特别在意&#xff0c;总担心冰箱门没关严或者突然断电导致内部升温&#xff0c;那么这个自己动手做的“冰箱看门狗”项目就太适合你了。它本质上是一个高度定制化…...

<背包问题>

背包问题是一类组合优化问题&#xff0c;其基本形式是给定一组物品&#xff0c;每个物品都有一个重量和一个价值&#xff0c;以及一个有限的背包容量&#xff0c;目标是在不超过背包容量的前提下&#xff0c;选择物品使得背包中的物品价值最大化。动态规划是解决背包问题的常用…...