Redis字符串基础介绍
Redis字符串是Redis中最简单的数据类型,一个键对应一个字符串值,值的最大长度可以达到512MB。它不仅可以存储普通的文本字符串,还可以存储整数、浮点数等类型的数据,并且支持对这些数据进行原子性的增减操作。在实际开发中,Redis字符串常被用于缓存热点数据、实现简单的计数器、存储用户会话信息等场景。

字符串存储操作
存储字符串最基础的命令是SET,它可以给指定的键设置对应的值,同时支持一些可选参数来设置过期时间、判断键是否存在等。
基础SET命令用法
最简单的存储方式就是直接指定键和值,命令格式为SET key value,执行后如果键不存在则创建,存在则覆盖原有值。
# 连接Redis客户端后执行 SET username "张三" # 输出结果 OK
带参数的SET命令用法
SET命令支持多个可选参数,比如EX设置秒级过期时间,PX设置毫秒级过期时间,NX仅当键不存在时设置,XX仅当键存在时设置。
# 设置键user_id的值为1001,同时设置过期时间为3600秒 SET user_id 1001 EX 3600 # 输出结果 OK # 仅当键test_key不存在时才设置值 SET test_key "hello" NX # 如果test_key不存在,输出OK;如果存在,输出(nil)
查询字符串长度
查询字符串长度使用STRLEN命令,命令格式为STRLEN key,返回指定键对应字符串值的长度,如果键不存在则返回0。
# 先设置一个字符串 SET greeting "hello world" # 输出结果 OK # 查询greeting的长度 STRLEN greeting # 输出结果 11 # 查询不存在的键的长度 STRLEN not_exist_key # 输出结果 0
追加字符串内容
追加字符串内容使用APPEND命令,命令格式为APPEND key value,将指定的值追加到原有字符串的末尾,如果键不存在则先创建键再设置值,命令返回追加后字符串的总长度。
# 先设置一个初始字符串 SET log "2024-01-01 10:00:00 系统启动" # 输出结果 OK # 追加日志内容 APPEND log ",加载配置文件完成" # 输出结果 29 # 查看追加后的内容 GET log # 输出结果 "2024-01-01 10:00:00 系统启动,加载配置文件完成" # 给不存在的键追加内容 APPEND new_key "first content" # 输出结果 12 GET new_key # 输出结果 "first content"
设置自动过期时间
除了在SET命令中直接设置过期时间,还可以使用EXPIRE、PEXPIRE、EXPIREAT、PEXPIREAT等命令为已经存在的字符串键设置自动过期时间。
常用过期设置命令
EXPIRE key seconds:设置键在多少秒后过期PEXPIRE key milliseconds:设置键在多少毫秒后过期EXPIREAT key timestamp:设置键在指定的秒级时间戳之后过期PEXPIREAT key timestamp:设置键在指定的毫秒级时间戳之后过期
# 设置一个字符串 SET verify_code "123456" # 输出结果 OK # 设置60秒后过期 EXPIRE verify_code 60 # 输出结果 1,表示设置成功 # 查看剩余过期时间,单位秒 TTL verify_code # 输出结果 剩余秒数,比如58 # 设置毫秒级过期时间 PEXPIRE verify_code 30000 # 输出结果 1 # 查看剩余过期时间,单位毫秒 PTTL verify_code # 输出结果 剩余毫秒数,比如29500
实战代码示例
下面是使用Python的redis-py库实现字符串存储、查询长度、追加内容和设置过期的完整示例:
import redis
# 连接Redis服务
client = redis.Redis(host='127.0.0.1', port=6379, db=0, decode_responses=True)
# 1. 存储字符串
client.set('product_name', '无线蓝牙耳机')
print('存储结果:', client.get('product_name'))
# 2. 查询字符串长度
length = client.strlen('product_name')
print('字符串长度:', length)
# 3. 追加内容
new_length = client.append('product_name', ' 黑色款')
print('追加后长度:', new_length)
print('追加后内容:', client.get('product_name'))
# 4. 设置自动过期
client.set('login_token', 'abc123xyz')
client.expire('login_token', 1800) # 30分钟过期
print('token剩余过期时间(秒):', client.ttl('login_token'))
注意事项
- 使用
SET命令覆盖已有键的值时,原有的过期时间会被清除,如果需要保留过期时间需要重新设置 APPEND命令追加的内容如果是整数类型,会被转换成字符串后再追加- 当键的值不是字符串类型时,执行
STRLEN、APPEND等字符串操作命令会返回错误 - 设置过期时间时,如果键已经被删除或者过期,设置命令会返回0表示失败