1.如果在setnx之后执行expire之前进程意外crash或者要重启维护了,那会怎么样?

  1. set指令有非常复杂的参数,这个应该是可以同时setnx和expire合成一条指令来用的!

2.使用过Redis分布式锁吗?它是如何实现的?

  1. 先拿setnx来争抢锁,抢到之后,再用expire给锁加一个过期时间防止锁忘记了释放。

3.使用过Redis做异步队列吗?是怎么用的,有什么缺点?

  1. 一般会用list结构作为消息队列,rpush生产消息,lpop消费消息。当lpop没有消息的时候,要适当sleep一会再重试。在消费者下线的情况下,生产的消息会丢失,得使用专业的消息队列如RabbitMQ等。

4.能不能生产一次消费多次?

  1. 使用pub/sub主题订阅者模式,可以实现1:N的消息队列。

5.什么是缓存穿透?如何避免?什么是缓存雪崩?如何避免?

  缓存穿透:

    一般的缓存系统,都是按照key去缓存查询,如果不存在对应的value,就应该去后端系统查找(比如:DB)。一些恶意的请求会故意查询不存在的key,请求量很大,就会对后端系统造成很大的压力。叫做恶意穿透。

  如何避免:

  1. 对查询为空的结果可以进行缓存,缓存时间设置短一些,或者该key对应的数据insert了之后清理缓存。
  2. 对一定不存在的key进行过滤。可以把所有的可能存在的key放到一个大的Bitmap中,查询时通过该bitmap过滤。

  缓存雪崩:

    当缓存服务器重启或者大量缓存集中在某一个时间段失效,这样在失效的时候,会给后端系统造成很大的压力,导致系统奔溃。

  如何避免?

  1. 在缓存失效后,通过加锁或者队列来控制读数据库写缓存的线程数量。比如对某个key只允许一个线程读数据和写缓存,其他线程等待。
  2. 做二级缓存,A1为原始缓存,A2为拷贝缓存,A1失效时,可以访问A2,A1缓存失效时间设置为短期,A2设置为长期。
  3. 不同的key,设置不同的过期时间,让缓存的失效时间尽量均匀。

6.什么是Redis持久化,Redis持久化的方式有几种?优缺点是什么?

  1. 持久化就是把内存的数据放到磁盘中去,防止服务器宕机导致内存数据丢失。
  2. Redis提供了2中持久化方式:RDB(默认)和AOF

    RDB:把缓存中数据保存到磁盘中。

    AOF写入保存:

    WRITE:根据条件,将aof_buf中的缓存写入到AOF文件中

    SAVE:根据条件,调用 fsync 或者 fdatasync 函数,将AOF文件保存到磁盘中。

    比较:

    1. aof文件比rdb更新频率高,优先使用aof还原数据。
    2. aof比rdb更安全也更大
    3. rdb性能比aof好
    4. 如果两个都配了优先加载AOF

7.Redis 有哪些架构模式?讲讲各自的特点

  1. 客户端到服务端直接缓存,特点:简单,问题:1、内存容量有限,2、处理能力有限,3、无法高可用
  2. 从主服务器复制到从服务器,比较复杂一点:

   Redis的复制(replication)功能允许用户根据一个Redis服务器来创建任意多个该服务器的复制品,其中被复制的服务器为主服务器(master),而通过复制创建出来的服务器复制品则为从服务器(slave)。只要主从服务器之间的网络链接正常,主从服务器两者会具有相同的数据,主服务器就会一直将发生在自己身上的数据更新同步到从服务器,从而一直保证主从服务器数据相同。


8.Redis的数据类型有哪些?

  1. Set、List、String、Sorted Set、Hashes

9.Redis主要消耗什么物理资源

  1. 内存

10.Redis官方为什么不提供Windows版本?

  1. 因为目前Linux版本已经相当稳定,而且用户量也很大,无需开发windows版本,反而会带来版本兼容性等问题。

11.一个字符串类型的值能存储最大容量是多少?

  1. 512M

12.怎么理解Redis事务?

  1. 事务是一个单独的隔离操作:事务中所有命令都会序列化,按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。
  2. 事务是一个原子操作:事务中的命令要么全部执行,要么全部都不执行。

