菜鸟刷面试题(三、Redis篇)
目录:
- redis是什么?都有哪些使用场景?
- redis有哪些功能?
- redis和memecache有什么区别?
- redis为什么是单线程的?
- 什么是缓存穿透?怎么解决?
- redis支持的数据类型有哪些?
- redis支持的java客户端都有哪些?
- jedis和 redisson 有哪些区别?
- 怎么保证缓存和数据库数据的一致性?
- redis持久化有几种方式?
- redis怎么实现分布式锁?
- redis分布式锁有什么缺陷?
- redis如何做内存优化?
- redis淘汰策略有哪些?
redis是什么?都有哪些使用场景?
1、Redis是一款开源的、基于C语言编写的key value数据库,其数据读写基于内存,性能高。
2、Redis使用场景很多:
- 可作用于底层DB的缓存层
- 分布式锁
- 使用list做热点数据排行
- GEO做地理位置统计
- 等等。。。。。。
redis有哪些功能?
数据持久化、事务、发布订阅消息、主从复制、集群、哨兵等等。
redis和memecache有什么区别?
memecache目前仅支持k/v类型的数据存储,而redis支持的存储方式更加丰富。
memecache挂掉了数据就没了,redis有持久化策略。
。。。。。。
redis为什么是单线程的?
我们首先要知道Redis是一个高效的key/value数据库,且采用内存读写数据。
那么既然是内存读写数据的话单线程的效率肯定是最高的,因为多线程的本质就是CPU模拟出来多个线程的情况,这种模拟出来的线程势必会有上下文切换的消耗,所以对于内存系统来说没有上下文的切换就是最高效的。
参考:https://blog.csdn.net/world6/article/details/79381682
什么是缓存穿透?怎么解决?
1、什么是缓存穿透:缓存穿透查询一个根本不存在的数据,导致每次请求都不会命中缓存,请求都进到DB,导致DB压力过大而降低DB吞吐量,严重时可能会让DB宕机;一般是自身业务代码或数据出现问题,或是一个恶意攻击、爬虫等造成的。
2、怎么解决:
- 缓存null值,将那些不可能存在的数据也做一层缓存,如缓存值为null;这样便不会将这些数据命中到DB层了。
- 布隆过滤器
redis支持的数据类型有哪些?
String、List、Hash、Set、Sorted Set。
可以再细说下编码以及这些数据类型的特性等等。
redis支持的java客户端都有哪些?
Jedis、Redisson、lettuce等等,官方推荐使用Redisson。
jedis和redisson有哪些区别?
简介:
- Jedis:redis的java客户端的实现,提供了比较全面的redis命令支持。
- Redisson:实现了分布式和可扩展的Java数据结构。
区别:
- 封装:jedis只是简单封装了redis的api库,它的方法和redis命令类似;redisson不仅封装了redis命令,还封装了更多的数据结构以及锁等功能。
- 灵活性:jedis对于redisson来说更加灵活。
怎么保证缓存和数据库数据的一致性?
1、读数据:先读缓存,后读数据库。
2、写数据:先写数据库,后写缓存。
3、每次更新数据都要把缓存清掉。
4、缓存设置过期时间,保持与数据库的最终一致性。
参考:https://blog.csdn.net/cwb521sxm/article/details/96182882
redis持久化有几种方式?
见:https://www.cnblogs.com/bzfsdr/p/12043669.html Redis持久化
redis怎么实现分布式锁?
1、手动实现:如果key存在则返回已锁,不存在则加锁,还可以设置锁的时间,并需要及时解锁。
2、使用redisson api实现
redis分布式锁有什么缺陷?
1、可能会造成死锁:
客户端A获取锁成功了,但释放锁的时候崩溃了,导致锁依然存在。我们可以通过设置过期时间来解决这一问题。
2、错误的获取锁:
上面说到可以设置过期时间来预防死锁,但若客户端A执行之间过长或因为某些原因导致客户端A阻塞了,这是锁可能已经过期了,然后客户端B又拿到了锁。
此时客户端A又恢复了过来,这样便会有两个线程执行操作,导致最终的数据不一致。
参考:https://blog.csdn.net/twt936457991/article/details/90181855
redis如何做内存优化?
1、设置内存上限:maxmemory
2、可根据实际情况调整内存淘汰策略
3、压缩键值对的长度
4、尽可能的使用hash结构,减少key的数量(对ziplist编码的妙用)
redis淘汰策略有哪些?
见:https://www.cnblogs.com/bzfsdr/p/12043669.html 缓存设计第a节
菜鸟刷面试题(三、Redis篇)的更多相关文章
- 菜鸟刷面试题(四、Spring/Spring MVC/Spring Boot/Spring Cloud篇)
目录: 为什么要使用 spring? 解释一下什么是 aop? 解释一下什么是 ioc? spring 有哪些主要模块? spring 常用的注入方式有哪些? spring 中的 bean 是线程安全 ...
- 菜鸟刷面试题(二、RabbitMQ篇)
目录: rabbitmq 的使用场景有哪些? rabbitmq 有哪些重要的角色? rabbitmq 有哪些重要的组件? rabbitmq 中 vhost 的作用是什么? rabbitmq 的消息是怎 ...
- 菜鸟刷面试题(一、Java基础篇)
目录: JDK 和 JRE 有什么区别? == 和 equals 的区别是什么? 两个对象的 hashCode()相同,则 equals()也一定为 true,对吗? final 在 java 中有什 ...
- 菜鸟刷面试题(五、Java容器篇)
目录: java 容器都有哪些? Collection 和 Collections 有什么区别? List.Set.Map 之间的区别是什么? HashMap 和 Hashtable 有什么区别? 如 ...
- Java面试题整理---Redis篇
1.redis支持五种数据结构类型? 2.redis内部结构? 3.redis持久化机制? 4.redis集群方案与实现? 5.redis为什么是单线程的? 6.redis常见回收 ...
- Java面试题(Redis篇)
Redis 179.redis 是什么?都有哪些使用场景? Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API. ...
- Python自动化测试面试题-Redis篇
目录 Python自动化测试面试题-经验篇 Python自动化测试面试题-用例设计篇 Python自动化测试面试题-Linux篇 Python自动化测试面试题-MySQL篇 Python自动化测试面试 ...
- 《【面试突击】— Redis篇》-- Redis哨兵原理及持久化机制
能坚持别人不能坚持的,才能拥有别人未曾拥有的.关注编程大道公众号,让我们一同坚持心中所想,一起成长!! <[面试突击]— Redis篇>-- Redis哨兵原理及持久化机制 在这个系列里, ...
- 《【面试突击】— Redis篇》--Redis都有哪些数据类型?分别在哪些场景下使用比较合适?
能坚持别人不能坚持的,才能拥有别人不能拥有的.关注编程大道公众号,让我们一同坚持心中所想,一起成长!! <[面试突击]— Redis篇>--Redis都有哪些数据类型?分别在哪些场景下使用 ...
随机推荐
- iSensor APP 之 摄像头调试 OV9655
iSensor APP 之 摄像头调试 OV9655 iSensor app 非常适合调试各种摄像头,已测试通过的sensor有: l OV7670.OV7725.OV9650.OV9655.OV ...
- Linux---centos7.0安装、配置
参考:https://blog.csdn.net/qq_37057095/article/details/81240450
- python爬虫--图片懒加载
图片懒加载 是一种反爬机制,图片懒加载是一种网页优化技术.图片作为一种网络资源,在被请求时也与普通静态资源一样,将占用网络资源,而一次性将整个页面的所有图片加载完,将大大增加页面的首屏加载时间.为了解 ...
- NodeJS4-7静态资源服务器实战_缓存
浏览器发出一个请求,服务器解析出响应的结果返回给浏览器. 缓存是怎么工作的? 用户发起请求,浏览器检查本地是否存在缓存,如果第一次请求没有缓存,那就向服务器发起请求,服务器协商缓存的内容并且返回响应, ...
- MySQL高级查询之索引创建、删除、增加、修改、慢sql、explain解释sql
day04数据库 昨日知识点回顾 1.单表操作 1.单表的操作 条件查询的优先级别: where > group by >having > order by > limit; ...
- spf13-vim安装成功
之前安装好像都没有出现这个画面,说明我安装得不完整吧!有一个html括号匹配的插件要求输入username和password,不知所以然,没安装上,其他应该一切正常.纪念一个!
- dev gridcontrol 行号
/// <summary> /// GridView 显示行号 设置行号列的宽度 /// </summary> /// <param name="gv" ...
- linux中文件压缩介绍
原文内容来自于LZ(楼主)的印象笔记,如出现排版异常或图片丢失等问题,可查看当前链接:https://app.yinxiang.com/shard/s17/nl/19391737/1c62bb7f-f ...
- Python文件的操作函数的使用
字符编码 二进制和字符之间的转换过程 --> 字符编码 ascii,gbk,shit,fuck 每个国家都有自己的编码方式 美国电脑内存中的编码方式为ascii ; 中国电脑内存中的编码方式为g ...
- 医院信息集成平台(ESB)数据集成建设方案
一.数据资产目录建设 依据卫生部信息化工作领导小组办公室卫生部统计信息中心2011年3月发布的<基于电子病历的医院信息平台建设技术解决方案——业务部分>. 临床服务域 包含12个二级类目: ...