springboot整合redis,MongoDB,Elasticsearch(ES)

news2024/11/25 0:33:36

目录

 springboot整合redis

连接Redis

字符串操作

哈希表操作

列表操作

集合操作

有序集合操作

lettcus与jedis的区别 

springboot整合MongoDB

新增数据

查询数据

更新数据

删除数据

 springboot整合Elasticsearch(ES)

创建ElasticsearchRepository

创建实体类

增删改查

搜索


 springboot整合redis

Spring Boot整合Redis,需要使用Redis的Java客户端库,通常使用Jedis或Lettuce。在使用Jedis或Lettuce时,需要在pom.xml文件中添加对应的依赖。

 

 

连接Redis

使用Jedis连接Redis:
Jedis jedis = new Jedis("localhost", 6379);

使用Lettuce连接Redis:
RedisClient redisClient = RedisClient.create("redis://localhost:6379"); StatefulRedisConnection<String, String> connection = redisClient.connect(); RedisCommands<String, String> syncCommands = connection.sync();

字符串操作

设置key-value:
jedis.set("key", "value");

获取value:
String value = jedis.get("key");

设置过期时间:
jedis.setex("key", 60, "value");

哈希表操作

设置哈希表:
Map<String, String> map = new HashMap<>(); map.put("field1", "value1"); map.put("field2", "value2"); jedis.hmset("hash", map);

获取指定哈希表中的field值:
String value = jedis.hget("hash", "field1");

获取哈希表中所有的field值:
Map<String, String> map = jedis.hgetAll("hash");

列表操作

在列表的左侧或右侧添加元素:
jedis.lpush("list", "value1", "value2"); jedis.rpush("list", "value3", "value4");

获取列表中的元素:
List<String> list = jedis.lrange("list", 0, -1);

集合操作

添加元素到集合:
jedis.sadd("set", "value1", "value2", "value3");

获取集合中的所有元素:
Set<String> set = jedis.smembers("set");

有序集合操作

添加元素到有序集合:
jedis.zadd("zset", 1, "value1"); jedis.zadd("zset", 2, "value2");

获取有序集合中指定分数范围内的元素:
Set<String> set = jedis.zrangeByScore("zset", 1, 2);

lettcus与jedis的区别 

 


springboot整合MongoDB

Spring Boot 是一个非常流行的 Java 开发框架,而 MongoDB 是一种流行的 NoSQL 数据库。在 Spring Boot 中整合 MongoDB,可以使用 Spring Data MongoDB 来方便地进行开发。

 

 

 

 

 

新增数据

使用 MongoTemplate 的 insert 方法插入一条数据,或使用 save 方法插入或更新一条数据。

@Autowired
private MongoTemplate mongoTemplate;

public void addData(User user) {
    mongoTemplate.insert(user);
}

public void saveData(User user) {
    mongoTemplate.save(user);
}

查询数据

使用 MongoTemplate 的 find 方法查询数据,或使用 Query 和 Criteria 对象进行查询条件的设置。

public List<User> findAll() {
    return mongoTemplate.findAll(User.class);
}

public User findById(String id) {
    Query query = new Query(Criteria.where("id").is(id));
    return mongoTemplate.findOne(query, User.class);
}

更新数据

使用 MongoTemplate 的 updateFirst 和 updateMulti 方法更新数据。

public void updateData(User user) {

   Query query = new Query(Criteria.where("id").is(user.getId()));

    Update update = new Update().set("name", user.getName()).set("age", user.getAge());

   mongoTemplate.updateFirst(query, update, User.class);

}

删除数据

使用 MongoTemplate 的 remove 方法删除数据。


public void deleteById(String id) {

  Query query = new Query(Criteria.where("id").is(id));

  mongoTemplate.remove(query, User.class);

}

 springboot整合Elasticsearch(ES)

Elasticsearch是一个分布式全文搜索引擎

 

 

 

创建ElasticsearchRepository

在SpringBoot中,可以通过ElasticsearchRepository来访问Elasticsearch,只需要继承该接口即可。

public interface UserRepository extends ElasticsearchRepository<User, Long> {
}

其中,User是实体类,Long是主键类型。

创建实体类

创建实体类,使用注解来映射Elasticsearch中的索引和字段。

@Document(indexName = "user", type = "_doc")
public class User {

    @Id
    private Long id;

    @Field(type = FieldType.Keyword)
    private String name;

    @Field(type = FieldType.Integer)
    private Integer age;

    // getter and setter
}

增删改查

通过ElasticsearchRepository提供的方法,可以实现增删改查的操作。如下:

@Autowired
UserRepository userRepository;