【面试】Redis的更多相关文章

  1. 【面试 redis】【第十二篇】redis的相关面试问题

    redis的相关面试问题 redis教程:http://www.redis.net.cn/tutorial/3501.html ==================================== ...

  2. 突破Java面试-Redis集群模式的原理

    1 面试题 Redis集群模式的工作原理说一下?在集群模式下,key是如何寻址的?寻址都有哪些算法?了解一致性hash吗? 2 考点分析 Redis不断在发展-Redis cluster集群模式,可以 ...

  3. 搞定redis面试--Redis的过期策略?手写一个LRU?

    1 面试题 Redis的过期策略都有哪些?内存淘汰机制都有哪些?手写一下LRU代码实现? 2 考点分析 1)我往redis里写的数据怎么没了? 我们生产环境的redis怎么经常会丢掉一些数据?写进去了 ...

  4. 2020PHP面试-Redis篇

    一.Redis 数据类型 1. string 字符型. 2.hash hash  结构化的对象.  key不可重复 3.list 队列  lpush rpop  lpop rpush 4. set 集 ...

  5. 害...原来阿里面试Redis最常问的是它呀

    一提到Redis缓存,我们不得不了解的三个问题就是:缓存雪崩.缓存击穿和缓存穿透.这三个问题一旦发生,会导致大量的请求直接请求到数据库层.如果并发压力大,就会导致数据库崩溃.那p0级的故障是没跑了. ...

  6. 阿里面试Redis常考问题

    一提到Redis缓存,我们不得不了解的三个问题就是:缓存雪崩.缓存击穿和缓存穿透.这三个问题一旦发生,会导致大量的请求直接请求到数据库层.如果并发压力大,就会导致数据库崩溃.那p0级的故障是没跑了. ...

  7. LinkedHashMap源码解读

    1. 前言 还是从面试中来,到面试中去.面试官在面试 Redis 的时候经常会问到,Redis 的 LRU 是如何实现的?如果让你实现 LRU 算法,你会怎么实现呢?除了用现有的结构 LinkedHa ...

  8. Redis的那些最常见面试问题

    随笔:经过长达一周的奔波和面试,电话面试,回首今天终于成功的入职了,总共面试了大概10家公司,包括阿里,京东,IBM等等,京东技术过了,学历因为非统招就被pass了,阿里面了2次电话面试就没下文了,估 ...

  9. Redis和MongoDB的区别(面试受用)

    项目中用的是MongoDB,但是为什么用其实当时选型的时候也没有太多考虑,只是认为数据量比较大,所以采用MongoDB. 最近又想起为什么用MongoDB,就查阅一下,汇总汇总: 之前也用过redis ...

  10. 【原创】那些年用过的Redis集群架构(含面试解析)

    引言 今天是2019年2月12号,也就是大年初八,我接到了高中同学刘有码面试失利的消息. 他面试的时候,身份是某知名公司的小码农一枚,却因为不懂自己生产上Redis是如何部署的,导致面试失败! 人间惨 ...

随机推荐

  1. 关于mysql installer 的安装和环境变量配置

    MySQL针对不同的用户提供了2中不同的版本: MySQL Community Server:社区版.由MySQL开源社区开发者和爱好者提供技术支持,对开发者开放源代码并提供免费下载. MySQL E ...

  2. js之语句(表达式语句,复合语句,声明语句)

    语句就是JavaScript整句或命令,以分号结束,用来执行以使某件事发生.下面将介绍三种语句:表达式语句,复合语句,声明语句. 一.表达式语句 表达式语句是javascript中最简单的语句 < ...

  3. Vue中的key到底有什么用?

    key是为Vue中的vnode标记的唯一id,通过这个key,我们的diff操作可以更准确.更快速 diff算法的过程中,先会进行新旧节点的首尾交叉对比,当无法匹配的时候会用新节点的key与旧节点进行 ...

  4. 转载Linux常用命令

    转自:https://blog.csdn.net/deng_xj/article/details/88803148 Linux常用shell命令 [root@dengxj]#各项含义[用户名@计算机名 ...

  5. 7.Struts2拦截器及源码分析

    1.Struts2架构图 2.Struts2 执行过程分析 1.首先,因为使用 struts2 框架,请求被Struts2Filter 拦截 2.Struts2Filter  调用 DisPatche ...

  6. web录音——上传录音文件

    捕获麦克风 一.  前言    公司项目需要实现web录音,刚刚好接手此功能,由于之前未接触过,在网上找了些资料做对比 )   https://www.cnblogs.com/starcrm/p/51 ...

  7. JavaMaven【七、插件使用】

    配置pom.xml 配置在那个周期的那个阶段执行该插件的功能 上图是配置了使用插件source3.0.1,该插件的功能是打包源码 并配置了在package阶段后执行打包源码的操作jar-no-fork ...

  8. svn+jenkins自动部署

    需求:项目经理想要将原型图修改完后直接发布 前置条件: 已经有了svn服务器,并正常使用 已经有了jenkins服务器,之前搭建的gitlab+jenkins, 如需搭建jenkins,参考 http ...

  9. mac下MySQL出现乱码的解决方法

    之前写过一篇Linux下MySQL出现乱码的解决方法,本文说下mac下的处理,其实处理方式是一样的,我电脑的mysql版本是5.7.26-log 网上很多帖子都说去/usr/local/mysql/s ...

  10. Hive的视图和索引(九)

    Hive的视图和索引 1.Hive Lateral View 1.基本介绍 ​ Lateral View用于和UDTF函数(explode.split)结合来使用. ​ 首先通过UDTF函数拆分成多行 ...