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较高
  3. 无法发挥出多核CPU的性能,不过可以通过在单机开多个Redis实例来完善。

4.Redis 有哪些功能?

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

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

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

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

Redis 支持的数据类型:String(字符串),list(列表),hash(字典),set(集合),zset(有序集合)
在这里插入图片描述
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. 定期删除:每隔一段时间,删除过期键。
    被动删除:
    惰性删除:在取出键的时候检查是否过期;有些键不被使用,永远无法删除。

18.Redis读写速率是多少?

Redis读的速度是110000次/s
写的速度是81000次/s

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘德华一不小心就打代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值