Redis数据结构详解(5种常见数据结构)

Redis数据结构详解(5种常见数据结构)-mikechen

Redis 支持多种数据结构,每种数据结构都有不同的特性和用途,下面详解常见的Redis数据结构@mikechen

Redis数据结构详解(5种常见数据结构)-mikechen

1.字符串(String)

字符串是 Redis 最基本的数据结构,可以存储任意二进制数据,例如文本、整数或序列化对象。

特点:

  • String 数据结构可以存储任意二进制数据,包括文本、整数或序列化对象。
  • Redis 中的字符串是动态的,可以根据需要进行扩展和缩小。

常见操作:

  • SET key value:设置键的值。
  • GET key:获取键的值。
  • DEL key:删除键及其对应的值。
  • INCR key:将键的值作为有符号整数递增。
  • DECR key:将键的值作为有符号整数递减。
  • APPEND key value:将指定值追加到键的值的末尾。
  • STRLEN key:获取键的值的长度。
  • MSET key1 value1 key2 value2 ...:同时设置多个键值对。
  • MGET key1 key2 ...:同时获取多个键的值。
  • SETNX key value:只在键不存在时设置键的值。
  • SETEX key seconds value:设置键的值,并指定过期时间(以秒为单位)。
  • GETSET key value:设置键的新值,并返回旧值。

 

2.哈希(Hash)

哈希是一个键值对的集合,适用于存储对象或记录。

特点:

  • 哈希是一个字符串字段和对应值之间的映射集合。
  • 每个哈希可以包含多个字段和与之相关联的值。
  • Redis 使用哈希表来实现哈希数据结构,保持高效的查找和访问性能。

 

常见操作:

  • HSET key field value:为给定的键设置字段-值对。
  • HGET key field:获取给定键和字段对应的值。
  • HDEL key field1 field2 ...:删除给定键中的一个或多个字段。
  • HGETALL key:获取给定键中所有字段和对应的值。
  • HKEYS key:获取给定键中的所有字段。
  • HVALS key:获取给定键中的所有值。
  • HEXISTS key field:检查给定键中是否存在指定的字段。
  • HINCRBY key field increment:将给定键和字段对应的值作为有符号整数递增。
  • HLEN key:获取给定键中字段-值对的数量。

 

3.列表(List)

列表是一个有序的字符串元素集合,允许在头部或尾部进行插入和删除操作。

特点:

  • 列表中的元素按照插入顺序排列,可以有重复的元素。
  • Redis 使用双向链表实现列表数据结构,使得在头部和尾部进行操作都是高效的。

 

常见操作:

  • LPUSH key element1 element2 ...:将一个或多个元素插入到列表的头部。
  • RPUSH key element1 element2 ...:将一个或多个元素插入到列表的尾部。
  • LPOP key:移除并返回列表的头部元素。
  • RPOP key:移除并返回列表的尾部元素。
  • LLEN key:获取列表的长度(即元素数量)。
  • LRANGE key start stop:获取列表中指定范围的元素。
  • LINDEX key index:获取列表中指定索引位置的元素。
  • LINSERT key BEFORE|AFTER pivot element:在列表中找到指定元素 pivot,并在其前或后插入新元素。
  • LREM key count element:从列表中移除指定数量的匹配元素。
  • LTRIM key start stop:修剪(截取)列表,只保留指定范围内的元素。

 

4.集合(Set)

集合是一个无序且唯一的字符串元素集合,不允许重复值。

特点:

  • 集合中的元素是无序的,不重复的。
  • Redis 使用哈希表实现集合数据结构,保持高效的查找和插入性能。

 

常见操作:

  • SADD key member1 member2 ...:向集合中添加一个或多个元素。
  • SREM key member1 member2 ...:从集合中移除一个或多个元素。
  • SMEMBERS key:获取集合中的所有成员。
  • SCARD key:获取集合的基数(即成员数量)。
  • SISMEMBER key member:检查元素是否是集合的成员。
  • SINTER key1 key2 ...:获取多个集合的交集。
  • SUNION key1 key2 ...:获取多个集合的并集。
  • SDIFF key1 key2 ...:获取多个集合的差集。
  • SRANDMEMBER key [count]:从集合中随机获取一个或多个元素。
  • SMOVE source destination member:将元素从一个集合移动到另一个集合。

 

5.有序集合(Sorted Set)

有序集合是一个有序的字符串元素集合,每个元素关联着一个分数(score)。

特点:

  • 有序集合中的元素按照分数从小到大排序,不允许重复值。
  • 每个元素与一个分数相关联,用于进行排序和比较。
  • Redis 使用跳跃表(Skip List)和哈希表两种数据结构实现有序集合,保持高效的插入、删除和查询性能。

 

常见操作:

  • ZADD key score1 member1 score2 member2 ...:向有序集合中添加一个或多个元素,并指定对应的分数。
  • ZREM key member1 member2 ...:从有序集合中移除一个或多个元素。
  • ZCARD key:获取有序集合的基数(即元素数量)。
  • ZSCORE key member:获取有序集合中指定成员的分数。
  • ZRANGE key start stop [WITHSCORES]:按照索引范围获取有序集合中的元素,可选地返回元素的分数。
  • ZREVRANGE key start stop [WITHSCORES]:按照逆序索引范围获取有序集合中的元素,可选地返回元素的分数。
  • ZINCRBY key increment member:将指定成员的分数增加指定的增量。
  • ZCOUNT key min max:获取有序集合中分数在给定范围内的成员数量。

以上是 Redis 中常见的数据结构,每个数据结构都具有不同的特性和适用场景,可以根据实际需求选择合适的数据结构来存储和处理数据。

陈睿mikechen

十余年BAT架构经验,资深技术专家,就职于阿里、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法