Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >SpringBoot整合Redis、ApacheSolr和SpringSession

SpringBoot整合Redis、ApacheSolr和SpringSession

作者头像
每周聚焦
发布于 2025-03-25 10:11:18
发布于 2025-03-25 10:11:18
4500
代码可运行
举报
运行总次数:0
代码可运行

一、简介

SpringBoot自从问世以来,以其方便的配置受到了广大开发者的青睐。它提供了各种starter简化很多繁琐的配置。SpringBoot整合Druid、Mybatis已经司空见惯,在这里就不详细介绍了。今天我们要介绍的是使用SpringBoot整合Redis、ApacheSolr和SpringSession。

二、SpringBoot整合Redis

Redis是大家比较常用的缓存之一,一般Redis都会搭建高可用(HA),Cluster或者Sentinel。具体的搭建方法请参照Redis官方文档。我们这里已Sentinel举例,搭建RedisSentinel一般都是3个节点,Redis的端口一般是6379,Sentinel的端口一般是26379。

  我们要使用SpringBoot整合Redis,首先要把对应的Redis的starter加入到POM中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
xml 体验AI代码助手 代码解读复制代码<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

引入jar包以后,我们直接在application.properties文件中,添加RedisSentinel的配置即可完成整合。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ini 体验AI代码助手 代码解读复制代码spring.redis.sentinel.master=mymaster
spring.redis.sentinel.nodes=192.168.2.233:26379,192.168.2.234:26379,192.168.2.235:26379
spring.redis.pool.max-active=1024
spring.redis.pool.max-idle=200
spring.redis.pool.min-idle=100
spring.redis.pool.max-wait=10000

sentinel.master是master的名称,我们搭建RedisSentinel时使用的默认的名称mymaster。

sentinel.nodes是sentinel的节点,注意是sentinel的节点,不是redis的节点。用ip:端口的格式,多个节点用“,”隔开。

下面则是一些连接池的信息:

  • pool.max-active:最大活跃数
  • pool.max-idle:最大空闲数
  • pool.min-idle:最小空闲数
  • pool.max-wait:最大等待时间

在程序中,我们可以直接注入redisTemplate,对Redis进行操作

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
angelscript 体验AI代码助手 代码解读复制代码@Autowired
private StringRedisTemplate stringRedisTemplate;

至此,Redis整合完了。

三、SpringBoot整合SpringSession

SpringSession提供了集群Session的管理,无需通过容器。它可以接入不同的存储层,例如:数据库、Redis、MongoDB等。它可以和SpringBoot无缝结合。

首先,我们将SpringSession引入到项目中,在POM中加入如下配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
xml 体验AI代码助手 代码解读复制代码<dependency>
    <groupId>org.springframework.session</groupId>
    <artifactId>spring-session</artifactId>
</dependency>

然后在application.properties中指定一下SpringSession的存储类型:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
elm 体验AI代码助手 代码解读复制代码spring.session.store-type=redis

这样就非常简单的整合了SpringSession,如果对cookie有特别的要求,可以在项目中新建cookie的Bean来代替SpringBoot自动创建的bean。具体如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
java 体验AI代码助手 代码解读复制代码@Bean
public DefaultCookieSerializer cookieSerializer(){
    DefaultCookieSerializer cookie = new DefaultCookieSerializer();
    cookie.setCookieName("springboot_id");
    return cookie;
}  

上述的例子,我们修改了cookie的名字。如需修改其他属性,请set相关的属性值。

四、SpringBoot整合Solr

ApacheSolr是比较常见的搜索引擎,SpringBoot也可以非常方便的整合solr,方便大家的开发。具体的ApacheSolr的概念以及用法请自行查阅相关文档。在搭建solr时,我们一般都会借助zookeeper来搭建SolrCloud,以提高Solr的可用性。在这里我们整理SolrCloud。

首先我们引入ApacheSolr的starter:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
xml 体验AI代码助手 代码解读复制代码<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-solr</artifactId>
</dependency>

在application.properties中,添加zookeeper的信息,如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dns 体验AI代码助手 代码解读复制代码spring.data.solr.zk-host=192.168.2.233:2181,192.168.2.234:2181,192.168.2.235:2181

多个zookeeper时,用“,”隔开。

这样,SpringBoot整合ApacheSolr就完成了,非常方便吧。接下来我们就可以用Spring-data来访问solr了。

1、编写自己的实体类对应solr返回的数据,具体代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
less 体验AI代码助手 代码解读复制代码@Setter@Getter
@SolrDocument(solrCoreName = "xy_company")
public class SolrCompany {
    @Field("id")
    private String id;                                
    @Field("companyName_txt")
    private String companyName;                   
}

@Setter@Getter这两个注解大家比较常见,用于生成get、set方法。

  @SolrDocument(solrCoreName = "xy_company"),用于指定这个实体对应solr中的core或collection,core是单实例中的称呼,collection是SolrCloud中的称呼,意思大体一样。

  @Field("id"),用于指定对应solr中的字段。

2、编写自己的存储层,继承SolrCrudRepository,如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
angelscript 体验AI代码助手 代码解读复制代码public interface CompanyRepository extends SolrCrudRepository<SolrCompany,String> {
    List<SolrCompany> findByCompanyName(String companyName);
}

这样,这个存储层就可以访问solr了,如果多个存储层共用一个实体,可以写多个存储层,继承不同Repository,具体请查阅Spring-data。

3、在自己的业务中,使用solr

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
typescript 体验AI代码助手 代码解读复制代码
public List<SolrCompany> getCompanyByName(String companyName){
       return companyRepository.findByCompanyName(companyName);
}

