Redis扩展类型

简介Redis的基本类型只有string、hash、list、set、zset,这些扩展类型对象更多的是从算法层面上体现的,底层用的还是5大基本类型HyperLogLog举个例子,在需要统计每日用户访问量的一个需求,在当日同一个用户所有的访问只能算一次访问。用Hash,用户id作为key,value

Redis跳跃表

为什么使用跳跃表跳跃表(skiplist)作为Redis的底层编码之一,在牺牲一定内存空间的情况下,它可以提高链表的查询效率。众所周知,链表的查询时间复杂度由节点个数来决定的,它的时间复杂度为O(n)。虽然链表很适合存储大量节点,但是随着节点越来越多,它的查询越来越慢,这与链表适合存储大量节点这一说

Redis分布式锁

Redlock实现假如有5个master,就有5个redis集群,这些master之间是不会同步数据的,也就是说他们不会同步锁状态客户端在获取锁时需要按照以下步骤:获取当前Unix时间(ms)->startTime顺序从5个master获取锁,使用相同的key和value(UUID)。客户端在

避免BigKey

什么是bigkey?在Redis中,一个字符串最大512MB,二级数据结构(hash,list、set、zset)可以存储2^32-1个元素字符串类型超过10KB被认为是一个bigkey二级数据结构中元素个数过多被认为是个bigkey二级数据结构中也可以存储string,那么二级类型中的string

Redis 对象

对象数据结构前面说了Redis有很多种类型,string、hash、list、set、sortset..但是Redis在创建这些数据结构的时候并没有直接使用这些数据结构来实现键值对数据库,Redis自己实现了一套对象结构redisObject,先来简单看下它的数据结构源码redis.h#define

Redis 链表

链表简介链表(linkedlist)作为一种非常常见的数据结构,它不仅在Redis其它数据结构中使用的非常广泛,而且许多高级语言都内置了这种数据结构,比如:Java中的LinkedList链表分为单向链表、双向链表、循环链表等。链表是一种逻辑上连续,物理上分散的数据结构,比如双向链表中的每一个节点它

Redis 压缩列表

压缩链表简介压缩列表(ziplist)是List类型和Hash类型的底层编码实现之一。比如List底层的编码有两种:ziplist和linkedlist,hash类型也有两种:ziplist和hashtable。这两种Redis的基本类型都用到了ziplist编码。为什么List和Hash都用到了z

Redis字符串详解

Redis字符串详解redis虽然是使用c语言实现的,但是它并没有直接使用c语言提供的字符串,char[]和char*。而是自己实现的动态字符串类型(simpledynamicstring),简称(sds)structsdshdr{intlen;//空间总长度intfree;//剩余空间长度char

Redis List类型

RedisList类型Redis的List类型有两种编码:zipList和linkedListzipList中所有的节点都是连续的在内存中排列的,加载速度快,zipList结构设计也是为了节约内存空间,但是不适合存储大量的节点linkedList是链表结构,逻辑连续,在内存中可能是分散到各个内存空间
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×