Redis7 String类型数据
Redis 中的 String 类型是最基本的数据类型,用于存储字符串、整数或浮点数。它支持多种操作,包括设置值、获取值、增量操作、位操作等。String 类型的值最大可存储 512MB 的数据。以下是详细用法和示例:
1. 基本命令
- 设置值:使用
SET
命令设置键值对。- 示例:
SET mykey "Hello"
(设置键mykey
的值为 "Hello")。
- 示例:
- 获取值:使用
GET
命令获取键的值。- 示例:
GET mykey
(返回 "Hello")。
- 示例:
- 追加字符串:使用
APPEND
在现有值后追加内容。- 示例:
APPEND mykey " World"
(值变为 "Hello World")。
- 示例:
- 获取字符串长度:使用
STRLEN
获取值的长度。- 示例:
STRLEN mykey
(返回 11)。
- 示例:
2. 数值操作
String 类型可以存储整数或浮点数,并支持数学运算:
- 增量操作:
INCR key
:将键的值增加 1(值必须是整数)。- 示例:
SET counter 100
后执行INCR counter
(值变为 101)。
- 示例:
INCRBY key increment
:增加指定整数,例如增加 $5$。- 示例:
INCRBY counter 5
(值从 101 变为 106)。
- 示例:
DECR key
和DECRBY key decrement
:类似地减少值。
- 浮点数操作:使用
INCRBYFLOAT key increment
增加浮点数。- 示例:
SET floatkey 10.5
后执行INCRBYFLOAT floatkey 2.5
(值变为 13.0)。
- 示例:
3. 位操作
String 类型支持位级别的操作,适用于二进制数据:
SETBIT key offset value
:设置键的二进制位(offset 为偏移量,value 为 0 或 1)。- 示例:
SETBIT flags 0 1
(设置第一个位为 1)。
- 示例:
GETBIT key offset
:获取指定偏移量的位值。- 示例:
GETBIT flags 0
(返回 1)。
- 示例:
BITCOUNT key
:统计值为 1 的位数量。
4. 其他实用命令
MSET
和MGET
:同时设置或获取多个键值对。- 示例:
MSET key1 "A" key2 "B"
后MGET key1 key2
(返回 ["A", "B"])。
- 示例:
SETEX key seconds value
:设置值并指定过期时间(秒)。- 示例:
SETEX tempkey 60 "temp"
(60 秒后自动删除)。
- 示例:
SETNX key value
:仅当键不存在时设置值(用于实现锁)。
5. Python 代码示例
以下是一个使用 Python 的 redis-py
库操作 String 类型的示例:
import redis# 连接到 Redis 服务器
r = redis.Redis(host='localhost', port=6379, db=0)# 设置和获取值
r.set('greeting', 'Hello Redis')
print(r.get('greeting')) # 输出: b'Hello Redis'# 数值操作
r.set('counter', 10)
r.incrby('counter', 5) # 增加 5
print(r.get('counter')) # 输出: b'15'# 位操作
r.setbit('flags', 0, 1) # 设置第一个位为 1
print(r.getbit('flags', 0)) # 输出: 1
注意事项
- 数据类型限制:String 值可以是字符串、整数或浮点数,但操作命令需匹配类型(例如,
INCR
要求整数)。 - 最大长度:单个 String 值最大为 512MB。
- 性能:所有 String 操作的时间复杂度非常高效。
- 适用场景:缓存、计数器、分布式锁、位图处理等。