redis 几种常见数据类型

目录

一、String字符串类型

二、Hash

三、List

四、Set

五、ZSet

六、Bitmaps

七、HyperLogLog

八、GEO

九、Stream


一、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的消息队列。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值