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
本文来自博客园,作者:huangSir-devops,转载请注明原文链接:https://www.cnblogs.com/huangSir-devops/p/19858680,微信Vac6666666,欢迎交流

浙公网安备 33010602011771号