Redis数据类型及使用场景详解

Redis数据类型及使用场景详解

1. String(字符串)

1.1 数据结构

  • 可以存储字符串、整数或浮点数
  • 最大存储512MB
  • 二进制安全

1.2 基本命令

ET key value
GET key
INCR key
DECR key
INCRBY key increment
DECRBY key decrement
SETEX key seconds value

1.3 使用场景

  1. 计数器
    • 文章阅读量统计
    • 用户点赞数
    • 商品库存数量
INCR article:readcount:{id}
GET article:readcount:{id}
  1. 分布式锁
SET lock_key unique_value NX PX 10000
  1. 缓存
  • 热点数据缓存
  • 对象缓存
  • session共享
SET user:{id} {user_json_string}
SETEX session:{id} 3600 {session_data}

2. Hash(哈希)

2.1 数据结构

  • 键值对集合
  • field-value的映射表
  • 适合存储对象

2.2 基本命令

HSET key field value
HGET key field
HMSET key field1 value1 field2 value2
HMGET key field1 field2
HGETALL key
HINCRBY key field increment

2.3 使用场景

  1. 用户信息管理
HMSET user:1 name "John" age 25 city "New York"
HGET user:1 name
  1. 商品属性管理
HMSET product:1 title "iPhone" price 999 stock 100
HINCRBY product:1 stock -1
  1. 购物车
HSET cart:user:1 product:1 2 # 商品ID和数量
HINCRBY cart:user:1 product:1 1 # 增加商品数量

3. List(列表)

3.1 数据结构

  • 双向链表
  • 有序
  • 可重复

3.2 基本命令

LPUSH key value
RPUSH key value
LPOP key
RPOP key
LRANGE key start stop
BLPOP key timeout

3.3 使用场景

  1. 消息队列
LPUSH msg:queue message
BRPOP msg:queue 0
  1. 最新动态
LPUSH user:news:1 news1
LRANGE user:news:1 0 9 # 获取最新10条
  1. 文章列表
LPUSH article:list article1
LRANGE article:list 0 9

4. Set(集合)

4.1 数据结构

  • 无序集合
  • 唯一性
  • 支持集合运算

4.2 基本命令

SADD key member
SMEMBERS key
SISMEMBER key member
SINTER key1 key2
SUNION key1 key2
SREM key member

4.3 使用场景

  1. 好友关系
SADD user:1:friends 2 3 4
SISMEMBER user:1:friends 2
  1. 标签管理
SADD article:1:tags python redis mysql
SMEMBERS article:1:tags
  1. 黑名单/白名单
SADD blacklist ip1 ip2
SISMEMBER blacklist ip1

5. Sorted Set(有序集合)

5.1 数据结构

  • 有序集合
  • 唯一性
  • score排序

5.2 基本命令

ZADD key score member
ZRANGE key start stop [WITHSCORES]
ZREVRANGE key start stop [WITHSCORES]
ZRANK key member
ZSCORE key member

5.3 使用场景

  1. 排行榜
ZADD leaderboard 100 user1
ZREVRANGE leaderboard 0 9 WITHSCORES # 前10名
  1. 延时队列
ZADD delay-queue timestamp task-id
ZRANGEBYSCORE delay-queue 0 current-timestamp
  1. 权重队列
ZADD weight-queue 10 task1
ZRANGE weight-queue 0 -1

6. Bitmap(位图)

6.1 数据结构

  • 位数组
  • 最大512MB
  • 节省空间

6.2 基本命令

SETBIT key offset value
GETBIT key offset
BITCOUNT key [start end]
BITOP operation destkey key [key ...]

6.3 使用场景

  1. 用户在线状态
SETBIT online_users user_id 1
GETBIT online_users user_id
  1. 签到记录
SETBIT user:sign:1 20230901 1
BITCOUNT user:sign:1
  1. 布隆过滤器
SETBIT bloom_filter hash_value 1
GETBIT bloom_filter hash_value

7. HyperLogLog

7.1 数据结构

  • 基数统计
  • 占用空间小
  • 有误差

7.2 基本命令

PFADD key element [element ...]
PFCOUNT key [key ...]
PFMERGE destkey sourcekey [sourcekey ...]

7.3 使用场景

  1. UV统计
PFADD page:uv user1 user2
PFCOUNT page:uv
  1. 独立IP统计
PFADD daily:ip ip1 ip2
PFCOUNT daily:ip

8. Geo(地理位置)

8.1 数据结构

  • 经纬度信息
  • 距离计算
  • 范围查询

8.2 基本命令

GEOADD key longitude latitude member
GEODIST key member1 member2 [unit]
GEORADIUS key longitude latitude radius unit

8.3 使用场景

  1. 附近的人
GEOADD locations 116.48 39.97 user1
GEORADIUS locations 116.48 39.97 5 km
  1. 店铺查找
GEOADD shops 116.48 39.97 shop1
GEORADIUSBYMEMBER shops shop1 1 km

9. Stream(流)

9.1 数据结构

  • 消息队列
  • 持久化
  • 支持消费组

9.2 基本命令

XADD key ID field value
XREAD COUNT count STREAMS key ID
XGROUP CREATE key groupname id
XREADGROUP GROUP group consumer STREAMS key ID

9.3 使用场景

  1. 消息队列
XADD mystream name Anna age 25
XREAD COUNT 2 STREAMS mystream 0
  1. 日志处理
XADD logs level INFO message "User logged in"
XRANGE logs - +
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰糖心书房

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值