SpringBoot整合Redis、ApachSolr和SpringSession的示例

本文介绍了SpringBoot整合Redis、ApachSolr和SpringSession,分享给大家,具体如下:

一、简介

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中:

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

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

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:端口的格式,多个节点用“,”隔开。

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

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

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

@Autowired
private StringRedisTemplate stringRedisTemplate;

至此,Redis整合完了。

三、SpringBoot整合SpringSession

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

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

<dependency>
 <groupId>org.springframework.session</groupId>
 <artifactId>spring-session</artifactId>
</dependency>

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

spring.session.store-type=redis

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

    @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:

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

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

代码如下:

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返回的数据,具体代码如下:

@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,如下:

public interface CompanyRepository extends SolrCrudRepository<SolrCompany,String> {
  List<SolrCompany> findByCompanyName(String companyName);
}

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

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

 public List<SolrCompany> getCompanyByName(String companyName){
    return companyRepository.findByCompanyName(companyName);
  }

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

接下来,我们还将介绍一些主流框架的整合,比如:MongoDB,Kafka等。本次的详细代码请参照我的GitHub:https://github.com/bigbugliu/spring-boot-demo

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

您可能感兴趣的文章:

  • 详解springboot配置多个redis连接
  • springboot整合spring-data-redis遇到的坑
  • SpringBoot利用redis集成消息队列的方法
  • springboot整合redis进行数据操作(推荐)
  • SpringBoot远程访问redis服务器问题剖析
  • SpringBoot项目中使用redis缓存的方法步骤
  • 详解SpringBoot集成Redis来实现缓存技术方案
  • 详解springboot中redis的使用和分布式session共享问题
  • 浅谈SpringBoot集成Redis实现缓存处理(Spring AOP实现)
(0)

