面试题答案
一键面试Redis链表的结构特点
- 双端链表:每个节点都有前驱节点和后继节点的指针,这使得可以在O(1)时间复杂度内双向遍历链表。
- 表头和表尾指针:链表结构中包含指向表头和表尾节点的指针,便于快速定位链表的起始和结束位置,例如在向链表头部或尾部添加节点时时间复杂度为O(1)。
- 节点包含数据:链表节点不仅包含前驱和后继指针,还包含实际存储的数据,可以存储不同类型的数据。
在事务处理场景下对事务基本特性的协助
- 原子性
- 原理:Redis事务通过MULTI、EXEC命令实现。事务中的命令会被放入一个队列(类似于链表结构,先进先出),在EXEC执行时,会依次执行队列中的命令,执行过程中不会被其他客户端的命令打断。
- 举例:
MULTI
SET key1 value1
SET key2 value2
EXEC
这里SET key1 value1和SET key2 value2命令被依次放入事务队列,EXEC时要么两个命令都成功执行,要么都不执行,保证了原子性。 2. 一致性 - 原理:事务执行过程中,若出现错误(如类型错误),整个事务会被取消,不会对数据进行部分修改,从而保证数据的一致性。链表结构确保事务中的命令按顺序执行和处理,不会出现命令执行顺序混乱导致的数据不一致情况。 - 举例:
MULTI
SET key1 123
SET key2 "not a number" # 这里会产生类型错误
INCR key2 # 该命令不会执行
EXEC
由于SET key2 "not a number"产生错误,INCR key2不会执行,整个事务被取消,保证了数据的一致性。