至此,SpringBoot整合Solr就完成了,很简单吧。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SpringBoot整合Redis、ApacheSolr和SpringSession
SpringBoot整合Redis、ApacheSolr和SpringSession
小忽悠
2018/09/04
4610
分布式session-SpringSession的应用
Spring Session提供了一套创建和管理Servlet HttpSession的方案,默认采用外置的Redis来存储Session数据,以此来解决Session共享的问题。
程序猿川子
2024/09/26
1400
分布式session-SpringSession的应用
Docker下redis与springboot三部曲之三:springboot下访问redis哨兵
在《 Docker下redis与springboot三部曲之二:安装redis主从和哨兵》一文中,我们在docker下搭建了redis主从和哨兵,本章我们开发一个基于springboot的web工程,体验springboot下如何使用redis高可用服务;
程序员欣宸
2022/05/06
4150
Docker下redis与springboot三部曲之三:springboot下访问redis哨兵
SpringBoot一键集成Redis
您好,我是码农飞哥,感谢您阅读本文!本文主要介绍SpringBoot如何整合Redis。
码农飞哥
2021/08/18
4010
springboot整合redis的哨兵模式
在Spring Boot中整合Redis的哨兵模式涉及到配置Spring Boot应用程序以连接到Redis哨兵集群。哨兵模式是Redis的一种高可用解决方案,它提供了自动故障转移功能,可以在Redis主节点发生故障时自动将一个从节点升级为新的主节点。
七条猫
2024/09/23
3130
springboot 整合redis
上面就是简单的实现redis的存数据,取数据。具体怎么用看你们,如果redis不会安装可以去看看简单的安装教程。这里就不一一描述了。
斯文的程序
2019/11/07
5050
SpringBoot整合Redis
偷懒了几天,好几天没写springboot了。真的不是没什么可写,是因为坚持做一件事真的很难。 今天抽空弄了一个springboot整合redis的小例子。 首先做好准备工作,在本地安装一个redi
dalaoyang
2018/04/28
1.1K0
SpringBoot整合Redis
Redis在SpringBoot中使用案例
最初的目的就想要在项目中把Redis用起来,然后最近公司的项目全部需要转成springboot,所以现在的项目都是Springboot的,自己刚好也研究下Springboot的。所以才有了下文的案例。
程序员爱酸奶
2020/03/04
8630
Redis在SpringBoot中使用案例
springboot整合redis
springboot通常整合redis,采用的是RedisTemplate的形式,除了这种形式以外,还有另外一种形式去整合,即采用spring支持的注解进行访问缓存 。
BUG弄潮儿
2022/06/30
5220
java架构之路-(Redis专题)SpringBoot连接Redis超简单
  上次我们搭建了Redis的主从架构,哨兵架构以及我们的集群架构,但是我们一直还未投入到实战中去,这次我们用jedis和springboot两种方式来操作一下我们的redis
小菜的不能再菜
2019/10/25
1.3K0
java架构之路-(Redis专题)SpringBoot连接Redis超简单
深度好文:保姆级教程Redis高可用之哨兵站岗
sentinel 哨兵是特殊的 redis 服务,哨兵不提供读写服务,主要用来监控、提醒和自动故障转移;
一个程序猿的异常
2023/07/24
7290
深度好文:保姆级教程Redis高可用之哨兵站岗
docker compose搭建redis7.0.4高可用一主二从三哨兵集群并整合SpringBoot【图文完整版】
redis在我们企业级开发中是很常见的,但是单个redis不能保证我们的稳定使用,所以我们要建立一个集群。 redis有两种高可用的方案:
掉发的小王
2022/09/23
2.2K0
docker compose搭建redis7.0.4高可用一主二从三哨兵集群并整合SpringBoot【图文完整版】
02 Springboot整合redis
用户7630333
2023/12/07
2850
02 Springboot整合redis
SpringSession的使用了解下
单机环境下我们Session是存储在应用服务的内存中,但是在分布式环境 下,这种存储在应用服务器内存的方案显然不能实现session共享。本次我们将介绍spring-session实现分布式环境下Session共享方案,Session信息存储在redis中。
码农飞哥
2021/08/18
4910
Spring全家桶之SpringSession
Spring Session 是 Spring 的项目之一。Spring Session 提供了一套创建和管理 Servlet HttpSession 的方案,默认采用外置的 Redis 来存储 Session 数据,以此来解决 Session 共享的 问题。
时间静止不是简史
2021/03/04
8320
Spring全家桶之SpringSession
Springboot整合redis +cache
redis(Remote Dictionary Server 远程数据服务) 是一个高性能的key-value数据库。
smallmayi
2022/05/12
8120
Springboot整合redis +cache
Spring全家桶之SpringSession「建议收藏」
Spring Session 是 Spring 的项目之一。Spring Session 提供了一套创建和管理 Servlet HttpSession 的方案,默认采用外置的 Redis 来存储 Session 数据,以此来解决 Session 共享的 问题。
全栈程序员站长
2022/11/03
2.3K0
Spring全家桶之SpringSession「建议收藏」
SpringBoot整合SpringDataRedis
  本文介绍下SpringBoot如何整合SpringDataRedis框架的,SpringDataRedis具体的内容在前面已经介绍过了,可自行参考。
用户4919348
2019/05/22
1.4K0
SpringBoot整合Druid
简介:Druid是阿里巴巴提供的数据库连接池,文本讲解SpringBoot整合Druid。
GeekLiHua
2025/01/21
790
SpringBoot整合Druid
使用spring-session-data-redis做session共享实现
1.pom.xml依赖 <!-- spring-session-redis--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <exclusions> <exclusion> <groupId>io.lettuce</groupId>
Dream城堡
2022/01/07
2.4K0
相关推荐
SpringBoot整合Redis、ApacheSolr和SpringSession
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验