素材巴巴 > 程序开发 >

唤醒手腕 Java 后端 Springboot 结合 Redis 数据库学习笔记(更新中)

程序开发 2023-09-03 16:39:42

Redis 基本介绍

Redis Introduction

The open source, in-memory data store used by millions of developers as a database, cache, streaming engine, and message broker.

基本概念:redis 是一个开源的、使用 C 语言编写的、支持网络交互的、可基于内存也可持久化的 Key-Value 数据库(非关系性数据库)。

redis 数据类型

Redis data types

Overview of data types supported by Redis

Redis is a data structure server. At its core, Redis provides a collection of native data types that help you solve a wide variety of problems, from caching to queuing to event processing. Below is a short description of each data type, with links to broader overviews and command references.

Redis 远程连接配置

默认情况下 Redis 是无法在远程直接进行连接,如果想要强制远程连接需要进行更改配置文件。

配置 bind IP 0.0.0.0

在这里插入图片描述
关闭保护模式 protected-mode no

在这里插入图片描述
服务器放行 端口 6379

在这里插入图片描述
如果是宝塔面板(需要安全放行 6379 端口)

在这里插入图片描述

Springboot Redis

Redis 是我们 Java 开发中,使用频次非常高的一个 nosql 数据库,数据以 key-value 键值对的形式存储在内存中。redis 的常用使用场景,可以做缓存,分布式锁,自增序列等,使用 redis 的方式和我们使用数据库的方式差不多,首先我们要在自己的本机电脑或者服务器上安装一个 redis 的服务器,通过我们的java 客户端在程序中进行集成,然后通过客户端完成对redis的增删改查操作。

SpringBoot 中更常见的方式是集成 spring-data-redis,这是 spring 提供的一个专门用来操作redis的项目,封装了对 redis 的常用操作,里边主要封装了 jedis 和 lettuce 两个客户端。相当于是在他们的基础上加了一层门面。

添加redis所需依赖

org.springframework.bootspring-boot-starter-data-redis
 
 

常规配置如下: 在 application.yml 配置文件中配置 redis 的连接信息

spring:redis:host: localhostport: 6379password: rootdatabase: 0
 

application.properties

#Redis 服务器主机地址
 spring.data.redis.host=127.0.0.1
 #Redis 服务器连接端口
 spring.data.redis.port=6379
 #Redis 服务器连接密码(默认为空)
 spring.data.redis.password=123456
 #连接池最大连接数(使用负值表示没有限制)
 spring.data.redis.pool.max-active=8
 #连接池最大阻塞等待时间(使用负值表示没有限制)
 spring.data.redis.pool.max-wait=-1
 #连接池中的最大空闲连接
 spring.data.redis.pool.max-idle=8
 #连接池中的最小空闲连接
 spring.data.redis.pool.min-idle=0
 #连接超时时间(毫秒)
 spring.data.redis.timeout=30000
 

StringRedisTemplate

RedisTemplate 和 StringRedisTemplate 的区别?

两者的关系是 StringRedisTemplate 继承 RedisTemplate。

在这里插入图片描述

两者的数据是不共通的;也就是说 StringRedisTemplate 只能管理 StringRedisTemplate 里面的数据,RedisTemplate 只能管理 RedisTemplate 中的数据。

SDR默认采用的序列化策略有两种,一种是 String 的序列化策略,一种是JDK的序列化策略。

StringRedisTemplate 默认采用的是 String 的序列化策略,保存的 key 和 value 都是采用此策略序列化保存的。

RedisTemplate 默认采用的是 JDK 的序列化策略,保存的 key 和 value 都是采用此策略序列化保存的。

那么就可以得出一个结论,如果你想使用默认的配置来操作 redis,则如果操作的数据是字节数组,就是用 redistemplate,如果操作的数据是明文,使用stringredistemplate。

当然在项目中真实使用时,一般是自定义 redistemplate 的 bean 实例,来设置具体的序列化策略,说白了就是 redistemplate 通过自定义 bean 可以实现和 stringredistemplate 一样的序列化,使用起来更加灵活。

Springboot web

org.springframework.bootspring-boot-starter-web
 
 

Java Date 类时间格式化

在这里插入图片描述
详细代码:

package com.mslmsxp.redistest.service;import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.stereotype.Component;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;import java.text.SimpleDateFormat;
 import java.util.Date;@RestController
 @Slf4j
 public class RedisService {@Autowired(required = false)private StringRedisTemplate redis;@GetMapping("/redis")public String GetRedisData() {SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy.MM.dd hh:ss:mm:SSS");String time = simpleDateFormat.format(new Date());redis.opsForValue().set("time", time);String name = redis.opsForValue().get("time");log.info("successfully add");return name;}
 }
 

在这里插入图片描述

Reactive 反应式

反应式编程(Reactive Programming)对有些人来说可能相对陌生一点。反应式编程是一套完整的编程体系,既有其指导思想,又有相应的框架和库的支持,并且在生产环境中有大量实际的应用。在支持度方面,既有大公司参与实践,也有强大的开源社区的支持。

反应式编程出现的时间并不短,不过在最近的一段时间内,它得到了很大的关注。这主要体现在主流编程平台和框架增强了对它的支持,使它得到了更多的受众,同时也反映了其在开发中的价值。

就 Java 平台来说,几个突出的事件包括:Java 9中把反应式流规范以 java.util.concurrent.Flow 类的方式添加到了标准库中;Spring 5对反应式编程模型提供了内置支持,并增加了新的 WebFlux 模块来支持反应式 Web 应用的开发。在前端开发中,Angular 框架也内置使用了 RxJS。

反应式编程所涵盖的内容很多。本 Chat 作为反应式编程的入门,主要侧重在 Java 平台。与其他编程范式一样,反应式编程要求开发人员改变其固有的思维模式,以不同的角度来看问题。对于熟悉了传统面向对象编程范式的人来说,这样的思想转变可能并不那么容易。

反应式编程在解决某些问题时有其先天的优势。在对应用性能要求很高的今天,反应式编程有更大的用武之地。作为开发人员来说,根据项目的需求和特征,选择最适合的编程模型可以达到事半功倍的效果。这也是本 Chat 的出发点。


标签:

素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。