IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Redis简单介绍以及在Springboot中使用redis -> 正文阅读

[Java知识库]Redis简单介绍以及在Springboot中使用redis

Redis简单介绍:

Redis是一个使用c语言开发的数据库,它的数据是存在内存中的,读写速度很快,因此被广泛的应用于缓存方面。

redis特点:

1.redis支持key-value、list、set、zset、hash等数据结构的存储。
2.redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候再次加载进行使用。
3.Redis有灾难恢复机制。因为可以把缓存中的数据持久化到磁盘上。
4.redis同时使用了惰性删除与定期删除。
5.redis支持发布订阅模型、lua脚本、事务等功能。
6.redis有原生的集群模式。

如果添加了缓存,则用户在进行请求时,是先在缓存中找是否存在有对应的数据,如果缓存中存在数据就直接返回给用户,如果缓存中没有,则在数据库中查找,如果数据库中存在,就把数据更新到缓存中,如果数据库中也没有对应的数据,那么就返回空数据。

为什么要使用缓存?

高性能:因为访问数据库中的数据时,因为是从硬盘中读取的,过程会较慢。如果用户经常要访问这个数据,就比如抖音视频的点赞数,可能会在短时间内不断增加,这时就要先存到缓存中。
使用缓存可以使用户在第二次访问这些数据的时候就直接操作内存获取了,速度较快。
高并发:redis的QPS大约是Mysql的10-100倍(QPS:服务器每秒可以查询的次数),所以redis很读写性能较优越。
直接操作缓存能够承受的数据库请求数量是远大于直接访问数据库的,提高了系统整体的并发性。

redis的常见的数据结构及命令操作:

在这里插入图片描述

springboot中使用redis

springBoot中对很多Nosql数据库都提供了自动化配置的支持,其中就有redis.
springBoot提供了对缓存功能的抽象,即允许绑定不同的缓存解决方案(如 ehcache、redis…)。但本身不直接提供缓存功能的实现,它支持注解方式使用缓存。

RedisTemplate是Spring中用于操作Redis的工具类。

1.导入依赖:

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

2.配置application.yml

redis:
    #数据库索引
    database: 7
    host: 127.0.0.1
    port: 6379
    password:
    #连接超时时间(ms)
    timeout: 5000
    # 自定义redis默认过期时间(单位:时)
    expire-time: 24
    jedis:
      pool:
        # 连接池最大连接数(使用负值表示没有限制)
        max-active: -1
        # 连接池最大阻塞等待时间(使用负值表示没有限制)
        max-wait: -1

redis默认密码是空。

3.添加缓存注解。

@CacheConfig

是一个类级别的注解,允许共享缓存的名称。
一个类可能会有多个缓存操作而这些缓存操作可能是重复的,这时候可以使用@CacheConfig.
在这里插入图片描述

@Cacheable:

是标记方法或类上的,标识该方法支持缓存,Spring调用注解标识方法后会将返回值缓存到redis中。
主要参数:
value : 缓存的名称,在spring配置中定义,必须指定至少一个。
key: 缓存的key,可以为空,如果指定要按照spel表达式编写,如果不指定,则缺省按照方法的所有参数进行组合。
condition: 缓存的条件,可以为空,使用spek编写,返回true或false,只有为true使才进行缓存。
在这里插入图片描述

在这里插入图片描述

如果在类上配置了@CacheConfig,那么此时@Cacheable中的value就会取代@CacheConfig中cacheNames,如上。
如果在类上配置了@CacheConfig(cacheNames = " "),在该类下的@Cacheable中可以不用配置value.
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

默认key生成:
如果没有参数,则使用0作为key;
如果只有一个参数,使用该参数作为key;
如果有多个参数,使用包含所有参数的hashCode作为key

@CacheEvict

标记在方法上,方法执行完毕之后根据条件或key删除对于的缓存。
主要参数:
allEntries : 布尔类型 表示是否需要清除缓存中的所有元素。
key: 需要删除的缓存的key

当我们在更新数据库的数据时,要使用@CacheEvict,需要把redis的缓存清空,否则查询的数据就是redis缓存中的数据,这样就会导致数据库和缓存数据不一致的问题。(页面不能及时的同步更新后的数据)。
加上@CacehEvict 就会在查询数据时发现数据时最新的,与数据库保持一致.
在这里插入图片描述

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-04-06 16:04:04  更:2022-04-06 16:05:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:00:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码