2020年高频 redis面试真题17道(含答案和解析)

本文详细介绍了Redis的基础知识,包括其作为内存数据存储的特点、数据类型、单进程单线程模型、虚拟内存、分布式、读写分离、数据分片策略等。还探讨了Redis与Memcached的区别、性能问题及解决方案,以及Redis在热点数据存储、数据备份和发布/订阅场景中的应用。
摘要由CSDN通过智能技术生成

1 什么是 redis?

Redis 是一个基于内存的高性能 key-value 数据库。 (有空再补充,有理解错误 或不足欢迎指正)
 

2 Reids 的特点

Redis 本质上是一个 Key-Value 类型的内存数据库,很像 memcached,整个数 据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据 flush 到硬 盘上进行保存。因为是纯内存操作,Redis 的性能非常出色,每秒可以处理超过 10 万次读写操作,是已知性能最快的 Key-Value DB。
 
Redis 的出色之处不仅仅是性能,Redis 最大的魅力是支持保存多种数据结构,此 外单个 value 的最大限制是 1GB,不像 memcached 只能保存 1MB 的数据,因 此 Redis 可以用来实现很多有用的功能,比方说用他的 List 来做 FIFO 双向链表,
实现一个轻量级的高性 能消息队列服务,用他的 Set 可以做高性能的 tag 系统等 等。另外 Redis 也可以对存入的 Key-Value 设置 expire 时间,因此也可以被当 作一 个功能加强版的 memcached 来用。
 
Redis 的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性 能读写,因此 Redis 适合的场景主要局限在较小数据量的高性能操作和运算上。

 

3 Redis 支持的数据类型

  • Redis 通过 Key-Value 的单值不同类型来区分, 以下是支持的类型:
  • Strings
  • Lists
  • Sets 求交集、并集
  • Sorted Set
  • hashes

4 为什么 redis 需要把所有数据放到内存中?

Redis 为了达到最快的读写速度将数据都读到内存中,并通过异步的方式将数据 写入磁盘。所以 redis 具有快速和数据持久化的特征。如果不将数据放在内存中, 磁盘 I/O 速度为严重影响 redis 的性能。在内存越来越便宜的今天,redis 将会越 来越受欢迎。
 
如果设置了最大使用的内存,则数据已有记录数达到内存限值后不能继续插入新值。
 

5 Redis 是单进程单线程的

redis 利用队列技术将并发访问变为串行访问,消除了传统数据库串行控制的开销

6 虚拟内存

当你的 key 很小而 value 很大时,使用 VM 的效果会比较好.因为这样节约的内存比较大.
当你的 key 不小时,可以考虑使用一些非常方法将很大的 key 变成很大的 value, 比如你可以考虑将 key,value 组合成一个新的value.
 
vm-max-threads 这个参数,可以设置访问 swap 文件的线程数,设置最好不要超过 机器的核数,如果设置为 0,那么所有对 swap 文件的操作都是串行的.可能会造成比 较长时间的延迟,但是对数据完整性有很好的保证.
 
自己测试的时候发现用虚拟内存性能也不错。如果数据量很大,可以考虑分布式 或者其他数据库
 

7 分布式

redis 支持主从的模式。原则:Master 会将数据同步到
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值