每日一问:Redis有几种数据结构,底层分别是怎么存储的?

Posted 星仔学习

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日一问:Redis有几种数据结构,底层分别是怎么存储的?相关的知识,希望对你有一定的参考价值。

Redis 的五种基本数据类型

String(字符串)

  • 简介:String是Redis最基础的数据结构类型,它是二进制安全的,可以存储图片或者序列化的对象,值最大存储为512M

  • 简单使用举例: set key value、get key等

  • 应用场景:共享session、分布式锁,计数器、限流。

  • 内部编码有3种,int(8字节长整型)/embstr(小于等于39字节字符串)/raw(大于39个字节字符串)

Hash(哈希)

  • 简介:在Redis中,哈希类型是指v(值)本身又是一个键值对(k-v)结构

  • 简单使用举例:hset key field value 、hget key field

  • 内部编码:ziplist(压缩列表) 、hashtable(哈希表)

  • 应用场景:缓存用户信息等。

List(列表)

  • 简介:列表(list)类型是用来存储多个有序的字符串,一个列表最多可以存储2^32-1个元素。

  • 简单实用举例:lpush key value [value ...] 、lrange key start end

  • 内部编码:ziplist(压缩列表)、linkedlist(链表)

  • 应用场景:消息队列,文章列表

Set(集合)

  • 简介:集合(set)类型也是用来保存多个的字符串元素,但是不允许重复元素

  • 简单使用举例:sadd key element [element ...]、smembers key

  • 内部编码:intset(整数集合)、hashtable(哈希表)

  • 应用场景:用户标签,生成随机数抽奖、社交需求。

有序集合(zset)

  • 简介:已排序的字符串集合,同时元素不能重复

  • 简单格式举例:zadd key score member [score member ...],zrank key member

  • 底层内部编码:ziplist(压缩列表)、skiplist(跳跃表)

  • 应用场景:排行榜,社交需求(如用户点赞)。

 Redis 的三种特殊数据类型

  • Geo:Redis3.2推出的,地理位置定位,用于存储地理位置信息,并对存储的信息进行操作。

  • HyperLogLog:用来做基数统计算法的数据结构,如统计网站的UV。

  • Bitmaps :用一个比特位来映射某个元素的状态,在Redis中,它的底层是基于字符串类型实现的,可以把bitmaps成作一个以比特位为单位的数组

     

以上是关于每日一问:Redis有几种数据结构,底层分别是怎么存储的?的主要内容,如果未能解决你的问题,请参考以下文章

每日一问:Redis有几种数据结构,底层分别是怎么存储的?

Java -- 每日一问:Java有几种文件拷贝方式?哪一种最高效?

Java -- 每日一问:Java有几种文件拷贝方式?哪一种最高效?

Java -- 每日一问:Java并发类库提供的线程池有哪几种? 分别有什么特点?

redis 持久化有几种方式?

Java -- 每日一问:synchronized底层如何实现?什么是锁的升级降级?