// 新增
userRepository.save(user);

// 删除
userRepository.deleteById(id);

// 修改
userRepository.save(user);

// 查询
Optional<User> optional = userRepository.findById(id);

搜索

Elasticsearch提供了丰富的搜索API,可以通过QueryBuilder来构建查询条件,通过SearchRequest来执行搜索操作。如下:

@Autowired
RestHighLevelClient restHighLevelClient;

// 构建查询条件
QueryBuilder queryBuilder = QueryBuilders.matchQuery("name", "张三");

// 构建SearchRequest
SearchRequest searchRequest = new SearchRequest("user");
searchRequest.types("_doc");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(queryBuilder);
searchRequest.source(searchSourceBuilder);

// 执行搜索
SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);

// 处理搜索结果
SearchHits hits = searchResponse.getHits();
for (SearchHit hit : hits) {
    String sourceAsString = hit.getSourceAsString();
    User user = JSON.parseObject(sourceAsString, User.class);
    System.out.println(user);
}

 


我记得花香,便不负这时光

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

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

相关文章

区间预测 | MATLAB实现QRCNN-BiLSTM卷积双向长短期记忆神经网络分位数回归时间序列区间预测

区间预测 | MATLAB实现QRCNN-BiLSTM卷积双向长短期记忆神经网络分位数回归时间序列区间预测 目录 区间预测 | MATLAB实现QRCNN-BiLSTM卷积双向长短期记忆神经网络分位数回归时间序列区间预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 1.Matlab实现基于QRCNN…

Redis数据热迁移

1、redis数据热迁移&#xff0c;先通过redis-shake工具实现。 2、再通过redis-full-check检查迁移后的数据是否想同。 3、redis-shake版本下载&#xff1a; https://github.com/tair-opensource/RedisShake/releases 4、redis-full-check版本下载&#xff1a; https://github.c…

更简单的存和取bean

注解&#xff08;更简单存bean和取bean&#xff09;更简单的存bean&#xff08;使用类注解&#xff09;方法注解更简单的获取bean 注解&#xff08;更简单存bean和取bean&#xff09; 注解&#xff1a;声明和表示这个类或方法有某个能力。servlet的Web注解&#xff1b;实现路由…

2000多套微信小程序源码-史上最全的不同行业的源码集合

前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 很多伙伴学习小程序不知怎么开始&#xff0c;我准备了2000多套小程序源码&#xff0c;基本覆盖各个行业&#xff0c;大家有需要的可以借鉴学习~ 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面…

“数字人交互,与虚拟的自己互动”——用PaddleAvatar打造数字分身,探索人机交互的未来

“数字人交互&#xff0c;与虚拟的自己互动”——用PaddleAvatar打造数字分身&#xff0c;探索人机交互的未来 你是否曾经幻想过与自己的虚拟人交互&#xff1f;现在&#xff0c;使用PaddleAvatar&#xff0c;您可以将自己的图像、音频和视频转化为一个逼真的数字人视频&#…

Spring Cloud Alibaba--Nacos集群配置

文章目录 一、Nacos持久化配置二、Nacos集群配置三、避坑指南集群端口号冲突问题内存不足&#xff0c;无法启动的问题 一、Nacos持久化配置 Nacos默认自带的是嵌入式数据库derby&#xff0c;Nacos采用了集中式存储的方式来支持集群化部署&#xff0c;目前只支持MySQL的存储。 …

Goby 漏洞更新 |secnet-智能路由系统 actpt_5g.data 信息泄露

漏洞名称&#xff1a;secnet-智能路由系统 actpt_5g.data 信息泄露 English Name&#xff1a;secnet Intelligent Router actpt_5g.data Infoleakage CVSS core: 7.5 影响资产数&#xff1a;71768 漏洞描述&#xff1a; secnet安网智能AC管理系统是广州安网通信技术有限公…

mysql错误:2059 - Authentication plugin ‘caching_ sha2_password‘ cannot be loaded:

这个错误是因为MySQL数据库使用了 caching_sha2_password 插件进行身份验证&#xff0c;而该插件需要 MySQL 8.0.4 及以上版本的 MySQL 客户端才能够使用。 如果你使用的是旧版本的 MySQL 客户端&#xff0c;可以考虑升级到 MySQL 8.0.4 或更高版本。如果升级不是一个可行的选…

Windows重启mysql的方法(快速简单)

目录 一、背景 二、操作步骤 错误做法 正确做法 一、背景 有时候修改了数据库&#xff0c;但是MySQL数据库内容有延迟缓存&#xff0c;那么就需要重启一下数据库去解决问题 二、操作步骤 错误做法 直接去cmd命令里面输入net stop mysql这样停止&#xff0c;这样很可能…

