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

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 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 使用 Internet 共享 (ICS) 方式分配ip
  • 【JS】forEach中push为何不会陷入死循环,稀疏数组空元素为何不会被遍历
  • linux-vim的使用
  • 关于区块链的安全和隐私
  • Linux 开发工具(vim、gcc/g++、make/Makefile)+【小程序:进度条】-- 详解
  • java核心基础
  • Java流程控制语句——条件控制语句详解(附有流程图)#Java条件控制语句有哪些?#if-else、switch
  • 第十四届蓝桥杯嵌入式国赛
  • react开发环境搭建
  • 输入5个数,求中值,verilog实现
  • Splunk、Snort在入侵检测中的应用
  • Lodash库
  • 一.python入门
  • Go 综合题面试题
  • VMware Workstation 17.5安装教程
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • EventListener原理
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • Mac转Windows的拯救指南
  • passportjs 源码分析
  • Python学习之路16-使用API
  • React16时代,该用什么姿势写 React ?
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • use Google search engine
  • 大主子表关联的性能优化方法
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 基于web的全景—— Pannellum小试
  • 记一次用 NodeJs 实现模拟登录的思路
  • 你不可错过的前端面试题(一)
  • 小程序开发之路(一)
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​插件化DPI在商用WIFI中的价值
  • #git 撤消对文件的更改
  • #include<初见C语言之指针(5)>
  • #Linux(权限管理)
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • (Qt) 默认QtWidget应用包含什么?
  • (web自动化测试+python)1
  • (二)windows配置JDK环境
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (四)汇编语言——简单程序
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (转)母版页和相对路径
  • ../depcomp: line 571: exec: g++: not found
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .Net接口调试与案例
  • .NET中的十进制浮点类型,徐汇区网站设计
  • .vimrc php,修改home目录下的.vimrc文件,vim配置php高亮显示
  • // an array of int
  • @LoadBalanced 和 @RefreshScope 同时使用,负载均衡失效分析
  • @Responsebody与@RequestBody
  • [ C++ ] 类和对象( 下 )