跳表是一种有序的数据结构,通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。平均O(logN)、最坏O(N)复杂度。跳表由跳表节点zskiplistNode 和 跳表zskiplist 两个结构定义
字典是一种存储健值对(key-value)的抽象数据结构。在字典中,一个Key和一个Value进行关联,这些关联的键和值就成为健值对。字典中每个Key都是独一无二的,程序通过Key来更新对应的Value。
Redis使用的C语言中没有链表这种数据结构,所以Redis构建了自己的链表实现。
链表在Redis的应用非常广泛。比如列表键的底层实现之一就是链表。发布订阅、慢查询、监视器的功能也用到了链表,Redis服务器本身还用链表保存多个客户端的状态信息。
Redis没有使用C语言传统的字符串表示(以空字符\0
结尾的字符数组),而是使用简单动态字符串(Simple Dynamic String, SDS)的抽象类型作为字符串的表示。
在RabbitMQ
中,生产者的消息都是经过 Exchange
来接收,然后再转发到不同的 Queue
中。 RabbitMQ
的交换器类型有 fanout
、 direct
、 topic
、 header
四种。
在Spring中,使用 @Component
和 @Bean
来创建Bean实例,并让Spring容器管理其生命周期。
@Component
是对应某一个类,表明该类作为组件类,配合 @ComponentScan
使用,然后让 Spring IOC 容器实例化。
上一章介绍了RabbitMQ
在SpringBoot项目中简单队列的使用,介绍RabbitMQ
的死信队列的使用。
为了保证订单业务的消息数据不丢失,需要使用到RabbitMQ的死信队列机制,当消息消费发生异常时,将消息投入死信队列中。死信
是RabbitMQ中的一种消息机制 ,当消息被拒绝或者超出ttl,队列消息数量达到最大数量时,消息会成为死信。如果配置了死信队列信息,那么该消息将会被丢进死信队列中,如果没有配置,则该消息将会被丢弃。