每日一问: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有几种数据结构,底层分别是怎么存储的?的主要内容,如果未能解决你的问题,请参考以下文章
Java -- 每日一问:Java有几种文件拷贝方式?哪一种最高效?
Java -- 每日一问:Java有几种文件拷贝方式?哪一种最高效?