Redis的面试基础知识详解


一.redis的概述

Redis 是一个基于内存的高性能key-value数据库。

redis是一个非关系型的数据库(not-only-sql即nosql),以键值对的方式存储数据,将数据存放在内存中,存取速度快,但是对持久化的支持不够好,所以redis一般配合关系型数据库使用,redis可以做分布式缓存,用在数据量大,高并发的情况下.redis通过很多命令进行操作,而且redis不适合保存内容大的数据.


二.Redis有哪些数据类型

  • redis有五种数据类型

在这里插入图片描述

  • 数据类型详解
数据类型 应用场景
String 最常规的 set/get 操作,Value 可以是 String 也可以是数字。一般做一些复杂的计数功能的缓存。使用场景:常规key-value缓存应用。常规计数: 微博数, 粉丝数
Hash 这里 Value 存放的是结构化的对象,比较方便的就是操作其中的某个字段。我在做单点登录的时候,就是用这种数据结构存储用户信息,以 CookieId 作为 Key,设置 30 分钟为缓存过期时间,能很好的模拟出类似 Session 的效果
List 使用List结构,我们可以轻松地实现最新消息排行等功能。List的另一个应用就是消息队列
Set 因为 Set 堆放的是一堆不重复值的集合。所以可以做全局去重的功能。例如:点赞点踩
Sorted Set Sorted Set多了一个权重参数 Score,集合中的元素能够按 Score 进行排列。可以做排行榜应用

三.redis的持久化方案RDB和AOF

Redis是一个支持持久化的内存数据库,通过持久化机制把内存中的数据同步到硬盘文件来保证数据持久化。当Redis重启后通过把硬盘文件重新加载到内存,就能达到恢复数据的目的。

1)RDB:快照形式,定期把内存中当前时刻的数据保存到磁盘。Redis默认支持的持久化方案。

速度快但是服务器断电的时候会丢失部分数据。

Redis会将数据集的快照dump到dump.rdb文件中。此外,我们也可以通过配置文件来修改Redis服务器dump快照的频率,在打开6379.conf文件之后,我们搜索save,可以看到下面的配置信息:

  • RDB持久化配置
配置信息 解释
save 900 1 在900秒(15分钟)之后,如果至少有1个key发生变化,则dump内存快照。
save 300 10 在300秒(5分钟)之后,如果至少有10个key发生变化,则dump内存快照。
save 60 10000 在60秒(1分钟)之后,如果至少有10000个key发生变化,则dump内存快照。

2)AOF:append only file。持久化以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录。

  • AOF持久化配置(在Redis的配置文件中存在三种同步方式)
配置信息 解释
appendfsync always 每次有数据修改发生时都会写入AOF文件。
appendfsync everysec 每秒钟同步一次,该策略为AOF的缺省策略。
appendfsync no 从不同步。高效但是数据不会被持久化。

3)优劣势小结

  • 性能上:相比于AOF机制,如果数据集很大,RDB的启动效率会更高。
  • 数据完整性:如果你想保证数据的高可用性,即最大限度的避免数据丢失,建议使用AOF。

四.redis的优点

读写速度快. 数据存放在内存中,数据结构类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)
支持丰富的数据类型,string,hash,list,set,sorted
支持事务,而且操作都是原子性.(原子性就是事务要么操作成功,要么失败回滚)
丰富的特性:可以用于缓存,消息队列,按key设置过期时间,到期后自动删除
支持数据持久化(将内存数据持久化到磁盘),支持AOF和RDB两种持久化方式,从而进行数据恢复操作,可以有效地防止数据丢失
支持主从(master-slave)复制来实现数据备份,主机会自动将数据同步到从机

五.单线程的redis为什么这么快?

在这里插入图片描述

六.Memcache与Redis的区别?

1)Memcache简介

  • MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统。
  • MemCaChe是一个存储键值对的HashMap。
  • 在内存中对任意的数据(比如字符串、对象等)使用key-value存储。

2)为什么要使用Memcache?

  • 主要用于动态Web应用以减轻数据库的负载。
  • 它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度。

3)Redis相比memcached有哪些优势?

  • memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型
  • redis的速度比memcached快很多
  • 存储方式 Memecache把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小。 Redis有部份存在硬盘上,redis可以持久化其数据
  • value 值大小不同:Redis 最大可以达到 1gb;memcache 只有 1mb。
  • Redis支持数据的备份,即master-slave模式的数据备份。

在这里插入图片描述
The best preparation for tomorrow is doing your best today.

2020.02.27

发布了14 篇原创文章 · 获赞 12 · 访问量 6443

猜你喜欢

转载自blog.csdn.net/weixin_45393094/article/details/104537579