Redis的面试基础知识详解

举报
辰兮 发表于 2022/03/22 23:15:35 2022/03/22
【摘要】 文章目录 一.redis的概述二.Redis有哪些数据类型三.redis的持久化方案RDB和AOF四.redis的优点五.单线程的redis为什么这么快?六.Memcache与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

文章来源: blessing.blog.csdn.net,作者:辰兮要努力,版权归原作者所有,如需转载,请联系作者。

原文链接:blessing.blog.csdn.net/article/details/104537579

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。