Redis学习以及SpringBoot集成使用Redis

目录

一、Redis概述

二、Linux下使用Docker安装Redis

三、SpringBoot集成使用Redis

3.1 添加redis依赖 

3.2 配置连接redis

3.3 实现序列化

3.4 注入RedisTemplate

3.5 测试

四、Redis数据结构 


一、Redis概述

什么是redis?

redis 是一个高性能的,键值对的,将数据存储在内存中的非关系型数据库。 

redis 也可以将数据持久化到硬盘上,此外 redis 也提供了丰富的数据结构存储数据。

redis 也可以用来当做数据库,可以存储一些简单的数据(例如点赞数量),缓存(秒杀的商品数量信息),消息中间件。

  • 高性能:数据存储在内存中,直接访问内存,性能极高,速度快。
  • 键值对:如 { id:1 , name:小林 , age:20 }
  • 非关系型:数据存储是键值对的,没有二维表关系,不使用sql操作。

redis的作用:使用 redis 作为缓存,将一些访问量大或者修改较少的数据使用 redis 存储起来,对mysql形成保护。

二、Linux下使用Docker安装Redis

 创建配置文件

mkdir -p /opt/redis/conf

创建数据的映射(数据卷) 

mkdir -p /opt/redis/data

拉取镜像 

docker pull redis:6.0 

安装

docker run -d -p 6379:6379 --name redis --restart=always  --privileged=true -v /opt/redis/conf/redis.conf:/etc/redis/redis.conf -v /opt/redis/data:/data redis:6.00

由于今年6月Docker Hub对国内的封锁,终止了对镜像仓库的访问和拉取。所以若拉取镜像失败,可以私信博主,通过加载本地镜像即可!

三、SpringBoot集成使用Redis

原理:使用Springboot 对 Jedis 的封装实现。

  1. 管理连接Redis对象,提供数据库连接池功能。

  2. 针对每种数据结构分别封装不同的实现类。

  3. 事务。

  4. 提供了对键,值进行序列化和反序列化操作。

3.1 添加redis依赖 

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

💥如图所示: 

3.2 配置连接redis

spring:redis:host: 192.168.31.128port: 6379password: 123database: 0pool:max-active: 8 #连接池最大连接数(使用负值表示没有限制)max-wait: -1ms #连接池最大阻塞等待时间(使用负值表示没有限制)max-idle: 8 #连接池中的最大空闲连接min-idle: 0 #连接池中的最小空闲连接timeout: 5000ms #连接超时时间(毫秒)

💥如图所示:

3.3 实现序列化

在config包下创建一个RedisConfig类,复制如下代码即可:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;@Configuration
public class RedisConfig {/*** 序列化键,值* @param connectionFactory* @return*/@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();redisTemplate.setConnectionFactory(connectionFactory);//序列化策略Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<Object>(Object.class);StringRedisSerializer redisSerializer = new StringRedisSerializer();redisTemplate.setKeySerializer(redisSerializer);//key 单一的字符串redisTemplate.setHashKeySerializer(redisSerializer);redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);//value {}redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);return redisTemplate;}
}

💥如图所示: 

3.4 注入RedisTemplate

    @AutowiredRedisTemplate redisTemplate;

💥如图所示: 

3.5 测试

我们临时在web层创建一个测试类,从前端发送请求进行测试:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping(path = "/redisCtl")
public class RedisTest {@AutowiredRedisTemplate redisTemplate;@RequestMapping(path = "/test1")public void test1(){ValueOperations valueOperations = redisTemplate.opsForValue();valueOperations.set("name", "jim");}}

💥如图所示:

💥从浏览器访问: 

💥键值添加成功! 

四、Redis数据结构 

5种基本常用结构

Redis中的键都是字符串类型,这里的数据结构指的是值的结构

redis常用的五种数据类型:string(字符串),hash(哈希),list(列表),set(无序集合)及zset(有序集合)。 

 

底层实现:



本次的分享就到此为止了,希望我的分享能给您带来帮助,创作不易也欢迎大家三连支持,你们的点赞就是博主更新最大的动力!如有不同意见,欢迎评论区积极讨论交流,让我们一起学习进步!有相关问题也可以私信博主,评论区和私信都会认真查看的,我们下次再见

 博主wx:g2279605572 

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

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

相关文章

数据库恢复技术详解【从基础冗余数据到故障恢复的全过程】

在数据库系统中&#xff0c;数据的安全性和一致性至关重要。无论是面对事务故障、系统故障还是介质故障&#xff0c;数据库都需要具备强大的恢复机制来应对这些潜在风险。本文将带领大家详细了解数据库恢复的实现技术&#xff0c;重点介绍如何利用冗余数据、转储和日志文件来实…

Cpp快速入门语法(下)(2)

文章目录 前言一、函数重载概念与使用C为何支持函数重载&#xff1f; 二、引用概念语法特性权限(常引用)使用场景与指针的区别 三、内联函数四、auto关键字(C11)五、基于范围的for循环(C11)六、指针空值nullptr(C11)总结 前言 承前启后&#xff0c;正文开始&#xff01; 一、函…

【BFS专题】— 解决拓扑排序问题

拓扑排序介绍&#xff1a; 1、课程表 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 通过Map<Integer, List<Integer>> 来创建邻接图&#xff0c;数组来表示入度然后遍历课程数组&#xff0c;建图然后再拓扑排序&#xff0c;bfs最后在遍历入度数组&…

14届蓝桥杯嵌入式国赛

