百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

SpringBoot集成扩展-访问NoSQL数据库之Redis和MongoDB!

itomcoil 2025-08-02 18:48 2 浏览

与关系型数据库一样,Spring Boot也提供了对NoSQL数据库的集成扩展,如对Redis和MongoDB等数据库的操作。通过默认配置即可使用RedisTemplate和MongoTemplate等模板类操作非关系型数据库。

访问Redis

Redis可以作为缓存、消息中间件或多类型的key-value数据库。

作为非关系型数据库,Redis支持多种类型的存储方式,包括String(字符串)、List(列表)、Hash(哈希)、Set(集合)和Sorted Set(有序集合)等。

Spring Boot为Redis提供了基本的自动配置,依赖于springboot-starter-data-redis包。该包提供了自动配置的RedisConnectionFactory、StringRedisTemplate和Redis-Template实例。如果不配置,则默认连接localhost:6379服务器。

StringRedisTemplate继承自RedisTemplate,默认采用String的序列化策略。如果使用RedisTemplate,则可以实现自己的序列化方式。

连接Redis可以使用Lettuce或Jedis客户端。Spring Boot默认使用Lettuce客户端。因为Lettuce的连接是基于Netty的,所以多线程是安全的。

RedisTemplate提供了以下5种数据结构的操作方法:

opsForValue:操作字符串类型;

opsForHash:操作哈希类型;

opsForList:操作列表类型;

opsForSet:操作集合类型;

opsForZSet:操作有序集合类型。

下面给出一个集成了Redis操作的简单示例。

(1)在application.yml配置文件中添加配置,代码如下:

spring:

redis:

host: localhost

port: 6379

password: redistest

timeout: 1000

lettuce:

pool:

max-active: 10 //①

max-wait: 1000 //②

max-idle: 2 //③

min-idle: 0 //④

注释①:连接池的最大连接数。

注释②:连接池的最大阻塞等待时间。

注释③:连接池中的最大空闲连接数。

注释④:连接池中的最小空闲连接数。

(2)在Controller类中注入StringRedisTemplate实例,代码如下:

@RestController

@RequestMapping("/hi")

