Redis

Redis的简介

Redis(Remote Dictionary Server)是用C语言开发的一个开源的高性能键值对数据库。它的所有数据都是保存在内存中的,这也就决定了其读写速度之快,是其它硬盘保存数据的系统所无法匹敌的。
官方曾经给出过一组测试数据,50个并发执行100000个请求: 读的速度是110000次/s,写的速度是81000次/s,正是由于其有着如此高的性能,所以Redis在企业中最大的一个应用是作为缓存服务器使用,当然它也可以作为数据存储和消息中间件来用。

Redis的安装

  • 下载安装包并解压
    Reids官网地址:http://redis.io
    中文网地址:https://www.redis.net.cn/
    GitHub地址:https://github.com/MSOpenTech/redis/tags
  • 文件介绍
    在这里插入图片描述
  • 启动
    在这里插入图片描述
  • 测试连通性
    在这里插入图片描述

Redis的存储结构

Redis采用的是键值进行存储的,键只能是String类型,值支持五种数据类型:

  1. String 字符串
  2. Hash 哈希 -------- HashMap
  3. List 列表 -------- LinkedArrayList 有序,可重复的
  4. Set 集合 -------- HashSet 无序,不可重复的
  5. ZSet 有序集合 -------- LinkedHashSet 有序,不可重复的

Redis持久化的方式

什么是持久化?
  • Rides的数据都是存储在内存之中的,一旦出现宕机,数据势必会出现丢失,因此需要持久化操作,也就是将Redis存储在内存中的数据写到硬盘上进行保存。
  • 注意:虽然Redis有持久化操作,但是其本身数据依然存储在内存中,硬盘上的数据是为了安全和备份。
RDB持久化(Redis DataBase)
  • 通过配置文件来设置一些特定的条件,一旦Redis满足这些条件便会触发RDB快照机制,将Redis此时刻的数据持久化到磁盘的文件夹当中。
    在这里插入图片描述
  • 工作机制
      当RDB持久化条件满足时,Redis会创建一条子线程专门负责持久化数据(将当前内存中的数据写到磁盘),这个过程中Redis会创建一个rdb备份文件,而不是改变原有的rdb文件,当新的rdb文件备份完毕后,Redis会将旧的文件给替换为新的备份文件

AOF持久化(Append Only File)
  • 它采用日志的形式来记录Redis的每个写操作,并追加到文件中。Redis 重启的时候会根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。
  • AOF就是redis会记录每次的写操作。但是写操作一般都是有缓冲的,不会立即写入磁盘,但是可以通过调用系统的fsync()函数强制写入。根据这一特性,redis提供了一个配置来决定什么时候来调用系统的fsync()函数.
    **加粗样式
  • 工作机制:AOF就是记录每次redis的写操作,然后通过指定的条件将记录下来的操作写到磁盘文件中。

两者比较
  • RDB使用快照机制保存数据,也就是它的备份文件一定是某一时刻的完整数据,这种文件比较适合做备份使用。但是redis一旦宕机,就会丢失最后一次快照之后的数据。
  • AOF可以通过控制刷新模式最大程度的保证数据完整性,但是相同量的数据,aof的备份文件要远大于rdb,而且做数据回复的时候比rdb要慢的多。

什么是缓存穿透?如何解决?

  • 缓存穿透:
    查询一个一定不存在的数据,缓存中不存在,则会去数据库中查询,数据库中不存在则不会写入缓存,这导致每次查询都会查询数据库,使缓存失去意义。
  • 解决方式
  1. 可以使用空对象,当查询为空时,设置一个特殊的值,和真正合法数据区分开,要有一个较短的过期时间。
  2. 使用过滤器,先查缓存,缓存存在key则返回;不存在则查询过滤器,过滤器存在则说明不存在值,直接返回空,否则查询数据库。

什么是缓存雪崩?如何解决?

  • 缓存雪崩
    缓存无法使用导致请求全部到达数据库,导致数据库崩溃。
  • 解决方式
    缓存高可用,减少缓存不可用时间;数据库限流;服务降级;

什么是缓存击穿?如何解决?

  • 缓存击穿
    某个key失效时,大量的请求进入,将数据库瞬间压垮。
  • 解决方式
    使用锁,确保只有一个线程去查询数据库;手动过期,不设置过期时间,所有key手动过期。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值