Redis数据结构 - 整数集合intset

整数集合是集合健的底层实现之一,当一个集合中只包含整数值元素,且元素不多时,Redis就会使用整数集合作为集合健的底层实现。

整数集合

1
2
3
4
5
6
7
/////编码方式
//16位,2个字节,表示范围-32,768~32,767
#define INTSET_ENC_INT16 (sizeof(int16_t))
//32位,4个字节,表示范围-2,147,483,648~2,147,483,647
#define INTSET_ENC_INT32 (sizeof(int32_t))
//64位,8个字节,表示范围-9,223,372,036,854,775,808~9,223,372,036,854,775,807
#define INTSET_ENC_INT64 (sizeof(int64_t))

阅读全文

Redis数据结构 - 跳表skiplist

跳表是一种有序的数据结构,通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。平均O(logN)、最坏O(N)复杂度。跳表由跳表节点zskiplistNode 和 跳表zskiplist 两个结构定义

阅读全文

Redis数据结构 - 字典

字典是一种存储健值对(key-value)的抽象数据结构。在字典中,一个Key和一个Value进行关联,这些关联的键和值就成为健值对。字典中每个Key都是独一无二的,程序通过Key来更新对应的Value。

阅读全文

Redis数据结构 - 链表

Redis使用的C语言中没有链表这种数据结构,所以Redis构建了自己的链表实现。
链表在Redis的应用非常广泛。比如列表键的底层实现之一就是链表。发布订阅、慢查询、监视器的功能也用到了链表,Redis服务器本身还用链表保存多个客户端的状态信息。

阅读全文

Redis数据结构 - SDS简单动态字符串

Redis没有使用C语言传统的字符串表示(以空字符\0结尾的字符数组),而是使用简单动态字符串(Simple Dynamic String, SDS)的抽象类型作为字符串的表示。

阅读全文

RabbitMQ 交换器类型

​ 在RabbitMQ中,生产者的消息都是经过 Exchange 来接收,然后再转发到不同的 Queue 中。 RabbitMQ的交换器类型有 fanoutdirecttopicheader 四种。

阅读全文

Spring 中 @Component和@Bean的区别

在Spring中,使用 @Component@Bean 来创建Bean实例,并让Spring容器管理其生命周期。

@Component是对应某一个类,表明该类作为组件类,配合 @ComponentScan 使用,然后让 Spring IOC 容器实例化。

阅读全文

RabbitMQ 延时队列

​ 上一章介绍了RabbitMQ中死信队列的使用,接下来介绍RabbitMQ中延时队列的使用,包括队列TTL,消息TTL和RabbitMQ延迟插件。

阅读全文

RabbitMQ 死信队列

​ 上一章介绍了RabbitMQ在SpringBoot项目中简单队列的使用,介绍RabbitMQ的死信队列的使用。

​ 为了保证订单业务的消息数据不丢失,需要使用到RabbitMQ的死信队列机制,当消息消费发生异常时,将消息投入死信队列中。死信是RabbitMQ中的一种消息机制 ,当消息被拒绝或者超出ttl,队列消息数量达到最大数量时,消息会成为死信。如果配置了死信队列信息,那么该消息将会被丢进死信队列中,如果没有配置,则该消息将会被丢弃。

阅读全文

RabbitMQ消息队列

​ 上一章介绍了RabbitMQ的安装与配置,本章基于SpringBoot项目,介绍RabbitMQ的消息队列的简单使用。

消息队列

阅读全文