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),这些类型对于特定的应用场景非常有用。

相关推荐
小王子10244 小时前
Django缓存机制详解:从配置到实战应用
redis·缓存·django·rbac
Antonio9154 小时前
【Redis】Redis 数据存储原理和结构
数据库·redis·缓存
problc6 小时前
大模型API和秘钥获取地址
数据库·redis·缓存
Antonio9156 小时前
【Redis】Linux 配置Redis
linux·数据库·redis
Rover.x6 小时前
内存泄漏问题排查
java·linux·服务器·缓存
木宇(记得热爱生活)7 小时前
Qt GUI缓存实现
开发语言·qt·缓存
Antonio91510 小时前
【Redis】 Redis 基础命令和原理
数据库·redis·缓存
半新半旧1 天前
python 整合使用 Redis
redis·python·bootstrap
daixin88481 天前
什么是缓存雪崩?缓存击穿?缓存穿透?分别如何解决?什么是缓存预热?
java·开发语言·redis·缓存