Redis数据类型及常用命令

[复制链接]
发表于 2025-3-6 10:04:59 | 显示全部楼层 |阅读模式

Redis 支持多种数据类型,每种类型都有对应的存储和获取命令。以下是主要数据类型及其常用命令:


1. 字符串(String)

  • 存储数据

    • SET key value:设置键值对。
    • SETEX key seconds value:设置键值对并指定过期时间(秒)。
    SET name "Alice"
    SETEX session_id 3600 "abc123"
    
  • 获取数据

    • GET key:获取键对应的值。
    • GETRANGE key start end:获取值的子字符串。
    GET name          # 返回 "Alice"
    GETRANGE name 0 2 # 返回 "Ali"
    

2. 哈希(Hash)

  • 存储数据

    • HSET key field value:设置哈希表中字段的值。
    • HMSET key field1 value1 field2 value2(已弃用,推荐用 HSET 替代)。
    HSET user:1000 name "Bob" age 30
    
  • 获取数据

    • HGET key field:获取哈希表中指定字段的值。
    • HGETALL key:获取哈希表所有字段和值。
    HGET user:1000 name   # 返回 "Bob"
    HGETALL user:1000     # 返回所有字段和值
    

3. 列表(List)

  • 存储数据

    • LPUSH key value1 value2:从列表左侧插入元素。
    • RPUSH key value1 value2:从列表右侧插入元素。
    LPUSH tasks "task1" "task2"
    RPUSH tasks "task3"
    
  • 获取数据

    • LRANGE key start end:获取列表指定范围内的元素(0 -1 表示全部)。
    • LINDEX key index:获取列表中指定索引的元素。
    LRANGE tasks 0 -1  # 返回所有元素
    LINDEX tasks 0     # 返回第一个元素
    

4. 集合(Set)

  • 存储数据

    • SADD key member1 member2:向集合添加元素。
    SADD tags "redis" "database"
    
  • 获取数据

    • SMEMBERS key:获取集合所有元素。
    • SISMEMBER key member:检查元素是否在集合中。
    SMEMBERS tags       # 返回所有元素
    SISMEMBER tags "redis"  # 返回 1(存在)
    

5. 有序集合(Sorted Set)

  • 存储数据

    • ZADD key score1 member1 score2 member2:添加带分数的成员。
    ZADD leaderboard 100 "Alice" 200 "Bob"
    
  • 获取数据

    • ZRANGE key start end [WITHSCORES]:按排名范围获取成员(升序)。
    • ZREVRANGE key start end [WITHSCORES]:按排名范围获取成员(降序)。
    ZRANGE leaderboard 0 -1 WITHSCORES  # 返回所有成员及分数(升序)
    

6. 其他高级类型

6.1 位图(Bitmap)

  • 底层基于字符串,按位操作:

    • SETBIT key offset value:设置二进制位的值(0/1)。
    • GETBIT key offset:获取二进制位的值。
    SETBIT daily_active 100 1
    GETBIT daily_active 100
    

6.2 HyperLogLog

  • 用于基数统计(去重计数):

    • PFADD key element1 element2:添加元素。
    • PFCOUNT key:估算基数。
    PFADD visitors "user1" "user2"
    PFCOUNT visitors  # 返回估算的唯一用户数
    

6.3 流(Stream)

  • 用于消息队列(Redis 5.0+):

    • XADD key * field1 value1 field2 value2:添加消息。
    • XRANGE key start end:读取消息。
    XADD mystream * sensor_id 123 temperature 25.5
    XRANGE mystream - +  # 读取所有消息
    

6.4 地理空间(GEO)

  • 存储地理位置信息:

    • GEOADD key longitude latitude member:添加坐标。
    • GEORADIUS key longitude latitude radius unit:查询附近坐标。
    GEOADD cities 116.40 39.90 "Beijing"
    GEORADIUS cities 116.40 39.90 100 km
    

总结

数据类型 存储命令 获取命令
String SET, SETEX GET, GETRANGE
Hash HSET HGET, HGETALL
List LPUSH, RPUSH LRANGE, LINDEX
Set SADD SMEMBERS, SISMEMBER
Sorted Set ZADD ZRANGE, ZREVRANGE
Stream XADD XRANGE, XREAD

根据业务需求选择合适的数据类型,可显著优化性能和内存使用。

GMT+8, 2025-4-20 17:35 , Processed in 0.063408 second(s), 35 queries Archiver|手机版|小黑屋|Attic ( 京ICP备2020048627号 )

快速回复 返回顶部 返回列表