面试必问 Redis 数据结构底层原理String、List,2024年最新mysql面试基础知识
在Redis中,String、List、Set、Hash、Sorted Set都是通过不同的结构实现的。
- String:String是最基本的key-value类型,其底层实现是一个简单动态字符串(Simple Dynamic String, SDS)。当字符串长度小于1M时,会用连续的内存空间,如果超过1M,会用一个结构体来存储,结构体包含指向字符串的指针和长度。
- List:List底层实际是一个双向链表,在Redis中被称为quicklist。这样既能保证高效的节点插入和删除,也能保证内存的连续性,有利于缓存。
- Set:Set底层实际是一个value为null的HashMap,因此可以保证元素的唯一性。
- Hash:Hash底层实际是一个HashMap,因此可以保证field的唯一性。
- Sorted Set:Sorted Set底层实际是一个HashMap和SkipList(跳跃表),因此既能保证元素的唯一性,又能保证元素的排序。
以下是创建和使用这些数据结构的Redis命令示例:
# String
SET key "Hello, World!"
GET key
# List
LPUSH mylist "Hello"
RPUSH mylist "World"
LRANGE mylist 0 -1
# Set
SADD myset "Hello"
SADD myset "World"
SMEMBERS myset
# Hash
HSET myhash field1 "Hello"
HSET myhash field2 "World"
HGETALL myhash
# Sorted Set
ZADD myzset 1 "Hello"
ZADD myzset 2 "World"
ZRANGE myzset 0 -1 WITHSCORES
以上代码提供了创建和操作Redis各种数据结构的基本命令。在实际应用中,还可以使用Lua脚本、事务等功能,以保证操作的原子性。
评论已关闭