public class HiController {

//自动注入StringRedisTemplate

@Autowired

private StringRedisTemplate stringRedisTemplate;

@GetMapping("/redis/add")

public String redisAdd(int id) {

//Redis set操作

stringRedisTemplate.opsForValue().set("redis_test_"+id,

"redis

test!");

return "1";

}

@GetMapping("/redis/query")

public String redisQuery(int id) {

//Redis get操作

String val =

stringRedisTemplate.opsForValue().get("redis_

test_"+id);

return val;

}

@GetMapping("/redis/delete")

public String redisDelete(int id) {

//Redis delete操作

stringRedisTemplate.delete("redis_test_"+id);

return "1";

}

}

访问接口
http://localhost:8080/hi/redis/add?id=1,可以在Redis中添加一个String类型的数据;访问接口
http://localhost:8080/hi/redis/query?id=1,可以查询一个String类型的数据;访问接口
http://localhost:8080/hi/redis/delete?id=1,可以删除Redis数据。

访问MongoDB

MongoDB是一个开源的NoSQL文档型数据库,使用类JSON结构代替传统的基于表结构的关系型数据库。spring-boot-starter-datamongodb模块提供了可以操作MongoDB的MongoTemplate模板类。

Spring Boot自动配置
org.springframework.data.mongodb.MongoDatabaseFactory类,默认连接mongodb://localhost/test库。同样,也可以自定义一个MongoClient来代替MongoDatabaseFactory类。

下面给出一个集成MongoDB操作的简单示例。

(1)在application.yml配置文件中添加MongoDB配置,具体代码如下:

spring:

data:

mongodb:

host: localhost

port: 27017

database: user

username: root

password: test1111

authentication-database: admin

(2)注入MongoTemplate实例,代码如下:

@RestController

@RequestMapping("/hi")

public class HiController {

@Autowired

private MongoTemplate mongoTemplate; //自动注入

MongoTemplate

@GetMapping("/mongo/add")

public Document mongoAdd(String id) {

BasicDBObject db = new BasicDBObject();

db.put("_id", new ObjectId(id));

//插入操作

mongoTemplate.insert(db, "pages");

MongoCollection<Document> collection = mongoTemplate.

getCollection("user");

Document document = collection.find(db).first();

return document;

}

@GetMapping("/mongo/query")

public Document mongoQuery(String id) {

BasicDBObject db = new BasicDBObject();

db.put("_id", new ObjectId(id));

MongoCollection<Document> collection = mongoTemplate.

getCollection("user");

//查询操作

Document document = collection.find(db).first();

return document;

}

}

访问接口
http://localhost:8080/hi/mongo/query?id=5a717aa60837d974f4b4a5,即可查询相关的数据。

相关推荐

C|经典实例理解算法之顺推、逆推、迭代、递归思想

递推算法可以不断利用已有的信息推导(迭代)出新的信息,在日常应用中有如下两种递推算法。①顺推法:从已知条件出发,逐步推算出要解决问题的方法。例如斐波那契数列就可以通过顺推法不断递推算出新的数据。②...

[西门子PLC] 博途编程之递归算法

首先跟大伙讲一讲哈,递归算法瞅着是挺优雅挺不错的,可实际上没啥大用,在真正的项目里能不用就别用递归,为啥呢?因为用了递归可能会惹出大麻烦,后面会给大伙举例讲讲原因。那啥叫递归呢?从名字上就能看出来,就...

SQL 也能递归?一文搞懂 Recursive CTE的魔力

很多人以为递归(Recursive)只属于编程语言,和SQL没什么关系。但其实SQL中也能实现递归操作,特别是在处理树结构、路径查找时,WITHRECURSIVE展现出强大威力。本文将带你...

10张动图学会python循环与递归

  一图胜千言!  循环难学?十张动图GIFS有助于认识循环、递归、二分检索等概念的具体运行情况。  本文代码实例以Python语言编写。  一、循环  GIF1:最简单的while循环  GIF...

C语言学习之-----(十三) 函数递归

(十三)函数递归一、栈在说函数递归的时候,顺便说一下栈的概念。栈是一个后进先出的压入(push)和弹出(pop)式数据结构。在程序运行时,系统每次向栈中压入一个对象,然后栈指针向下移动一个位置。当系...

Python自动化办公应用学习笔记19—— 循环控制:break 和 continue

在Python的循环结构中,break和continue是两个特殊的保留字,主要用于改变循环的执行流程。1.定义与核心作用break:立即终止当前循环,跳出整个循环体(仅限最内层循环)conti...

循环与递归的那些事
循环与递归的那些事

大家好,我是贠学文,点击右上方“关注”,每天为您分享java程序员需要掌握的知识点干货。在任何的编程语言中,循环和递归永远都是一个避不开的话题,因为在某些特定的场景下,用递归确实要比循环简单得多,比如说遍历文件夹目录等等,但是,递归也有下面...

2025-08-02 18:49 itomcoil

漫谈递归、迭代、循环——人理解迭代,神理解递归

后续计划好几天没有更新了,没有偷懒。随着源码的阅读,学习到了字典和集合的底层实现。字典这种数据结构的搜索效率很高,底层结构采用了效率优于红黑树的哈希表。红黑树是一种平衡二叉树,C++中的map和lin...

Excel递归与循环——货物分箱问题

递归指通过函数自身调用实现复杂计算,在Excel中多通过支持递归的函数(如LAMBDA)实现。第一,简化复杂逻辑表达:对于有明确递推关系的问题,递归能将多层嵌套的逻辑转化为简洁的自我调用形式,比手...

MongoDB入门之索引

索引就像书的目录,如果查找某内容在没有目录的帮助下,只能全篇查找翻阅,这导致效率非常的低下;如果在借助目录情况下,就能很快的定位具体内容所在区域,效率会直线提高。索引简介首先打开命令行,输入mongo...

MongoDB之集合管理一

最近的几篇博客都是关于MongoDB的,虽然个人感觉也没多少知识点,但没想到竟然有转载我的博客的,不管有经过我同意还是没经过我同意,说明写的应该还是有价值的,这也是我写博客的一个动力之一吧。上一博客学...

SpringBoot集成扩展-访问NoSQL数据库之Redis和MongoDB!

与关系型数据库一样,SpringBoot也提供了对NoSQL数据库的集成扩展,如对Redis和MongoDB等数据库的操作。通过默认配置即可使用RedisTemplate和MongoTemplate...

揭秘你不会画“信息结构图”的本质

编辑导语:产品信息结构图有助于清晰地展示产品信息,一定程度上可以为后台上传数据提供依据,但不少人可能觉得产品信息结构图很难,这可能是对数据库表结构不理解等因素导致的。本篇文章里,作者就产品信息结构图的...

MongoDB导入导出备份数据

要提前安装mongodb-database-tools参考:centos离线安装mongodb-database-tools导出数据常用的导出有两种:mongodump和mongoexport,两种方...

mongodb导入导出及备份

-------------------MongoDB数据导入与导出-------------------1、导出工具:mongoexport1、概念:mongoDB中的mongoexport...