当前位置: 首页 > news >正文

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

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支持丰富的数据类型,支持string,list,sorted set,set,zset,hash等数据结构的存储。
  • 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行。
  • 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除。
  • 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)

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所需依赖

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

常规配置如下: 在 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

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

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 的出发点。

http://www.lryc.cn/news/15303.html

相关文章:

  • robotiq 2f 140安装在UR3机械臂后面在gazebo仿真中散架、抖动
  • 坐标系概念 四元数 欧拉角
  • 从0开始写Vue项目-SpringBoot整合Mybatis-plus实现登录、注册功能
  • K8s中gRpc通信负载均衡失效
  • 第三届区块链服务网络(BSN)全球合作伙伴大会在杭州成功举办
  • 人工智能基础部分13-LSTM网络:预测上证指数走势
  • 内网穿透/组网/设备上云平台EasyNTS上云网关的安装操作指南
  • 易点天下基于 StarRocks 全面构建实时离线一体的湖仓方案
  • Tomcat的类加载机制
  • 【shell 编程大全】数组,逻辑判断以及循环
  • Android13 Bluetooth更新
  • 手工测试混了5年,年底接到了被裁员的消息....
  • Umi框架
  • 教你学git
  • 【工作笔记】syslog,kern.log大量写入invalid cookie错误信息问题
  • 【C++】多线程
  • 0202插入删除-算法第四版红黑树-红黑树-数据结构和算法(Java)
  • vue 生成二维码插件 vue-qr使用方法
  • 网络工程课(二)
  • Pytorch并行计算(三): 梯度累加
  • 蓝桥杯入门即劝退(十八)最小覆盖子串(滑动窗口解法)
  • Android一~
  • 一月券商金工精选
  • UML中常见的9种图
  • 使用SpringBoot实现无限级评论回复功能
  • Kafka 介绍和使用
  • [学习笔记]Rocket.Chat业务数据备份
  • 【ZOJ 1090】The Circumference of the Circle 题解(海伦公式+正弦定理推论)
  • 【go】slice原理
  • 【数据库】MySQL概念知识语法-基础篇(DQL),真的很详细,一篇文章你就会了