栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

redis学习步骤

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

redis学习步骤

什么是Redis

redis是一个性能优良,基于内存,key-value存储数据,可以进行自动持久化的nosql数据库

nosql数据库 和 sql数据库的区别

数据结构

sql 表格nosql 其他形式 例如:key-value

事务

sql 强事务 一组操作同时成功或者同时失败

安全性高 效率低

nosql 弱事务

redis 一组操作要么都执行要么都不执行,没有回滚的概念,有些命令不支持事务

安全性低 效率高

查询性能

sql 查询性能一般

Mysql 每秒2000个查询

nosql 查询性能优秀

redis 10W

集群

Mysql 需要配置搭建集群,需要Mycat管理集群

Redis 直接有集群的默认设置,通过简单的命令就可以直接搭建集群,内置哨兵模式

哨兵模式:哨兵是一个独立的进程,时时刻刻监控每一个redis节点,如果主节点宕机了,哨兵会选择一个从节点升级为主节点

语法上的区别

sql 都支持sqlnosql 各自有各自的命令 没有统一的语法

基于内存:数据访问速度更快

key-value:该种数据结构访问性能好

自动持久化机制:

RDB 快照机制

优点

默认开启的就是RDB

备份的是数据本身,备份后数据会保存在一个 XXX.rdb文件中,可以很方便的进行数据的迁移

整体来说,RDB的备份频率不高,所以总体来说RDB性能更好

5分钟次 15分钟 可以自定义RDB的保存频率

缺点

单次备份因为要备份整个数据库 所以速度慢 不能频繁进行RDB数据备份

AOF 日志增量

优点:

需要配置开启,Redis重启之后会读取AOF中的数据

每次持久化都是将操作命令追加AOF文件中,所以单次命令写入比较快

可以灵活选择持久化的频率,每秒持久化一次或者每次命令都持久化

选择每次命令都持久化可以保证数据绝对不丢失

缺点:

如果选择了每次命令都持久化,性能会很差随着时间的增加,AOF文件会越来越大,解决方法:日志重做

RDB 转 AOF 有bug

问题:数据丢失

解决:热切换

    redis运行时 通过命令开启AOF 此时会在本地生成AOF文件修改配置文件 开启AOF的配置重启redis 此时Redis会读取AOF中的数据

redis的数据类型

string

数据结构图示

常见命令

应用场景

String 【缓存】数字 【原子性自增】【点赞功能】二进制 【缓存】

hash

数据结构图示

命令

作用:

缓存

list

数据结构图示

作用:队列

set

数据结构图示

作用:交集 可能认识的人

zset

数据结构图示

作用:排序 排行榜

key的过期时间

应用场景

验证码失效过期缓存自动过期

基本语法

expire

ttl

过期策略【了解】

定期删除 概念

惰性删除 概念

内存淘汰 概念

如果内存不够了怎么办?删除,那么删除谁?内存淘汰机制决定的就是要删除谁,一般都是删除最近最少使用的key 或者 从过期key中删除最近最少使用的key 或者 从过期key中挑选将要过期的key

实战【掌握】

Java操作Redis的API讲解

Jedis

Jedis对象相当于数据库连接对象,用来连接Redis

Jedis连接池【银行】

对象的序列化和反序列化

JDK序列化

Json序列化

糊涂工具类

RedisTemplate

Spring 集成

spring.xml中的配置

连接池参数

连接工厂创建

RedisTemplate

在 RedisTemplate 中修改序列化规则

SpringBoot

配置简单 host就可以

想要修改 序列化规则 需要通过配置类 重建创建RedisTemplate对象

对象名字 必须是 redisTemplate

AOP实现Redis缓存

    缓存数据库数据一致性问题

      失效模式双写模式

    失效模式基本思路

      读的时候
        先读取缓存缓存没有 读取数据库 重建缓存缓存中有 直接返回缓存中的数据
      修改的时候
        先删除缓存在修改数据库

    AOP实现的思路

      缓存添加的AOP

        增强

          先读取缓存缓存没有 读取数据库 重建缓存缓存中有 直接返回缓存中的数据

        增强类型

        环绕增强

        切入点

        切注解 更加灵活

      缓存删除的AOP

        增强

        删除缓存

        增强类型

        前置

        切入点

        切注解 更加灵活

      redis数据类型的选择 hash

        key 是什么 类名

        hashkey 是什么 方法名+参数

    代码实现流程

      先定义注解

      元注解

      @Target 定义位置

      @Retention 定义生命周期

        删除缓存的注解添加缓存的注解

      写切面类【代码写熟】

      怎么获取key 通过连接点对象 反射获取(Spring定义好的API)

      怎么获取hashKey 通过连接点对象 反射获取(Spring定义好的API)

ey 是什么 方法名+参数

    代码实现流程

      先定义注解

      元注解

      @Target 定义位置

      @Retention 定义生命周期

        删除缓存的注解添加缓存的注解

      写切面类【代码写熟】

      怎么获取key 通过连接点对象 反射获取(Spring定义好的API)

      怎么获取hashKey 通过连接点对象 反射获取(Spring定义好的API)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/716262.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号