Redis 常用的数据类型及用法

1. 字符串(Strings)

字符串是最基本的 Redis 数据类型。它可以包含任何形式的数据,比如文本、数字或二进制数据。

基本用法:

  • 设置值: SET key value
  • 获取值: GET key
  • 删除键: DEL key
  • 自增: INCR key
  • 追加值: APPEND key value

示例:

bash 复制代码
# 设置一个键 "mykey" 对应字符串 "Hello"
SET mykey "Hello"

# 获取 "mykey" 的值
GET mykey

# 输出: "Hello"

# 将 "mykey" 自增(这将返回错误,因为值不是整数)
INCR mykey

# 追加字符串 " World" 到 "mykey"
APPEND mykey " World"

# 再次获取 "mykey" 的值
GET mykey

# 输出: "Hello World"

2. 列表(Lists)

列表是简单的字符串链表,按照插入顺序排序。

基本用法:

  • 左侧推入: LPUSH key value
  • 右侧推入: RPUSH key value
  • 左侧弹出: LPOP key
  • 右侧弹出: RPOP key
  • 获取列表: LRANGE key start stop

示例:

bash 复制代码
# 在 "mylist" 的左侧推入值 "world"
LPUSH mylist "world"

# 在 "mylist" 的左侧推入另一个值 "hello"
LPUSH mylist "hello"

# 获取 "mylist" 的所有元素
LRANGE mylist 0 -1

# 输出: 1) "hello" 2) "world"

# 在 "mylist" 的右侧推入值 "!"
RPUSH mylist "!"

# 弹出 "mylist" 的右侧元素
RPOP mylist

# 输出: "!"

3. 集合(Sets)

集合是字符串的无序收集,并且每个元素都是唯一的。

基本用法:

  • 添加元素: SADD key member [member ...]
  • 移除元素: SREM key member [member ...]
  • 获取集合所有成员: SMEMBERS key
  • 检测存在性: SISMEMBER key member

示例:

php 复制代码
# 向 "myset" 添加元素 "Hello"
SADD myset "Hello"

# 向 "myset" 添加元素 "World"
SADD myset "World"

# 获取 "myset" 的所有成员
SMEMBERS myset

# 输出: 1) "Hello" 2) "World"

# 检查 "myset" 是否包含 "Hello"
SISMEMBER myset "Hello"

# 输出: (integer) 1

# 移除 "myset" 中的 "World"
SREM myset "World"

4. 有序集合(Sorted Sets)

有序集合与集合类似,但是每个成员都会关联一个浮点数分数,Redis 正是通过分数来为集合中的成员进行从小到大的排序。

基本用法:

  • 添加元素: ZADD key score member [score member ...]
  • 获取元素: ZRANGE key start stop [WITHSCORES]
  • 删除元素: ZREM key member [member ...]
  • 获取元素排名: ZRANK key member
  • 获取元素逆序排名: ZREVRANK key member

示例:

php 复制代码
# 向 "mysortedset" 添加元素 "one" 与分数 1
ZADD mysortedset 1 "one"

# 向 "mysortedset" 添加元素 "two" 与分数 2
ZADD mysortedset 2 "two"

# 获取 "mysortedset" 所有元素(默认按分数升序)
ZRANGE mysortedset 0 -1 WITHSCORES

# 输出: 1) "one" 2) "1" 3) "two" 4) "2"

# 获取元素 "one" 在 "mysortedset" 中的排名
ZRANK mysortedset "one"

# 输出: (integer) 0

# 从 "mysortedset" 中删除元素 "one"
ZREM mysortedset "one"

5. 哈希(Hashes)

哈希是字符串字段和字符串值之间的映射表,是存储对象的理想方式。

基本用法:

  • 设置字段值: HSET key field value
  • 获取字段值: HGET key field
  • 删除字段: HDEL key field
  • 获取所有字段值: HGETALL key
  • 检测字段存在性: HEXISTS key field

示例:

bash 复制代码
# 向名为 "user:1000" 的哈希中添加字段 "name" 和 "age"
HSET user:1000 name "Alice"
HSET user:1000 age "30"

# 获取 "user:1000" 中 "age" 字段的值
HGET user:1000 age

# 输出: "30"

# 获取 "user:1000" 的所有字段和值
HGETALL user:1000

# 输出: 1) "name" 2) "Alice" 3) "age" 4) "30"

# 检查 "user:1000" 是否有 "name" 字段
HEXISTS user:1000 name

# 输出: (integer) 1

# 删除 "user:1000" 中的 "age" 字段
HDEL user:1000 age

这些是 Redis 中最常用的五种数据类型。Redis 还支持其他一些复杂的数据结构,如位图(bitmaps)、地理空间索引(geospatial indexes)和流(streams),这些类型对于特定的应用场景非常有用。

相关推荐
雪域迷影6 分钟前
Windows11上安装Redis服务和Redis可视化客户端
windows·redis
青云交13 分钟前
Java 大视界 -- 基于 Java+Redis Cluster 构建分布式缓存系统:实战与一致性保障(444)
java·redis·缓存·缓存穿透·分布式缓存·一致性保障·java+redis clus
三不原则32 分钟前
故障案例:模型推理响应慢,排查 Redis 缓存集群问题
数据库·redis·缓存
wsx_iot33 分钟前
缓存问题相关
缓存
小北方城市网13 小时前
分布式锁实战指南:从选型到落地,避开 90% 的坑
java·数据库·redis·分布式·python·缓存
ohoy14 小时前
RedisTemplate 使用之Zset
java·开发语言·redis
小夏卷编程15 小时前
jeecg boot 路由缓存失效问题
vue.js·缓存
冰冰菜的扣jio17 小时前
Redis缓存中三大问题——穿透、击穿、雪崩
java·redis·缓存
阿里巴巴P8资深技术专家18 小时前
基于 Spring AI 和 Redis 向量库的智能对话系统实践
人工智能·redis·spring
oMcLin18 小时前
如何在 AlmaLinux 9 上配置并优化 Redis 集群,支持高并发的实时数据缓存与快速查询?
数据库·redis·缓存