Redis 基础
跳到导航
跳到搜索
基本类型:
String(字符串)
set key value/get key
- Max: 512M
- 内部编码有3种,int(8字节长整型)、embstr(<=39 Byte)、raw(>39 Byte)
- 应用场景: 共享session、分布式锁、计数器、限流
- C 语言的字符串是 char[] 实现的,而 Redis 使用 SDS(Simple Dynamic String)结构:
struct sdshdr { unsigned int len; // 字符串长度 unsigned int free; // 空闲长度 char buf[]; // 字符串 }
Hash(哈希)
哈希类型是指 value 本身又是一个键值对(k-v)结构
hset key field value/hget key field/hscan key
- 底层编码:ziplist(压缩列表) 、hashtable(哈希表)
- 应用场景:缓存用户信息等
- 注意:哈希元素比较多的话,使用 hgetall 可能会导致 Redis 阻塞,可以使用 hscan。若只是获取部分 field,使用 hmget
List(列表)
有序多个元素,最多可以存储 2^32-1 个元素
lpush key value[value ...] 、lrange key start end
- 底层编码:ziplist(压缩列表)、linkedlist(链表)
- 应用场景:消息队列,文章列表
- Stack(栈): lpush + lpop
- Queue(队列): lpush + rpop
- Capped Collection(有限集合): lpush + ltrim
- Message Queue(消息队列): lpush + brpop
Set(集合)
元素不重复
sadd key element[element...]、smembers key
- 底层编码:intset(整数集合)、hashtable(哈希表)
- 应用场景:用户标签、生成随机数抽奖、社交需求
- 注意:元素比较多的话,使用 smembers 和 lrange、hgetall 可能会导致 Redis 阻塞,可以使用 sscan
zset(有序集合)
zadd key score member[score member...],zrank key member
- 底层编码:ziplist(压缩列表)、skiplist(跳跃表)
- 应用场景:排行榜,社交需求(如用户点赞)
数据结构类型
- Geospatial
- Hyperloglog
- Bitmap