【C++初阶】C++模版(进阶)

文章目录 前言一、非类型模板参数二、模板的特化概念函数模板特化类模板特化1.全特化3.偏特化 三、模板分离编译什么是分离编译模板的分离编译解决方法 模板总结 前言 前边我们讲解了模版初阶的内容&#xff0c;对泛型编程&#xff0c;函数模版&#xff0c;类模板有了一定的认…

上海亚商投顾:沪指失守3300点关口 AI应用方向大幅调整

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 市场情绪 三大指数今日集体调整&#xff0c;尾盘均跌超1%&#xff0c;沪指失守3300点关口&#xff0c;日线录得4连阴走势。游…

IS210AEPSG1AFC磁场由串联励磁绕组和并联励磁的组合提供

​ IS210AEPSG1AFC磁场由串联励磁绕组和并联励磁的组合提供 复合发生器 在这种类型中&#xff0c;磁场由串联励磁绕组和并联励磁的组合提供&#xff0c;并联磁场有许多圈数的导线&#xff0c;但它只承载小电流&#xff0c;而串联励磁绕组有几圈粗线并承载负载电流 串联励磁绕组…

【JAVAEE】线程池基础知识⭐

目录 1.什么是线程池 2.为什么要使用线程池 3.怎么使用线程池 4.自定义一个线程池 5.为什么不推荐使用系统自带的线程池 5.1线程池构造方法的参数和含义 5.1.1拒绝策略 5.2线程池的工作原理 5.3为什么不适用系统自带的线程池 补充&#xff1a;工厂模式 1.什么是线程池…

stm32 74hc595外扩io 调试记录

本文使用的测试代码如下 (1条消息) stm3274hc595外扩io调试工程&#xff0c;软件代码2片74hc595级联外扩IO资源-CSDN文库 有个项目对成本比较敏感&#xff0c;又想用ST的片子&#xff0c;输出管脚比较多&#xff0c;就考虑外扩IO&#xff0c;也有一些外扩IO的片子但是用下来成…

视频理解AI模型分类与汇总

人工智能领域视频模型大体也经历了从传统手工特征&#xff0c;到卷积神经网络、3D卷积网络、双流网络、transformer的发展脉络。 视频的技术大多借鉴图像处理技术&#xff0c;只是视频比图片多了一个时间维度。 下面内容先简单汇总下&#xff0c;后续再逐渐补充。 1. 双流网…

DS200SLCCG1AFG随着频率的增加而增加。具有高 Dk 的基材将具有高 Df。

​ DS200SLCCG1AFG随着频率的增加而增加。具有高 Dk 的基材将具有高 Df。 Df 耗散因数&#xff08;又名损耗角正切&#xff09; Df 测量由于电阻加热而损失了多少功率。PCB 基板形成电容器作为绝缘体&#xff0c;导体通常位于两侧。作为电容器&#xff0c;它会表现出容抗&#…

MySQL---聚合函数、字符串函数、数学函数、日期函数

1. 聚合函数 数据准备&#xff1a; create database mydb4; use mydb4;create table emp(emp_id int primary key auto_increment comment 编号,emp_name char(20) not null default comment 姓名,salary decimal(10,2) not null default 0 comment 工资,department char(20…

激光切割机要换新该怎么选?如何减少激光加工设备的老化问题?

激光器的销量持续攀高&#xff0c;激光切割机的应用领域涉及众多行业。随着加工范围和厚度的提升&#xff0c;运行多年的中低功率 激光切割机已经不能满足时下很多设备加工的需求&#xff0c;要提企业的加工能力&#xff0c;选择一款新的激光加工设备已是势在必行。 激光切割机…

Ubuntu使用(持续更新中)

文章目录 1.以root身份登录2.配置apt源3.安装Docker3.1BUG: 4.在VMware中克隆Ubuntu5.配置apt国内源 额 我们项目用的CentOS7,由于CentOS8停止了维护,客户反馈了这个问题,所以玩一下Ubuntu,我使用的是Ubuntu Serve LST,如有不同,另行百度 1.以root身份登录 Ubuntu默认是不开启r…

java异常的声明、捕获、抛出、处理(throws、throw、try-catch详解)

异常的处理 LBYL: Look Before You Leap. 在操作之前就做充分的检查. 即&#xff1a;事前防御型 boolean ret false; ret 登陆游戏(); if (!ret) { 处理登陆游戏错误; return; } ret 开始匹配(); if (!ret) { 处理匹配错误; return; } ret 游戏确认(); if (!ret) { 处理游…