目录
一、String字符串类型
String是redis中我们最常用的一种数据类型,他是二进制安全的,可以存储任意格式的数据,像png,序列化对象等,同时还支持原子操作和键过期设置。
1、基础命令
# 设置值(带过期时间)
SET key value EX 60 # 60秒后过期
SET key value PX 5000 # 5000毫秒后过期
# 条件设置(分布式锁基础)
SET key value NX # 仅当key不存在时设置
SET key value XX # 仅当key存在时设置
# 批量操作
MSET k1 v1 k2 v2
MGET k1 k2
2、操作数值
INCR counter # 值+1(原子操作)
INCRBY counter 5 # 值+5
DECRBY counter 3 # 值-3
注意:
# 错误用法(非原子性)
SETNX lock 1
EXPIRE lock 10
# 正确用法
SET lock 1 NX EX 10
3、适用场景
string类型可以用来存储一些简单的k-v 以及需要原装操作的场景。
二、Hash
当数据量较小时使用ziplist(压缩列表)作为存储结构,特点是内存紧凑,当数据量越来越大时,性能下降,转化为hashtable(哈希表)存储。
一般用于存储对象,比如说购物车列表。
三、List
-
底层实现:quicklist(ziplist + linkedlist的组合)
-
特点:
-
双向链表,支持左右插入/弹出
-
元素可重复
-
-
常用命令:
LPUSH/RPUSH key value LPOP/RPOP key LRANGE key start stop BLPOP key timeout # 阻塞版本 -
应用场景:
-
消息队列(LPUSH + BRPOP)
-
最新消息排行(朋友圈时间线)
-
分页查询(LRANGE)
-
四、Set
特点:元素不重复、无序
适用场景:共同好友列表
五、ZSet
特点:和set几乎一样,多了个排序功能,可以按照score排序
运用:排行榜、延迟队列
实现:ziplist+skiplist(跳表)
六、Bitmaps
每一位只存储0或1,1代表用户在线,0表示不在线
-
特点:
-
极致节省空间(1亿用户在线状态只需12MB)
-
支持AND/OR/XOR位运算
-
-
应用场景:
-
用户在线状态
-
每日活跃用户统计
-
布隆过滤器实现
-
七、HyperLogLog
可以快速统计不重复元素的个数(不精确),适合用于统计大量数据,比如说热搜访问次数。
八、GEO
可以存储经纬度和计算两点之间的距离。
运用:外卖范围,附近的人
九、Stream
redis5中新增特性,可以实现类似于kafka的消息队列。

1234

被折叠的 条评论
为什么被折叠?



