Redis基本概念

Redis基本概念

1. 什么是redis?

Redis 是一个使用 C 语言写成的,开源、基于内存、可选持久性的、非关系型,key-value数据库

2.Redis有什么优点?

  1. 速度快:因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)
  2. 支持数据类型丰富:有字符串string,字典hash,列表list,集合set,有序集合zset
  3. 支持事务redis对事务是部分支持的,如果是在入队时报错,那么都不会执行;在非入队时报错,那么成功的就会成功执行。
    redis监控:锁的介绍
  4. 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除。

3.Redis有什么缺点?

  1. 存储受内存大小限制;
  2. 持久化时占用cpu较高

4.Redis 有哪些功能?

  1. 数据缓冲功能
  2. 分布式锁的功能
  3. 支持事务
  4. 支持消息队列

5.redis 为什么是单线程的?

因为 cpu 不是 Redis 的瓶颈,Redis 瓶颈最有可能是机器内存或者网络带宽。单线程容易实现,而且 cpu 又不会成为瓶颈, 就顺理成章采用单线程方案了。

6.redis 支持的数据类型有哪些?

Redis 支持的数据类型:String(字符串),list(列表),hash(字典),set(集合),zset(有序集合)
在这里插入图片描述

7.redis 支持的 java客户端都有哪些?

支持 java客户端有 Redisson,jedis,lettuce等。

8.jedis 和 redisson 有哪些区别?

  1. jedis:提供了比较全面的 Redis 命令的支持。
  2. Redisson:实现了分布式和可扩展的 java数据结构,与 jedis 相比 Redisson 的功能相对简单,不支持排序,事务,管道,分区等 Redis 特性。

9.怎么保证缓存和数据库的一致性?

  1. 合理设置缓存的过期时间。
  2. 新增,更改,删除数据库操作时同步更新 Redis,可以使用事务机制来保证数据的一致性。

10.redis 持久化有几种方式?

Redis 的持久化有两种方式,或者说有两种策略:

  1. RDB(Redis Database):指定的时间间隔能对你的数据进行快照存储。
  2. AOF (Append Only File):每收到一个写命令都通过wirte函数追加到文件中。

11.redis 怎么实现分布式锁?

Redis 分布式锁其实就是在系统里面占一个“坑”,其他程序也要占“坑”的时候,占用成功了就可以继续执行,失败了就只能放弃或者稍后重试。

  1. 使用 setnx(set if not exists) 指令来争抢锁,再用expire加一个过期时间,防止忘记释放锁;
  2. 如果在执行setnx之后,expire之前发生异常,就会死锁;可以将setnx和expire合成一条指令;

12.redis 分布式锁有什么缺陷?

Redis 分布式锁不能解决超时的问题,分布式锁有一个超时时间,程序的执行如果超出了锁的超时时间就会出现问题。

13.什么是缓存穿透?怎么解决?

指查询一个一定不存在的数据,由于缓存找不到是时需要从数据库查询,查不到这个数据则不写入缓存,这将导致这个不存在的数据每次都要到数据库去查询,造成缓存穿透。
解决方案:

  1. 布隆过滤:对所有可能查询的参数以hash形式存储,在控制层先进行校验,不符合则丢弃,从而避免了对底层存储系统的查询压力;
  2. 缓存空对象,设置一个过期时间:当数据库也没有找到值后不后,即使返回的空对象也将其缓存起来,同时设置一个过期时间,之后再访问这个数据将会从缓存中获取,保护了后端数据源;

14.什么是缓存雪崩?怎么解决?

是指在某一个时间段,一批数据的缓存集中过期失效。则这批数据在缓存中查不到,都只能查询数据库,对于数据库而言,就会产生周期性的压力波峰。
解决方案:
为需要缓存的数据设置不同的缓存失效时间。

15.什么是缓存击穿?怎么解决?

指某个 key 非常热点,访问非常频繁,处于集中式高并发访问的情况,当这个 key 在失效的瞬间,大量的请求就击穿了缓存,直接请求数据库,将数据库瞬间压垮。
解决方案:

  1. 使用锁,确保只有一个线程去查询数据库;
  2. 可以将热点数据设置为永远不过期;

16.redis默认有多少数据库,如何指定?

默认有16个数据库,下标默认从0开始。可以通过配置database选项指定。
可以通过select 下标 切换数据库。

17.过期键删除策略?

主动删除:

  1. 定时删除:创建定时器,在键过期的时候,删除键;占用cpu。
  2. 定期删除:每隔一段时间,删除过期键。
    被动删除:
    惰性删除:在取出键的时候检查是否过期;有些键不被使用,永远无法删除。
发布了54 篇原创文章 · 获赞 81 · 访问量 9621

猜你喜欢

转载自blog.csdn.net/weixin_40991408/article/details/104328109
今日推荐