每日一问: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成作一个以比特位为单位的数组

     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis支持多种数据结构,包括字符串、哈希、列表、集合、有序集合等。 1. 字符串 字符串是Redis最基本的数据结构底层采用简单动态字符串(SDS)实现。SDS本质上是一个带有缓冲区的结构体,可以实现动态扩容和缩容,支持O(1)时间复杂度的字符串操作。 2. 哈希 哈希是Redis中的一种键值对集合,底层采用哈希表实现。哈希表采用数组+链表的结构组织数据,可以实现O(1)时间复杂度的键值查询、插入、删除等操作。 3. 列表 列表是Redis中的一种双向链表结构,底层采用双向链表实现。双向链表可以实现O(1)时间复杂度的插入、删除等操作,可以用于实现队列、栈等数据结构。 4. 集合 集合是Redis中的一种无序集合,底层采用哈希表实现。哈希表可以实现O(1)时间复杂度的元素查询、插入、删除等操作,可以用于实现优秀的去重和交集、并集、差集等操作。 5. 有序集合 有序集合是Redis中的一种有序集合,底层采用跳表和哈希表实现。跳表可以实现O(logN)时间复杂度的元素查询、插入、删除等操作,而哈希表可以实现O(1)时间复杂度的元素查询、插入、删除等操作,可以用于实现按照分值排序的有序集合。 综上所述,Redis支持多种数据结构,每种数据结构底层采用不同的数据结构实现,可以根据具体的应用场景选择合适的数据结构存储数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值