目录 前言&#xff1a; 1.使用CUbeMX进行基础初始化配置 &#xff08;1&#xff09;选则芯片与基本初始化 &#xff08;2&#xff09;LED配置 &#xff08;3&#xff09;按键配置 &#xff08;4&#xff09;定时器和PWM以及频率 &#xff08;5&#xff09;ADC电压检测 …

计算机网络 --- 初识协议

序言 上一篇文章中 &#xff08;&#x1f449;点击查看&#xff09;&#xff0c;我们简单的了解了怎么寻找目标计算机&#xff0c;需要通过交换机&#xff0c;路由器等设备跨越多个网络来不断的转发我们需要传输的数据&#xff0c;直至到达目标计算机。  那我们设备之间数据是…

JMeter 中使用 Gson 操作请求中的Boby参数

背景 使用org.json.JSONObject 转换&#xff0c;与原Body参数顺序发生变化&#xff0c;原因&#xff1a;JSONObject内部是用Hashmap来存储的&#xff0c;本质上是一个无序的键值对集合&#xff0c;不应依赖字段的添加顺序。 为解决org.json.JSONObject 输出顺序问题&#xff…

鸿蒙读书笔记2:《鸿蒙操作系统设计原理与架构》

2. OS基础平台部件化 &#xff08;1&#xff09;内核层 内核层包括内核部件和HDF驱动框架部件。当前已提供LiteOS-M、 LiteOS-A、Linux和UniProton这4种内核部件&#xff0c;未来还可增加更多类 型的内核部件。LiteOS、Linux内核部件可以按需部署在不同设备之 上&#xff0c;内…

echarts X轴文本太长 formatter自定义文本的显示方式

如果ECharts中X轴的文本太长&#xff0c;可以通过设置axisLabel的rotate属性来旋转标签&#xff0c;或者使用formatter函数来自定义文本的显示方式。另外&#xff0c;可以开启axisLabel的interval属性来控制显示的标签的间隔。 option {tooltip: {},xAxis: {type: category,d…

p14 使用阿里云服务器的docker部署NGINX

拉取NGINX的镜像 这里因为之前已经配置过从阿里云的镜像仓库里面拿镜像所以这里直接就执行docker pull nginx拉取NGINX镜像就OK了 运行NGINX镜像 这里执行docker run -d --name nginx01 -p 3344:80 nginx这里3344是服务器访问的端口80是容器内部的端口&#xff0c;可以看到…

【C++ Primer Plus习题】16.5

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: #include <iostream> #include <list> using namespace…

硬件工程师笔试面试——集成电路

目录 17、集成电路 17.1 基础 集成电路实物图 17.1.1 概念 17.1.2 集成电路的发展历程 17.1.3 集成电路的分类 17.1.4 集成电路的制造工艺 17.1.5 集成电路的应用 17.2 相关问题 17.2.1 集成电路的制造工艺中,光刻技术是如何实现的? 17.2.2 在集成电路设计中,如何…

微信电脑版聊天图片DAT格式文件转为普通JPG图片

1-7 本文章主要教你如何恢复微信聊天中的聊天图片&#xff0c;主要应用场景是&#xff0c;当你的微信被封号了&#xff0c;或者无法登录了&#xff0c;会导致微信聊天中的聊天图片没办法再打开&#xff0c;如果是重要的图片&#xff0c;那就有损失了&#xff0c;所以有了本文的…

【无人机设计与控制】四旋翼无人机轨迹跟踪及避障Matlab代码

摘要 本文主要研究了四旋翼无人机在复杂环境中的轨迹跟踪与避障控制策略。通过Matlab/Simulink对四旋翼无人机进行了建模与仿真。系统集成了避障算法&#xff0c;使得无人机在执行任务时能够有效避开障碍物&#xff0c;保证飞行的安全性与稳定性。 理论 无人机飞行控制通常涉…

leetcode-枚举算法

1.两数之和 题目一&#xff1a;两数之和 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案&#xff0c;并且你不能使用两次相同的元素…

Java项目实战II基于Spring Boot的宠物商城网站设计与实现

目录 一、前言 二、技术介绍 三、系统实现 四、论文参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 随着互联网…

6--SpringBootWeb案例(详解)

目录 环境搭建 部门管理 查询部门 接口文档 代码 删除部门 接口文档 代码 新增部门 接口文档 代码 已有前端&#xff0c;根据接口文档完成后端功能的开发 成品如下&#xff1a; 环境搭建 1. 准备数据库表 (dept 、 emp) -- 部门管理 create table dept( id int un…

快速入门Vue

Vue是什么 Vue.js&#xff08;通常简称为Vue&#xff09;是一个开源的JavaScript框架&#xff0c;用于构建用户界面和单页应用程序&#xff08;SPA&#xff09;。它由尤雨溪&#xff08;Evan You&#xff09;在2014年开发并发布。Vue的核心库只关注视图层&#xff0c;易于上手…

python实现多个pdf文件合并

打印发票时&#xff0c;需要将pdf合并成一个&#xff0c;单页两张打印。网上一些pdf合并逐渐收费&#xff0c;这玩意儿都能收费&#xff1f;自己写一个脚本使用。 实现代码&#xff1a; 输入pdf文件夹路径data_dir&#xff0c;统计目录下的“合并后的PDF”文件夹下&#xff0c;…

从边缘设备到云端平台,合宙DTURTU打造无缝物联网解决方案

如今&#xff0c;物联网&#xff08;IoT&#xff09;技术飞速发展&#xff0c;万物互联的时代已然到来&#xff0c;那么&#xff0c;高效、稳定地连接边缘设备与云端平台&#xff0c;实现数据的实时采集、传输与处理&#xff0c;就成为了推动物联网应用落地的关键。 DTU&#…