面试之Redis

Nosql概述

NoSQL = Not Only SQL
泛指非关系型数据库

Redis数据类型

5大基本数据类型

  • String
  • Hash
  • List(linkedlist)有序、元素可重复、查找一般
  • Set(hashset)无序、元素不可重复、查找快
  • ZSet (sortedset)可排序、元素不重复、查询速度快

新增数据类型

  • Bitmaps
  • HyperLogLog
  • Geospatial

Redis事务

  • 事务本质:一组命令的集合!一个事务中的所有命令都会被序列化,在事务执行过程中,会按照顺序执行
  • 一次性、顺序性、排他性
  • Redis事务没有隔离级别的概念
  • Redis单条命令保证原子性,但是事务不保证原子性
  • 开启事务(multi)命令入队(…)执行事务(exec)
  • 编译型异常(代码有问题),事务中所有的命令都不会执行
  • 运行时异常,出错的命令不会运行,其它命令正常运行

监控

悲观锁:很悲观,认为什么时候都会出问题,无论做什么都会加锁
乐观锁:很乐观,认为什么时候都不会出现问题,所以不会上锁!更新数据的时候去判断一下,在此期间是否有人修改过这个数据,获取version,更新时比较version
Redis使用watch实现乐观锁操作,watch监控某个对象,对该对象进行事务操作,这些操作还未执行前,其他进程对监控的对象进行更改,这样会导致事务操作执行失败。如果失败,使用先使用unwatch解除监控,然后重新watch对象,获取最新的值。

Java使用Redis

  • Jedis
  • spring-data-redis(redisTemplate)

Redis持久化

  • RDB:在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是Snapshot快照,它恢复时将快照文件直接读到内存里。Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。缺点是最后一次持久化后的数据可能丢失。
  • AOF:将所有的命令都记录下来,history,恢复的时候重新执行一遍,以日志的形式来记录每一个写操作,将redis执行过的所有的指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据

Redis发布订阅

  • 订阅:SUBSCRIBE channel_name
  • 发布:PUBLISH channel_name message

Redis主从复制

  • 概念:将一台redis服务器的数据,复制到其他的redis服务器。前者称为主节点(master/leader),后者称为从节点(slave/follower);数据的复制是单向的,只由主节点到从节点。
  • 作用:
    - 数据冗余:实现数据的热备份,是持久化之外的一种数据冗余方式
    - 故障恢复:当主节点出现问题,可以由从节点提供服务,实现快速的故障恢复
    - 负载均衡
    - 高可用基石
    主从复制,读写分离,减少服务器的压力,最低配置一主二从
  • 从机配置:slaveof host port
  • 哨兵模式:sentinel ,主机宕机,从从机选一个

缓存穿透

概念:用户想查询一个数据,发现redis内存数据库没有,也就是缓存没有命中,于是向持久层数据库查询。发现也没有,于是本次查询失败。当用户很多时,缓存都未命中,都去请求数据库,这就叫缓存穿透。
解决方案:
布隆过滤器:对所有可能查询的参数以hash形式存储,在控制层先进行校验,不符合则丢弃,从而避免了对底层存储系统的查询压力
缓存空对象:当存储层不命中后,即使返回的空对象也将其缓存起来,同时设置一个过期时间,之后再访问这个数据将会从缓存中获取,保护了后端数据
**缓存击穿:**当某个key在过期的瞬间,有大量的请求并发访问,这类数据一般是热点数据,由于缓存过期,会同时访问数据库来查询最新数据,并且回写缓存,会导致数据库瞬间压力过大。

缓存雪崩

概念:某一个时间段,缓存集中过期失效。redis宕机
解决方案:redis高可用,限流降级,数据预热

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值