文章目录
- 一、 Redis 概念理解
- 二、Redis 数据结构与指令
-
- 1. Redis 支持的数据类型
- 2. Redis 常用的命令有哪些?
- 3. 一个字符串类型的值能存储最大容量是多少?
- 4. Redis 各个数据类型最大存储量分别是多少?
- 5. 请介绍一下 Redis 的数据类型 SortedSet(zset)以及底层实现机制?
- 6. Redis 事务相关命令有哪些?
- 7. 什么是 Redis 事务?原理是什么?
- 8. Redis 事务的注意点有哪些?
- 9. Redis 为什么不支持回滚?
- 10. 请介绍一下 Redis 的 Pipeline(管道),以及使用场景
- 11. 请说明一下 Redis 的批量命令与 Pipeline 有什么不同?
- 12. 请介绍一下 Redis 的发布订阅功能
- 13. Redis 的链表数据结构的特征有哪些?
- 14. 请介绍一下 Redis 的 String 类型底层实现?
- 15. Redis 的 String 类型使用 SSD 方式实现的好处?
- 16. 设置键的生存时间和过期时间有哪些命令?
- 三 、Redis 高并发处理策略
一、 Redis 概念理解
1. 什么是 Redis?
Redis 全称为:Remote Dictionary Server(远程数据服务),是一个基于内存且支持持久化的高性能 key-value 数据库。
具备一下几个基本特征:
- 多数据类型
- 持久化机制
- 主从同步
2. Redis 的特点有哪些?
- Redis 本质上是一个 key-value 类型的数据库
- 整个数据库都是在内存中进行操作,可定期刷新到磁盘进行持久化存储
- 由于是在内存操作,读写能力非常好,每秒可以处理 10 万次读写操作
- Redis 支持多种数据结构,提供了丰富的数据类型选择
- Redis 同时支持数据备份,主从配置
- Redis 的所有操作都是原子性的
3. Memcache 与 Redis 的区别都有哪些?
- 存储方式不同:Memcache 把数据全部存在内存之中,断电后会丢失。Redis 所有数据加载在内存,但也会持久化到磁盘,保证数据的持久性。
- 支持数据类型不同:Memcache 对数据类型支持相对简单,只支持 key-value 结构。Redis 有复杂的数据类型。
- 底层模型不同:底层实现方式以及客户端通信应用协议不一样。 Redis 直接自己构建了 VM 机制。
- 运行环境不同:Redis 目前官方只支持 Linux 上运行。
4. Redis 相比 Memcached 有哪些优势?
- Memcached 所有的值均是简单的字符串,Redis 作为其替代者,支持更为丰富的数据类型
- Redis 的速度比 Memcached 快很多
- Redis 可以持久化其数据
5. 如何实现本地缓存?请描述一下你知道的方式
- 程序中定义内存数据结构来实现, 比如说定义一个成员变量Map 或者 List 均可以实现
- 使用开源的缓存框架 Ehcache,Ehcache 封装了对于内存操作的功能
- Guava Cache 是 Google 开源的工具集, 提供了缓存的边界操作工具
6. Redis 通讯协议是什么?有什么特点?
Redis 的通信协议是 Redis Serialization Protocol,简称 RESP。
有如下特性:
- 是二进制安全的
- 在 TCP 层
- 基于请求—响应的模式
二、Redis 数据结构与指令
1. Redis 支持的数据类型
- String(字符串)
- list(列表):list 是字符串列表,按照插入顺序排序。元素可以在列表的头部(左边)或者尾部(右边)进行添加。
- hash(哈希):Redis hash 是一个键值对(key-value)集合。Redis hash 是一个 String 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
- set(集合):Redis 的 set 是 String 类型的无序集合。
- zset(sorted set:有序集合):Redis zset 和 set 一样也是 String 类型元素的集合,且不允许重复的成员。不同的 zset 是每个元素都会关联一个 double 类型的分数。zset 通过这个分数来为集合中所有元素进行从小到大的排序。zset 的成员是唯一的,但分数(score)却可以重复。
2. Redis 常用的命令有哪些?
3. 一个字符串类型的值能存储最大容量是多少?
512M
4. Redis 各个数据类型最大存储量分别是多少?
- Strings 类型:一个 String 类型的 value 最大可以存储 512M
- Lists 类型:list 的元素个数最多为 2^32-1 个,也就是 4294967295 个。
- Sets 类型:元素个数最多