1.redis数据结构有哪些?

  string,list,hash,set,zset

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

  redis是基于内存的操作,cpu不是redis的瓶颈,内存大小或网络带宽才是;

3.redis为什么这么快?

  1.redis是完全基于内存操作;

  2.数据结构简单,操作也不复杂;

  3.采用单线程可以避免不必要的上下文切换和竞争条件,不存在多线程切换导致的cpu消耗,不需要考虑锁的问题,不会出现死锁而导致的cpu消耗问题;

  4.使用单线程多路I/O复用模型实现高性能的内存数据服务。

4.Redis缓存穿透,缓存雪崩?

  缓存穿透:用户查询的数据在数据库中没有,在缓存中自然也不会有。这样导致查询的时候,在缓存中没有,每次都要去数据库查询一遍,然后每次都返回空,想到与进行了两次无用的操作。

  缓存雪崩:由于原有缓存失效,新缓存未到期,原本应该访问缓存的请求全部变成访问数据库,从而对数据库,cpu和内存造成巨大压力,严重会造成数据库宕机,最终导致整个系统的崩溃。

  缓存预热:系统上线后直接将相关的缓存数据加载到缓存系统,以避免用户请求时先查询数据库,再将数据缓存的问题。

5.如何使用Redis来实现分布式锁?

  setnx

6.Redis的并发竞争问题如何解决?

  多客户端同时并发写一个key,可能本来应该先到的数据后到了,导致数据版本错了。或者是多客户端同时获取一个key,修改值之后再写回去,只要顺序错了,数据就错了。

  解决:

  1.使用独占锁,实现复杂,成本较高;

  2.使用乐观锁,成本较低,非阻塞,性能较高;本质上是假设不会进行冲突,使用redis命令watch进行构造条件。

7.Redis持久化的几种方式,优缺点是什么,怎么实现的?

  RDB快照:将当前内存中的数据持久化到硬盘,恢复时将快照文件读取到内存中。

  触发方式:1.自动触发2.手动触发

  save:save 60 1000 60s有超过1000次key值的变化则保存。该命令执行期间会阻塞Redis服务器,不能执行其它命令,直到RDB完成,对内存较大的实例会造成长时间阻塞。

  bgsave执行该命令时,Redis在后台异步执行快照操作,同时可以响应客户端请求。具体操作是Redis进程执行fork操作创建子进程,RDB过程由子进程负责,完成后自动结束。阻塞只会发生在fork阶段,一般时间很短。

  AOF:把写操作命令记录到日志中。

  比较:RDB发生宕机会丢失最后一次备份后的所有写入数据;数据比较庞大时fork()可能会非常耗时,造成服务器在数百毫秒内停止处理客户端;

8.Redis的缓存淘汰策略?

  常用的淘汰算法:

  1.FIFO:first in first out,先进先出。判断被存储的时间,离目前最远的数据优先被淘汰。

  2.LRU:least recently used,最近最少使用。判断最近被使用的时间,目前最远的数据优先被淘汰。

  3.LFU:least frequently used,最近不经常使用。在最近的一段时间内,数据被使用次数最少的,被优先淘汰。

  淘汰策略:

  1.volatile-lru:从已设置过期时间的数据集(server.db[i].expire)中挑选最近最少使用的数据淘汰

  2.volatile-ttl:从已设置过期时间的数据集中挑选将要过期的数据淘汰

  3.vovatile-random:从已设置过期时间的数据集中随即挑选数据淘汰

  4.allkeys-lru:从数据集中挑选最近最少使用的数据淘汰

  5.allkeys-randim:从数据集中随即挑选数据淘汰

  6.no-enviction(驱逐):禁止驱逐数据

9.Redis集群,高可用,原理?

  redis-cluster

10.Redis缓存分片?

11.redis队列应用场景?

11.分布式使用场景(储存session)?

