排序
面试题:Redis 支持事务吗?如何实现?
是的,Redis 支持事务。Redis 的事务通过 MULTI、EXEC、DISCARD 和 WATCH 等命令来实现。事务可以确保一组命令按顺序执行,且在执行过程中不会被其他客户端的命令打断。 1....
面试题:为什么 Redis Zset 用跳表实现而不是红黑树?B+树?
Redis 选择跳表(Skip List)作为 Zset 的底层实现,而不是红黑树或 B+ 树,主要基于以下几个原因: 1. 性能方面的考量 查询性能: 跳表的查询、插入、删除操作的时间复杂度都是 O(log N)...
面试题:Redis 中的 Ziplist 和 Quicklist 数据结构的特点是什么?
Redis 中的 Ziplist 和 Quicklist 是两种用于优化内存使用和提高性能的数据结构,分别用于实现列表(List)和哈希表(Hash)等数据类型。以下是它们的特点和设计原理。 1.&...
面试题:Redis 源码中有哪些巧妙的设计,举几个典型的例子?
Redis 是一个高性能的键值存储系统,其源码中有许多巧妙的设计,这些设计使得 Redis 在性能、内存效率和可扩展性方面表现出色。以下是几个典型的设计示例: 1. 简单动态字符串(SDS, Simpl...
面试题:Redis 中的 Geo 数据结构是什么?
Redis 的 Geo 数据结构是一种基于 Sorted Set(有序集合)实现的地理位置存储和查询功能。它允许存储经纬度坐标,并支持计算两个位置之间的距离、查找某个位置附近的其他位置等...
面试题:Redis 的 Lua 脚本功能是什么?如何使用?
Redis Lua 脚本 是 Redis 提供的一种功能,允许用户在 Redis 服务器端执行 Lua 脚本。通过 Lua 脚本,可以将多个 Redis 命令组合成一个原子操作,从而在保证性能的同时实现复杂的业务逻辑。 1. ...
面试题:Redis Zset 的实现原理是什么?
Redis 的有序集合(Zset)是一个复合数据结构,它结合了 跳表(Skip List) 和 哈希表(Hash Table) 来实现高效的数据存储和操作。以下是 Zset 的实现原理: 1. Zset...
面试题:Redis 中原生批处理命令(MSET、MGET)与 Pipeline 的区别是什么?
在 Redis 中,MSET、MGET 等原生批处理命令和 Pipeline 都是用来优化批量操作的,但它们的实现方式和适用场景有所不同。以下是它们的区别: 1. 原生批处理命令(MSET、MGET...
面试题:Redis 的 ListPack 数据结构是什么?
ListPack 是 Redis 5.0 引入的一种紧凑的、高效的数据结构,用于替代 ziplist 在某些场景下的使用。它的设计目标是进一步优化内存使用和性能,特别是在存储小规模列表、哈希表等...
面试题:Redis 在生成 RDB 文件时如何处理请求?
在 Redis 生成 RDB 文件(即执行持久化操作)时,Redis 会使用 写时复制(Copy-On-Write, COW) 机制来处理客户端的请求,从而保证数据的一致性和服务的可用性。以下是详细的处理过程...