一.前言 Redis 提供了5种数据类型:String(字符串).Hash(哈希).List(列表).Set(集合).Zset(有序集合),理解每种数据类型的特点对于redis的开发和运维非常重要. 原文解析 Redis 中的 list 是我们经常使用到的一种数据类型,根据使用方式的不同,可以应用到很多场景中. 二.编码转换  上节<闲扯Redis三>Redis五种数据类型之List型 中说道,List类型有两种实现方式: 1.使用压缩列表(ziplist)实现的列表对象 2.使用双端链表(l…
命令手册网址 http://doc.redisfans.com/ Redis数据类型 l String l Hash l List l Set l Sorted Set Redis中还有3种特殊的数据类型 BitMap BitMap 就是通过一个 bit 位来表示某个元素对应的值或者状态, 其中的 key 就是对应元素本身,实际上底层也是通过对字符串的操作来实现.Redis 从 2.2 版本之后新增了setbit, getbit, bitcount 等几个 bitmap 相关命令.虽然是新命令,…
一.前言 Redis 提供了5种数据类型:String(字符串).Hash(哈希).List(列表).Set(集合).Zset(有序集合),理解每种数据类型的特点对于redis的开发和运维非常重要. 原文解析 Redis 中的 list 是我们经常使用到的一种数据类型,根据使用方式的不同,可以应用到很多场景中. 二.底层解析 1.上节回顾  上节<闲扯Redis四>List数据类型底层编码转换 说道,在 3.0 版本的 Redis 中,List 类型有两种实现方式: 1.使用压缩列表(zipl…
一.前言 Redis 提供了5种数据类型:String(字符串).Hash(哈希).List(列表).Set(集合).Zset(有序集合),理解每种数据类型的特点对于redis的开发和运维非常重要. 原文解析 备注: 本节中涉及到的跳跃表实现,已经在上节<闲扯Redis十>Redis 跳跃表的结构实现一文中详情分析过,本文中将直接引用,不再赘述. 二.命令实现  因为有序集合键的值为有序集合对象,所以用于有序集合键的所有命令都是针对有序集合对象来构建的. 命令 ziplist 编码的实现方法…
1.简介 Redis的五大数据类型也称五大数据对象:前面介绍过6大数据结构,Redis并没有直接使用这些结构来实现键值对数据库,而是使用这些结构构建了一个对象系统redisObject:这个对象系统包含了五大数据对象,字符串对象(string).列表对象(list).哈希对象(hash).集合(set)对象和有序集合对象(zset):而这五大对象的底层数据编码可以用命令OBJECT ENCODING来进行查看. redisObject结构 typedef struct redisObject {…
一.前言 Redis 提供了5种数据类型:String(字符串).Hash(哈希).List(列表).Set(集合).Zset(有序集合),理解每种数据类型的特点对于redis的开发和运维非常重要. 原文解析 Redis 中的 hash 是我们经常使用到的一种数据类型,根据使用方式的不同,可以应用到很多场景中. 二.实现分析  由上述结构图可知,Hash类型有以下两种实现方式: 1.ziplist 编码的哈希对象使用压缩列表作为底层实现 2.hashtable 编码的哈希对象使用字典作为底层实现…
一.前言 上节<闲扯Redis六>Redis五种数据类型之Hash型 中说到 Hash(哈希对象)的底层实现有: 1.ziplist 编码的哈希对象使用压缩列表作为底层实现 2.hashtable 编码的哈希对象使用字典作为底层实现 原文解析 那么第二种方式中的字典究竟是怎样的一种结构呢? 字典, 又称符号表(symbol table).关联数组(associative array)或者映射(map), 是一种用于保存键值对(key-value pair)的抽象数据结构.在字典中, 一个键(k…
一.前言 Redis 提供了5种数据类型:String(字符串).Hash(哈希).List(列表).Set(集合).Zset(有序集合),理解每种数据类型的特点对于redis的开发和运维非常重要. 原文解析 Redis 中的 Set 是我们经常使用到的一种数据类型,根据使用方式的不同,可以应用到很多场景中. 二.底层实现  集合对象的编码可以是 intset 或者 hashtable .  intset 编码的集合对象使用整数集合作为底层实现, 集合对象包含的所有元素都被保存在整数集合里面.…
Redis数据类型底层数据结构 Redis目前基本的数据类型有String.List.Set.ZSet.Hash五种,首先Redis是C语言开发的,所以底层就是用C语言封装数据结构或者C语言本身提供的数据结构来存储.redis内部的主要数据结构主要有简单字符串(SDS).双端链表.字典.压缩列表.跳跃表.整数集合.Redis内部并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这个对象系统包含了我们所熟知的五种基本类型数据,也就是字符串对象.列表对象.哈希对象…
一.字符串<String> 1. 字符串类型:实际上可以是字符串(包括XML JSON),还有数字(整形 浮点数),二进制(图片 音频 视频),最大不能超过512MB 2. 设值命令: set name lgs ex 10  //10秒后过期  px 10000 毫秒过期 setnx name lgs  //不存在键name时才能设置,返回1设置成功:存在的话失败0 set age 29    //存在键age时直接覆盖之前的键值,返回1成功 场景:如果有多客户同时执行setnx,只有一个能设…