Java面试题之Redis的更多相关文章

  1. Java面试题(Redis篇)

    Redis 179.redis 是什么?都有哪些使用场景? Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API. ...

  2. Java面试题(六)--Redis

    1 Redis基础篇 1.简单介绍一下Redis优点和缺点? 优点: 1.本质上是一个 Key-Value 类型的内存数据库,很像memcached 2.整个数据库统统加载在内存当中进行操作,定期通过 ...

  3. Java面试题整理---Redis篇

    1.redis支持五种数据结构类型?   2.redis内部结构?   3.redis持久化机制?   4.redis集群方案与实现?   5.redis为什么是单线程的?   6.redis常见回收 ...

  4. BATJ高级Java面试题分享:JVM+Redis+Kafka +数据库+设计模式

    话不多说,直接上面试题,来看一下你还欠缺多少? Mysql 与 Oracle 相比, Mysql 有什么优势? 简洁描述 Mysql 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别? ...

  5. Java笔试题解答和部分面试题

    面试类  银行类的问题 问题一:在多线程环境中使用HashMap会有什么问题?在什么情况下使用get()方法会产生无限循环? HashMap本身没有什么问题,有没有问题取决于你是如何使用它的.比如,你 ...

  6. 拼多多、饿了么、蚂蚁金服Java面试题大集合

    自己当初找工作时参加过众多一线互联网公司的Java研发面试,这段时间处于寒冬,然而前几天跳槽找工作,两天面了3家,已经拿了两个offer,觉得可以和大家分享下: 下面为拼多多.饿了么.蚂蚁金服.哈啰出 ...

  7. 一些常见的Java面试题 & 面试感悟

    < 前言 > 近期在面试,深感这个行业的浮躁,一些菜不辣基的弱鸡开出的工资待遇要求,超过了我.不知道他们是怎么拿到那么高的工资的,难道是他在公司有亲戚朋友吗?有后台吗?是行业热钱真的过多了 ...

  8. 10个经典的Java面试题集合

    这里有10个经典的Java面试题,也为大家列出了答案.这是Java开发人员面试经常容易遇到的问题,相信你了解和掌握之后一定会有所提高.让我们一起来看看吧. 1.Java的HashMap是如何工作的? ...

  9. 【面试必备】常见Java面试题大综合

    一.Java基础 1.Arrays.sort实现原理和Collections.sort实现原理答:Collections.sort方法底层会调用Arrays.sort方法,底层实现都是TimeSort ...

随机推荐

  1. mac 环境搭建

    安装homebrew jdk 也可以官网下载 maven 官网下载tar.gz包 也在homebrew下安装git,java,mysql.

  2. weui复选框无法传值

    //原来的反了 function changeState (ele) { if(ele.checked){ ele.setAttribute('checked','checked') console. ...

  3. asp.net mvc 使用NPOI插件导出excel

    /// <summary> /// 交易账单 导出交易列表 /// </summary> /// <returns></returns> public ...

  4. 第一篇 Flask

    第一篇 Flask     一. Python 现阶段三大主流Web框架 Django Tornado Flask 对比 1.Django 主要特点是大而全,集成了很多组件,例如: Models Ad ...

  5. Android 如何避免运行时奔溃

    奔溃问题 android运行的时候难免会有一些空指针(NullPointerException)或者下标越界(IndexOutOfBoundsException),用户使用的过程操作某一个按钮的时候, ...

  6. centos7上安装zabbix4.0

    zabbix4.0已经推出有一段时间了,针对之前版本做了很多优化配置,易用性得到提高,特别lts(long team support)长技术支持版本,官方说提供5年的稳定技术支持,在商业化运用上,是比 ...

  7. C/C++字符串使用整理

    在C语言中,字符串有多种操作与处理方法.话不多说,下面就整理一下C语言中字符串的使用整理. 1.头文件 字符串的头文件: #include<cstring> 2.输入 通常,字符串有多种输 ...

  8. vs2013 v8编译

    最新v8,只能在vs2015编译(在官网看了资料,新版本v8/chrome使用的c++11特性只能用vs2015编译) vs2015 vc需要的dll有近50个,发布不太方便,所以采用vs2013up ...

  9. [精华][推荐]CAS SSO实现单点登录框架学习源码

    1.通过下载稳定版本的方式下载cas的相关源码包,如下: 直接选择4.2.1的稳定代码即可 2.我们项目中的版本版本使用maven apereo远程库去下载 通过远程maven库下载cas-serve ...

  10. Jenkins自定义变量共享

    https://www.cnblogs.com/junneyang/p/5239480.html https://www.cnblogs.com/Rocky_/p/8317156.html https ...