Redis 缓存雪崩、击穿、穿透

缓存在同一时间大面积失效,造成大量数据请求不能命中缓存,而造成数据库查询请求瞬间爆发而宕机。

解决方法

  1. 加锁或者队列,保证不会有大量线程对数据库进行读写。
  2. 给过期时间加上随机值,避免它们在同一时...

Redis分布式锁

在单进程环境中,可以使用线程锁来解决资源竞争的问题,比如python提供的threading.Lock。但在分布式环境,就不能再使用多线程锁来处理多进程资源竞争问题了。这时我们需要自行实现自己的分布式...

Redis对象类型

Redis中的键和值都是由对象来表示,键的对象类型总是字符串,而值则可以是字符串对象、列表对象、哈希对象、集合对象或者有序集合对象的其中一种。

对象结构体定义:

typedef struct re...

Redis数据结构:整数集合

整数集合集合键采用的数据结构之一,它有两个特性:

  1. 有序:集合的元素从小到大排列。
  2. 元素唯一:集合中的元素不允许重复。

但它的底层其实是基于数组来实现的,所以它的插入删除时间复杂度为O(n)(...

Redis数据结构:跳表

Redis的有序集合有两种实现方式:

  1. 基于压缩列表(ziplist)实现(当数据量较少时,采用此种方式)
  2. 基于跳跃表(skiplist)和字典实现

所以,跳表是Redis中实现有序结合采用数据...

Redis数据结构:字典

字典不仅是数据库的底层实现,也是Redis中哈希键的底层实现之一(压缩列表是另一种哈希键的底层实现)。

对于字典本身的实现,它是由哈希表这种数据结构来实现的。说到哈希表,必然会牵涉到hash值算法、...