你经常忽略的Redis常见面试题,精选给你整理

什么是redis
Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API的非关系型数据库 。
传统数据库遵循 ACID 规则 。而 Nosql(Not Only SQL 的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称) 一般为分布式而分布式一般遵循 CAP 定理 。
Redis支持的数据类型?
String字符串:
格式: set key value
string类型是二进制安全的 。意思是redis的string可以包含任何数据 。比如jpg图片或者序列化的对象。
string类型是Redis最基本的数据类型,一个键最大能存储512MB 。
Hash(哈希)
格式: hmset name key1 value1 key2 value2
Redis hash 是一个键值(key=>value)对集合 。
Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象 。
List(列表)
Redis 列表是简单的字符串列表,按照插入顺序排序 。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
格式: lpush name value
在 key 对应 list 的头部添加字符串元素
格式: rpush name value
在 key 对应 list 的尾部添加字符串元素
格式: lrem name index
key 对应 list 中删除 count 个和 value 相同的元素
格式: llen name
返回 key 对应 list 的长度
Set(集合)
格式: sadd name value
Redis的Set是string类型的无序集合 。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1) 。
zset(sorted set:有序集合)
格式: zadd name score value
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员 。
不同的是每个元素都会关联一个double类型的分数 。redis正是通过分数来为集合中的成员进行从小到大的排序 。
zset的成员是唯一的,但分数(score)却可以重复 。
什么是Redis持久化?
Redis有哪几种持久化方式?
优缺点是什么?
持久化就是把内存的数据写到磁盘中去,防止服务宕机了内存数据丢失 。Redis 提供了两种持久化方式:RDB 和AOF 。
RDB:
rdb是Redis DataBase缩写

你经常忽略的Redis常见面试题,精选给你整理

文章插图
功能核心函数rdbSave(生成RDB文件)和rdbLoad(从文件加载内存)两个函数
AOF:
Aof是Append-only file缩写
你经常忽略的Redis常见面试题,精选给你整理

文章插图
每当执行服务器(定时)任务或者函数时flushAppendOnlyFile 函数都会被调用,这个函数执行以下两个工作
aof写入保存:
WRITE:根据条件,将 aof_buf 中的缓存写入到 AOF 文件
SAVE:根据条件,调用 fsync 或 fdatasync 函数,将 AOF 文件保存到磁盘中 。
存储结构:
内容是redis通讯协议(RESP )格式的命令文本存储 。
比较:
1、aof文件比rdb更新频率高,优先使用aof还原数据 。
2、aof比rdb更安全也更大
3、rdb性能比aof好
4、如果两个都配了优先加载AOF
上面你有提到redis通讯协议(RESP )
能解释下什么是RESP?
有什么特点?
RESP 是redis客户端和服务端之前使用的一种通讯协议;
RESP 的特点:实现简单、快速解析、可读性好
For Simple Strings the first byte of the reply is "+" 回复
For Errors the first byte of the reply is "-" 错误
For Integers the first byte of the reply is ":" 整数
For Bulk Strings the first byte of the reply is "$" 字符串
For Arrays the first byte of the reply is "*" 数组
Redis 有哪些架构模式?讲讲各自的特点
单机版
你经常忽略的Redis常见面试题,精选给你整理

文章插图
特点:简单
问题:
1、内存容量有限 2、处理能力有限 3、无法高可用 。
主从复制
你经常忽略的Redis常见面试题,精选给你整理

文章插图
Redis 的复制(replication)功能允许用户根据一个 Redis 服务器来创建任意多个该服务器的复制品,其中被复制的服务器为主服务器(master),而通过复制创建出来的服务器复制品则为从服务器(slave) 。只要主从服务器之间的网络连接正常,主从服务器两者会具有相同的数据,主服务器就会一直将发生在自己身上的数据更新同步 给从服务器,从而一直保证主从服务器的数据相同 。
特点:
1、master/slave 角色
2、master/slave 数据相同
3、降低 master 读压力在转交从库
问题:


推荐阅读