Redis 支持多种数据结构,每种数据结构都有不同的特性和用途,下面详解常见的Redis数据结构@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面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》