美文网首页
redis五种基本数据类型

redis五种基本数据类型

作者: zfh_51d2 | 来源:发表于2020-08-23 23:16 被阅读0次
1、string

string是redis最基本的类型,可以理解成与memcached一模一样的类型,一个key对应一个value。value不仅是string,也可以是数字。string类型是二进制安全的,意思是redis的string类型可以包含任何数据,比如jpg图片或者序列化的对象。string类型的值最大能存储512M。

//SDS的定义
struct sdshdr{
     //记录buf数组中已使用字节的数量,等于sDs所保存字符串的长度
     int len
     //记录buf数组中未使用字节的数量 
     int free
     //字节数组用于保存字符串 
     char buf[]
}
SDS示列
相比c的字符串优点:

1.常数复杂的获取字符串长度
2.杜绝缓冲区溢出
3.减少修改字符串带来的内存重新分配次数

2、list

list列表是简单的字符串列表,按照插入顺序排序。可以添加一个元素到列表的头部(左边)或者尾部(右边) 常用命令:lpush、rpush、lpop、rpop、lrange(获取列表片段)等。实现方式:redis list的是实现是一个双向链表,既可以支持反向查找和遍历,更方便操作,不过带来了额外的内存开销。

list示列
3、hash

hash是一个键值(key-value)的集合。redis的hash是一个string的key和value的映射表,Hash特别适合存储对象。常用命令:hget,hset,hgetall等。

hash示列
4、set

set是string类型的无序集合。集合是通过hashtable实现的。set中的元素是没有顺序的,而且是没有重复的。常用命令:sdd、spop、smembers、sunion等。应用场景:redis set对外提供的功能和list一样是一个列表,特殊之处在于set是自动去重的,而且set提供了判断某个成员是否在一个set集合中。

5、zset

zset和set一样是string类型元素的集合,且不允许重复的元素。常用命令:zadd、zrange、zrem、zcard等。实现方式:zset的内部使用HashMap和跳跃表(skipList)来保证数据的存储和有序,HashMap里放的是成员到score的映射,而跳跃表里存放的是所有的成员,排序依据是HashMap里存的score,使用跳跃表的结构可以获得比较高的查找效率,并且在实现上比较简单。

zset示列
6.整数集合

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

typedef struct intset{
      //编码方式 
      uint32_t encoding
      //集合包含的元素数量 
      uint32_t length
      //保存元素的数组
      int8_t contents[]
}
intset示列
7.压缩列表

压缩列表是列表键和哈希键的底层实现之一。当一列表键只包含少量列表项,并且每个列表项要么就是小整数值,要么就是长度比较短的字符串,那么 redis就会使用压缩列表来做列表键的底层实现。

相关文章

网友评论

      本文标题:redis五种基本数据类型

      本文链接:https://www.haomeiwen.com/subject/kvawjktx.html