目录:

  • 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篇)的更多相关文章

  1. 菜鸟刷面试题(四、Spring/Spring MVC/Spring Boot/Spring Cloud篇)

    目录: 为什么要使用 spring? 解释一下什么是 aop? 解释一下什么是 ioc? spring 有哪些主要模块? spring 常用的注入方式有哪些? spring 中的 bean 是线程安全 ...

  2. 菜鸟刷面试题(二、RabbitMQ篇)

    目录: rabbitmq 的使用场景有哪些? rabbitmq 有哪些重要的角色? rabbitmq 有哪些重要的组件? rabbitmq 中 vhost 的作用是什么? rabbitmq 的消息是怎 ...

  3. 菜鸟刷面试题(一、Java基础篇)

    目录: JDK 和 JRE 有什么区别? == 和 equals 的区别是什么? 两个对象的 hashCode()相同,则 equals()也一定为 true,对吗? final 在 java 中有什 ...

  4. 菜鸟刷面试题(五、Java容器篇)

    目录: java 容器都有哪些? Collection 和 Collections 有什么区别? List.Set.Map 之间的区别是什么? HashMap 和 Hashtable 有什么区别? 如 ...

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

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

  6. Java面试题(Redis篇)

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

  7. Python自动化测试面试题-Redis篇

    目录 Python自动化测试面试题-经验篇 Python自动化测试面试题-用例设计篇 Python自动化测试面试题-Linux篇 Python自动化测试面试题-MySQL篇 Python自动化测试面试 ...

  8. 《【面试突击】— Redis篇》-- Redis哨兵原理及持久化机制

    能坚持别人不能坚持的,才能拥有别人未曾拥有的.关注编程大道公众号,让我们一同坚持心中所想,一起成长!! <[面试突击]— Redis篇>-- Redis哨兵原理及持久化机制 在这个系列里, ...

  9. 《【面试突击】— Redis篇》--Redis都有哪些数据类型?分别在哪些场景下使用比较合适?

    能坚持别人不能坚持的,才能拥有别人不能拥有的.关注编程大道公众号,让我们一同坚持心中所想,一起成长!! <[面试突击]— Redis篇>--Redis都有哪些数据类型?分别在哪些场景下使用 ...

随机推荐

  1. JS四种判断数据类型的方法:typeof、instanceof、constructor、Object.prototype.toString.call()

    1.typeof 1 console.log(typeof ""); //string 2 console.log(typeof 1); //number 3 console.lo ...

  2. eclipse没有打断点,项目确仍然要进入断点的问题。

    eclipse没有打断点,却仍然每次debug项目启动时都进入一个断点,很烦人,经在网上查阅发现是勾选了下图中红框中所示的几个选项,把这几项去掉之后就自动不进入断点页面了,经分析这几个选项的大概意思是 ...

  3. 多个DataTable的合并成一个新表

    多个DataTable的合并成一个新表 参考:https://www.cnblogs.com/JuneZhang/archive/2011/12/11/2284243.html

  4. JBPM4常用表结构及入门流程

    JBPM4 常用表结构 第一部分:表结构说明 Jbpm4 共有18张表,如下,其中红色的表为经常使用的表   一:资源库与运行时表结构 1.  JBPM4_DEPLOYMENT 流程定义表 2.  J ...

  5. 千呼万唤始出来——uFUN开发板2.0开箱评测

    前言 今年3月,我参与了面包板社区组织的第一批uFUN开发板评测活动,并有幸能获得试用机会,那是我第一次了解到uFUN这个项目及背后的故事,4月份,uFUN 2.0版本来了,收到了张工送的一块样板,后 ...

  6. python:json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes问题解决

    有如下一个文件,内容如下 { "test1": "/root/test/test1.template", "test2": "/r ...

  7. NetCore MemoryCache使用

    引用类库 1.Install-Package Microsoft.Extensions.Caching.Memory MemoryCacheOptions 缓存配置 1.ExpirationScanF ...

  8. SVN中怎样忽略当前文件不提交

    场景 在使用SVN进行版本管理时,有时一些自动生成的文件比如证书等,在每台电脑上都会不同,如果将其提交,则会冲突. 怎样将指定的文件或者指定文件后缀的文件忽略提交. 注: 博客主页: https:// ...

  9. Zabbix Server 3.2

    软件环境 Centos7.3 LAMP Zabbix 3.2  1. Installing repository configuration package Install the repositor ...

  10. CTF KFIOFan: 2 Vulnhub Walkthorugh

    主机扫描: ╰─ nmap -p- -A 10.10.202.152 Starting Nmap 7.70 ( https://nmap.org ) at 2019-08-29 16:55 CSTNm ...