0
点赞
收藏
分享

微信扫一扫

redis学习步骤

niboac 2022-01-23 阅读 98
  • 什么是Redis

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

    • sql 都支持sql
    • nosql 各自有各自的命令 没有统一的语法
  • 基于内存:数据访问速度更快

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

    自动持久化机制:

    • RDB 快照机制

      • 优点

        • 默认开启的就是RDB

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

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

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

      • 缺点

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

      优点:

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

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

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

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

      缺点:

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

    RDB 转 AOF 有bug

    问题:数据丢失

    解决:热切换

    1. redis运行时 通过命令开启AOF 此时会在本地生成AOF文件
    2. 修改配置文件 开启AOF的配置
    3. 重启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缓存

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

      1. 失效模式
      2. 双写模式
    2. 失效模式基本思路

      1. 读的时候
        1. 先读取缓存
        2. 缓存没有 读取数据库 重建缓存
        3. 缓存中有 直接返回缓存中的数据
      2. 修改的时候
        1. 先删除缓存
        2. 在修改数据库
    3. AOP实现的思路

      1. 缓存添加的AOP

        1. 增强

          1. 先读取缓存
          2. 缓存没有 读取数据库 重建缓存
          3. 缓存中有 直接返回缓存中的数据
        2. 增强类型

          环绕增强

        3. 切入点

          切注解 更加灵活

      2. 缓存删除的AOP

        1. 增强

          删除缓存

        2. 增强类型

          前置

        3. 切入点

          切注解 更加灵活

      3. redis数据类型的选择 hash

        1. key 是什么 类名

        2. hashkey 是什么 方法名+参数

    4. 代码实现流程

      1. 先定义注解

        1. 删除缓存的注解
        2. 添加缓存的注解
      2. 写切面类【代码写熟】

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

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

    ey 是什么 方法名+参数

    1. 代码实现流程

      1. 先定义注解

        1. 删除缓存的注解
        2. 添加缓存的注解
      2. 写切面类【代码写熟】

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

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

    举报

    相关推荐

    0 条评论