相关推荐

  • 详解springboot中redis的使用和分布式session共享问题

    对于分布式使用Nginx+Tomcat实现负载均衡,最常用的均衡算法有IP_Hash.轮训.根据权重.随机等.不管对于哪一种负载均衡算法,由于Nginx对不同的请求分发到某一个Tomcat,Tomcat在运行的时候分别是不同的容器里,因此会出现session不同步或者丢失的问题. 实际上实现Session共享的方案很多,其中一种常用的就是使用Tomcat.Jetty等服务器提供的Session共享功能,将Session的内容统一存储在一个数据库(如MySQL)或缓存(如Redis)中. 本文旨在

  • 浅谈SpringBoot集成Redis实现缓存处理(Spring AOP实现)

    第一章 需求分析 计划在Team的开源项目里加入Redis实现缓存处理,因为业务功能已经实现了一部分,通过写Redis工具类,然后引用,改动量较大,而且不可以实现解耦合,所以想到了Spring框架的AOP(面向切面编程). 开源项目:https://github.com/u014427391/jeeplatform 第二章 SpringBoot简介 Spring框架作为JavaEE框架领域的一款重要的开源框架,在企业应用开发中有着很重要的作用,同时Spring框架及其子框架很多,所以知识量很广.

  • SpringBoot项目中使用redis缓存的方法步骤

    本文介绍了SpringBoot项目中使用redis缓存的方法步骤,分享给大家,具体如下: Spring Data Redis为我们封装了Redis客户端的各种操作,简化使用. - 当Redis当做数据库或者消息队列来操作时,我们一般使用RedisTemplate来操作 - 当Redis作为缓存使用时,我们可以将它作为Spring Cache的实现,直接通过注解使用 1.概述 在应用中有效的利用redis缓存可以很好的提升系统性能,特别是对于查询操作,可以有效的减少数据库压力. 具体的代码参照该

  • SpringBoot远程访问redis服务器问题剖析

    使用了SpringBoot的项目,在远程连接Redis服务器时,会遇倒一些小问题,这里剖析一下. 1.首先,要在pom文件中添加redis依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> </dependency> 2.接着要在项目的配置文件中添加对redis服务

  • 详解SpringBoot集成Redis来实现缓存技术方案

    概述 在我们的日常项目开发过程中缓存是无处不在的,因为它可以极大的提高系统的访问速度,关于缓存的框架也种类繁多,今天主要介绍的是使用现在非常流行的NoSQL数据库(Redis)来实现我们的缓存需求. Redis简介 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件,Redis 的优势包括它的速度.支持丰富的数据类型.操作原子性,以及它的通用性. 案例整合 本案例是在之前一篇SpringBoot + Mybatis + RESTful的基础上来集

  • 详解springboot配置多个redis连接

    一.springboot nosql 简介 Spring Data提供其他项目,用来帮你使用各种各样的NoSQL技术,包括MongoDB, Neo4J, Elasticsearch, Solr, Redis,Gemfire, Couchbase和Cassandra.Spring Boot为Redis, MongoDB, Elasticsearch, Solr和Gemfire提供自动配置.你可以充分利用其他项目,但你需要自己配置它们. 1.1.Redis Redis是一个缓存,消息中间件及具有丰富

  • SpringBoot利用redis集成消息队列的方法

    一.pom文件依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 二.创建消息接收者 变量.方法及构造函数进行标注,完成自动装配的工作. 通过 @Autowired的使用来消除 set ,get方法. @Autowired pub

  • springboot整合redis进行数据操作(推荐)

    redis是一种常见的nosql,日常开发中,我们使用它的频率比较高,因为它的多种数据接口,很多场景中我们都可以用到,并且redis对分布式这块做的非常好. springboot整合redis比较简单,并且使用redistemplate可以让我们更加方便的对数据进行操作. 1.添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starte

  • springboot整合spring-data-redis遇到的坑

    描述 使用springboot整合redis,使用默认的序列化配置,然后使用redis-client去查询时查询不到相应的key. 使用工具发现,key的前面多了\xAC\xED\x00\x05t\x00!这样一个串. 而且value也是不能直观可见的. 问题所在 使用springdataredis,默认情况下是使用org.springframework.data.redis.serializer.JdkSerializationRedisSerializer这个类来做序列化. org.spri

  • SpringBoot整合Redis实现访问量统计的示例代码

    目录 前言 Spring Boot 整合 Redis 引入依赖.增加配置 翠花!上代码 前言 之前开发系统的时候客户提到了一个需求:需要统计某些页面的访问量,记得当时还纠结了一阵子,不知道怎么去实现这个功能,后来还是在大佬的带领下借助 Redis 实现了这个功能.今天又回想起了这件事,正好和大家分享一下 Spring Boot 整合 Redis 实现访问量统计的全过程. 首先先解释一下为什么需要借助 Redis,其实原因也很简单,就是因为它非常快(每秒可执行大约110000次的 SET 操作,每

  • SpringBoot整合Redis、ApachSolr和SpringSession的示例

    本文介绍了SpringBoot整合Redis.ApachSolr和SpringSession,分享给大家,具体如下: 一.简介 SpringBoot自从问世以来,以其方便的配置受到了广大开发者的青睐.它提供了各种starter简化很多繁琐的配置.SpringBoot整合Druid.Mybatis已经司空见惯,在这里就不详细介绍了.今天我们要介绍的是使用SpringBoot整合Redis.ApacheSolr和SpringSession. 二.SpringBoot整合Redis Redis是大家比

  • Docker 部署 SpringBoot 项目整合 Redis 镜像做访问计数示例代码

    最终效果如下 大概就几个步骤 1.安装 Docker CE 2.运行 Redis 镜像 3.Java 环境准备 4.项目准备 5.编写 Dockerfile 6.发布项目 7.测试服务 环境准备 系统:Ubuntu 17.04 x64 Docker 17.12.0-ce IP:45.32.31.101 一.安装 Docker CE 国内不建议使用:"脚本进行安装",会下载安装很慢,使用步骤 1 安装,看下面的链接:常规安装方式 1.常规安装方式 Ubuntu 17.04 x64 安装

  • SpringBoot整合Redis正确的实现分布式锁的示例代码

    前言 最近在做分块上传的业务,使用到了Redis来维护上传过程中的分块编号. 每上传完成一个分块就获取一下文件的分块集合,加入新上传的编号,手动接口测试下是没有问题的,前端通过并发上传调用就出现问题了,并发的get再set,就会存在覆盖写现象,导致最后的分块数据不对,不能触发分块合并请求. 遇到并发二话不说先上锁,针对执行代码块加了一个JVM锁之后问题就解决了. 仔细一想还是不太对,项目是分布式部署的,做了负载均衡,一个节点的代码被锁住了,请求轮询到其他节点还是可以进行覆盖写,并没有解决到问题啊

  • SpringBoot整合Redis的示例

    redis是最常用的缓存数据库,常用于存储用户登录token.临时数据.定时相关数据等. redis是单线程的,所以redis的操作是原子性的,这样可以保证不会出现并发问题. redis基于内存,速度非常快,据测试,redis读的速度是110000次/s,写的速度是81000次/s 本节介绍SpringBoot引入redis,以及使用RedisTemplate来操作redis数据. 采用SpringBoot 2.1.9.RELEASE,对应示例代码在:https://github.com/lao

  • SpringBoot整合Redis管道的示例代码

    目录 1. Redis 之管道(pipeline) 2. SpringBoot 整合 Redis 管道实例 1. Redis 之管道(pipeline) 执行一个Redis命令,Redis客户端和Redis服务器就需要执行以下步骤: 客户端发送命令到服务器: 服务器接受命令请求,执行命令,产生相应的结果: 服务器返回结果给客户端: 客户端接受命令的执行结果,并向用户展示. Redis命令所消耗的大部分时间都用在了发送命令请求和接收命令结果上面,把任意多条Redis命令请求打包在一起,然后一次性地

  • SpringBoot整合Redis实现消息发布与订阅的示例代码

    当我们在多个集群应用中使用到本地缓存时,在数据库数据得到更新后,为保持各个副本当前被修改的数据与数据库数据保持同步,在数据被操作后向其他集群应用发出被更新数据的通知,使其删除;下次当其他应用请求该被更新的数据时,应用会到数据库去取,也就是最新的数据,从而使得被更新数据与数据库保持同步! 能实现发送与接收信息的中间介有很多,比如:RocketMQ.RabbitMQ.ActiveMQ.Kafka等,本次主要简单介绍Redis的推送与订阅功能并集成Spring Boot的实现. 1.添加SpringB

  • SpringBoot 整合Redis 数据库的方法

    Redis简介 Redis(官网: https://redis.io )是一个基于内存的日志型可持久化的缓存数据库,保存形式为key-value格式,Redis完全免费开源,它使用ANSI C语言编写.与其他的key - value缓存产品一样,Redis具有以下三个特点. • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用: • Redis不仅支持简单的key-value类型数据,同时还提供字符串.链表.集合.有序集合和哈希等数据结构的存储: • R

  • MyBatis整合Redis实现二级缓存的示例代码

    MyBatis框架提供了二级缓存接口,我们只需要实现它再开启配置就可以使用了. 特别注意,我们要解决缓存穿透.缓存穿透和缓存雪崩的问题,同时也要保证缓存性能. 具体实现说明,直接看代码注释吧! 1.开启配置 SpringBoot配置 mybatis: configuration: cache-enabled: true 2.Redis配置以及服务接口 RedisConfig.java package com.leven.mybatis.api.config; import com.fasterx

  • springboot整合redis修改分区的操作流程

    springboot整合redis修改分区 问题由来 最近使用springboot整合redis,一个系统动态数据源连接不同数据库,缓存使用的redis,那么就需要将不同数据库的数据缓存到redis不同的分区,也就是不同的库中. 老版解决 这里的老版指的是2.0之前的,我使用的1.5.9是ok的. redis的配置类这里就不贴了,网上很多. 1.使用JedisConnectionFactory修改 @Autowired JedisConnectionFactory jedisConnection

随机推荐