Redis数据类型之String详解

概述

Redis存储数据的Value可以是一个String类型数据。String类型的Value是Redis中最基本,最常见的类型。String类型的Value中可以存放任意数据,包括数值型,甚至是二进制的图片、音频、视频、序列化对象等。一个String类型的Value最大是512M大小。
其编码方式主要有三种:

  • int:存整数型
  • embstr:短字符串(默认,≤44 字节)
  • raw:长字符串(>44 字节)

核心命令

Redis基础命令

redis中的基础命令是针对redis中所有数据类型通用的。

KEYS pattern        # 查看符合规则的key(生产慎用)
KEYS *              # 查看所有key

EXISTS key          # 判断key是否存在 1存在 0不存在
DEL key             # 删除key
TYPE key            # 查看value类型(string/hash/list/set/zset)

EXPIRE key seconds  # 设置过期时间(秒)
PEXPIRE key ms      # 毫秒级过期
TTL key             # 查看剩余过期时间(-1永不过期 -2已过期)
PTTL key            # 毫秒级剩余时间

PERSIST key         # 移除过期时间,永久保存

RENAME key newkey   # 重命名key
MOVE key db         # 移动key到指定库
FLUSHDB            # 清空当前库,危险命令
FLUSHALL           # 清空所有库,危险命令

String类型命令

读写命令

  • 设置key-value
# 语法:SET key value
127.0.0.1:6379> SET name zhangsan
OK
  • 根据key获取value
# 语法:GET key
127.0.0.1:6379> GET name
"zhangsan"
  • 获取旧值并设置新值
# 语法:GETSET key newvalue
127.0.0.1:6379> GETSET name lisi
"zhangsan"
127.0.0.1:6379> GET name
"lisi"

批量读写命令

  • 批量设置
# 语法:MSET key1 value1 key2 value2 key3 value3
127.0.0.1:6379> MSET name1 lisi1 name2 lisi2 name3 lisi3
OK
  • 批量获取
# 语法:MGET key1 key2 key3 ...
127.0.0.1:6379> mget name1 name2 name3
1) "lisi1"
2) "lisi2"
3) "lisi3"

value自增自减

这一批命令只针对value值为int类型的

  • 自增
# 语法:INCR key,自增1
127.0.0.1:6379> SET num 1
OK
127.0.0.1:6379> INCR num
(integer) 2
127.0.0.1:6379> GET num
"2"

# 语法:INCRBY key num,自增指定的数量
127.0.0.1:6379> INCRBY num 4
(integer) 6
127.0.0.1:6379> GET num
"6"
  • 自减
# 语法:DECR key,自减1
127.0.0.1:6379> DECR num
(integer) 5
127.0.0.1:6379> GET num
"5"

# 语法:DECRBY key num,自减指定的数量
127.0.0.1:6379> DECRBY num 4
(integer) 1
127.0.0.1:6379> GET num
"1"

字符串操作

  • 获取字符串长度
# 语法:STRLEN key
127.0.0.1:6379> SET strlen "hello world"
OK
127.0.0.1:6379> STRLEN strlen
(integer) 11
  • 追加字符串
# 语法:APPEND key str
127.0.0.1:6379> APPEND strlen "hello redis"
(integer) 22
127.0.0.1:6379> GET strlen
"hello worldhello redis"

设置过期时间

  • 设置并指定过期秒数
# 语法:SETEX key 60 val
127.0.0.1:6379> SETEX age 60 val
OK
127.0.0.1:6379> TTL age
(integer) 49
  • key不存在才设置(分布式锁)
# 语法:SETNX key val
127.0.0.1:6379> SETNX age 18
(integer) 0
127.0.0.1:6379> GET age
"val"

python操作redis

下载包依赖

pip install redis

示例:

import redis

r = redis.Redis(
    host="10.37.97.56",
    port=6379,
    db=0,
    password="123456",
    decode_responses=True,
    retry_on_timeout=True,
)

# 设置key
r.set("name", "huangSir-devops")
# 获取key
print(r.get("name")) #huangSir-devops
# 删除key
r.delete("name")
print(r.get("name")) #None
# 设置过期时间
r.setex("name",600, "huangSir-devops")
print(r.ttl("name")) #600

# 批量设置
r.mset({'k1': 'v1', 'k2': 'v2', 'k3': 'v3'})

# 批量获取
print(r.mget('k1', 'k2', 'k3'))

# 数值自增
print(r.incr("count")) # 1
print(r.incr("count",5))# 7

# 判断key是否存在
print(r.exists('name'))  # 1 存在,0 不存在

# 获取旧值,设置新值
r.set('username', 'old_name')
old_val = r.getset('username', 'new_name')
print(old_val)  # old_name
posted @ 2026-04-13 11:48  huangSir-devops  阅读(5)  评论(0)    收藏  举报
作者:你的名字
出处:你的博客链接
本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。