Redis中的String数据类型有哪些应用场景和特点?

摘要:概述 Redis存储数据的Value可以是一个String类型数据。String类型的Value是Redis中最基本,最常见的类型。String类型的Value中可以存放任意数据,包括数值型,甚至是二进制的图片、音频、视频、序列化对象等。一
概述 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