尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Redis的string类及基础指令
Redis的string类及基础指令数据结构和内部编码string1️⃣字符串数据类型2️⃣内部编码编码说明int存储64位8个字节有符号整数时使用embstr短字符串专用内存分配效率更高raw长字符串使用的基础动态字符串这些内部编码会随着存入的数据变化进行变换比如数字和字符一起存会让int转为embstr或者raw针对汉字的存储在reids的客户端是什么编码存入时就是什么编码127.0.0.1:6379 set key 你好 OK 127.0.0.1:6379 get key \xe4\xbd\xa0\xe5\xa5\xbd 这里 \xe4\xbd\xa0 就是 你 的UTF-8的编码\xe5\xa5\xbd 这个就是 好 的编码想要Redis能够get到汉字可以在启动客户端的时候使用这样的命令redis-cli --rawubuntu:~$ redis-cli --raw 127.0.0.1:6379 get key 你好3️⃣常见指令1.1 SET将 string 类型的 value 设置到 key 中。如果 key 之前存在则覆盖无论原来的数据类型是什么。之 前关于此 key 的 TTL 也全部失效。语法SET key value [expiration EX seconds|PX milliseconds] [NX|XX]SET 命令支持多种选项来影响它的行为:EX seconds 使用秒作为单位设置key的过期时间PX milliseconds 使用毫秒为单位设置key的过期时间NX 只在key不存在时才进行设置如果key存在则该命令不执行XX 只在key存在时才进行设置如果key不存在则该命令不执行注意[ | ] 这表示中括号里面的设置可选但是只能选择由 | 分割的其中一个上面的部分命令可以进行合并SETNXSETEXPSETEX等这些算是旧命令了返回值如果设置成功返回 OK 如果由于 SET 指定了 NX 或者 XX 但条件不满足SET 不会执行并返回 (nil)EX127.0.0.1:6379 SET key1 hello EX 100 OK 127.0.0.1:6379 ttl key1 (integer) 92 127.0.0.1:6379 get key1 hello127.0.0.1:6379 SETEX key2 100 world OK 127.0.0.1:6379 ttl key2 (integer) 95 127.0.0.1:6379 get key2 worldNX127.0.0.1:6379 exists key3 (integer) 0 127.0.0.1:6379 set key3 hello nx OK 127.0.0.1:6379 set key3 world nx (nil) 127.0.0.1:6379 get key3 hello127.0.0.1:6379 exists key4 (integer) 0 127.0.0.1:6379 setnx key4 hello (integer) 1 127.0.0.1:6379 setnx key4 world (integer) 1 127.0.0.1:6379 get key4 helloXX127.0.0.1:6379 exists key5 (integer) 0 127.0.0.1:6379 set key5 hello xx (integer) 0 127.0.0.1:6379 set key5 hello OK 127.0.0.1:6379 set key5 hello xx OK 127.0.0.1:6379 get key5 hello1.2 GET获取 key 对应的 value。如果 key 不存在返回 nil。如果 value 的数据类型不是 string会报错语法GET key返回值key 对应的 value或者 nil 当 key 不存在示例127.0.0.1:6379 get key (nil) 127.0.0.1:6379 set key abc OK 127.0.0.1:6379 get key abc1.3 MSET一次性设置多个 key 的值语法MSET key value [key value ...]返回值永远是 OK示例127.0.0.1:6379 mset key1 aa key2 bb key3 cc OK 127.0.0.1:6379 mget key1 key2 key3 1) aa 2) bb 3) cc1.4 MGET一次性获取多个 key 的值。如果对应的 key 不存在或者对应的数据类型不是 string返回 nil语法MGET key [key ...]返回值对应 value 的列表示例127.0.0.1:6379 mset key1 aa key2 bb key3 cc OK 127.0.0.1:6379 mget key1 key2 key3 1) aa 2) bb 3) cc 127.0.0.1:6379 mget key4 1) (nil)使用 mget / mset 由于可以有效地减少了网络时间所以性能相较更高2.1 INCR将 key 对应的 string 表示的数字加一。如果 key 不存在则视为 key 对应的 value 是 0。如果 key 对 应的 string 不是一个整型或者范围超过了 64 位有符号整型则报错语法INCR key返回值integer 类型的加完后的数值示例redis EXISTS mykey (integer) 0 redis INCR mykey (integer) 1 redis SET mykey 10 OK redis INCR mykey (integer) 11 redis SET mykey 234293482390480948029348230948 OK redis INCR mykey (error) value is not an integer or out of range redis SET mykey not a number OK redis INCR mykey (error) value is not an integer or out of range2.2 INCRBY将 key 对应的 string 表示的数字加上对应的值。如果 key 不存在则视为 key 对应的 value 是 0。如 果 key 对应的 string 不是一个整型或者范围超过了 64 位有符号整型则报错语法INCRBY key decrement返回值integer 类型的加完后的数值示例redis EXISTS mykey (integer) 0 redis INCRBY mykey 3 (integer) 3 redis SET mykey 10 OK redis INCRBY mykey 3 (integer) 13 redis INCRBY mykey not a number (error) ERR value is not an integer or out of range redis SET mykey 234293482390480948029348230948 OK redis INCRBY mykey 3 (error) value is not an integer or out of range redis SET mykey not a number OK redis INCRBY mykey 3 (error) value is not an integer or out of range2.3 DECR将 key 对应的 string 表示的数字减一。如果 key 不存在则视为 key 对应的 value 是 0。如果 key 对 应的 string 不是一个整型或者范围超过了 64 位有符号整型则报错语法DECR key返回值integer 类型的减完后的数值示例redis EXISTS mykey (integer) 0 redis DECR mykey (integer) -1 redis SET mykey 10 OK redis DECR mykey (integer) 9 redis SET mykey 234293482390480948029348230948 OK redis DECR mykey (error) value is not an integer or out of range redis SET mykey not a number OK redis DECR mykey (error) value is not an integer or out of range2.4 DECRBY将 key 对应的 string 表示的数字减去对应的值。如果 key 不存在则视为 key 对应的 value 是 0。如 果 key 对应的 string 不是一个整型或者范围超过了 64 位有符号整型则报错语法DECRBY key decrement返回值integer 类型的减完后的数值示例redis EXISTS mykey (integer) 0 redis DECRBY mykey 3 (integer) -3 redis SET mykey 10 OK redis DECRBY mykey 3 (integer) 7 redis DECRBY mykey not a number (error) ERR value is not an integer or out of range redis SET mykey 234293482390480948029348230948 OK redis DECRBY mykey 3 (error) value is not an integer or out of range redis SET mykey not a number OK redis DECRBY mykey 3 (error) value is not an integer or out of range2.5 INCRBYFLOAT将 key 对应的 string 表示的浮点数加上对应的值。如果对应的值是负数则视为减去对应的值。如果 key 不存在则视为 key 对应的 value 是 0。如果 key 对应的不是 string或者不是一个浮点数则报 错。允许采用科学计数法表示浮点数语法INCRBYFLOAT key increment返回值加/减完后的数值示例redis SET mykey 10.50 OK redis INCRBYFLOAT mykey 0.1 10.6 redis INCRBYFLOAT mykey -5 5.6 redis SET mykey 5.0e3 OK redis INCRBYFLOAT mykey 2.0e2 52003.1 APPEND如果 key 已经存在并且是一个 string命令会将 value 追加到原有 string 的后边。如果 key 不存在 则效果等同于 SET 命令语法APPEND KEY VALUE返回值追加完成之后 string 的长度示例redis EXISTS mykey (integer) 0 redis APPEND mykey Hello (integer) 5 redis GET mykey Hello redis APPEND mykey World (integer) 11 redis GET mykey Hello World3.2 GETRANGE返回 key 对应的 string 的子串由 start 和 end 确定左闭右闭。可以使用负数表示倒数。-1 代表 倒数第一个字符-2 代表倒数第二个其他的与此类似。超过范围的偏移量会根据 string 的长度调整 成正确的值语法GETRANGE key start end返回值string 类型的子串示例redis SET mykey This is a string OK redis GETRANGE mykey 0 3 This redis GETRANGE mykey -3 -1 ing redis GETRANGE mykey 0 -1 This is a string redis GETRANGE mykey 10 100 string3.3 SETRANGE覆盖字符串的一部分从指定的偏移开始语法SETRANGE key offset value返回值替换后的 string 的长度示例redis SET key1 Hello World OK redis SETRANGE key1 6 Redis (integer) 11 redis GET key1 Hello Redis3.4 STRLEN获取 key 对应的 string 的长度。当 key 存放的类似不是 string 时报错语法STRLEN key返回值string 的长度。或者当 key 不存在时返回 0示例redis SET mykey Hello world OK redis STRLEN mykey (integer) 11 redis STRLEN nonexisting (integer) 0
RELATED

相关推荐

广告 CTR 预估模型的 GPU 推理优化:大规模稀疏特征 Embedding 的显存管理与混合精度计算

广告 CTR 预估模型的 GPU 推理优化:大规模稀疏特征 Embedding 的显存管理与混合精度计算

广告 CTR 预估模型的 GPU 推理优化:大规模稀疏特征 Embedding 的显存管理与混合精度计算 一、CTR 模型的特征爆炸:当 100 亿参数中 99% 是 Embedding Table CTR 预估模型的架构特性与其他深度学习模型完全不同。一个典型的 Wide&Deep 或 DLRM 模型&a…

📅 2026/10/27 22:29:45
GripMock扩展开发指南:自定义插件与高级功能实现

GripMock扩展开发指南:自定义插件与高级功能实现

GripMock扩展开发指南:自定义插件与高级功能实现 【免费下载链接】gripmock gRPC Mock Server 项目地址: https://gitcode.com/gh_mirrors/gr/gripmock GripMock是一款功能强大的gRPC Mock Server,能够帮助开发者在软件测试和开发阶段快速搭建模拟…

📅 2026/10/16 2:21:38
学术写作如何保留Grok原格式?99%研究生踩过的坑,AI导出鸭一招救命!

学术写作如何保留Grok原格式?99%研究生踩过的坑,AI导出鸭一招救命!

学术写作如何保留Grok原格式?99%研究生踩过的坑,AI导出鸭一招救命!格式崩一次,熬夜两小时。这不是技术问题,是学术生产力血案。凌晨两点,我盯着屏幕上那个“粘贴后”的Word文档,血压飙升。 Grok…

📅 2026/10/20 0:31:25
MORE NEWS

更多资讯

📰

温州电工证报考时间怎么安排?郑州报考避坑指南帮你理清流程

温州电工证报考时间怎么安排?郑州报考避坑指南帮你理清流程 实操考试心里没底怕挂科,这几乎是每个准备考电工证的朋友心里的疙瘩。特别是像你这样,刚毕业的郑州工程类学生,面对第一次实操考试,焦虑是正常的。温州电工证报考时间虽然固定,但具体怎么安排…

📰

技工学校电工证考证不知道去哪报名怕被中介坑的良心建议

技工学校电工证考证不知道去哪报名怕被中介坑的良心建议 你是不是正在为【技工学校电工证考证】发愁?找培训机构怕被坑,自己又不清楚流程,担心花冤枉钱还拿不到证?别急,我用10年经验告诉你,这事儿真不难。…

📰

高压电工证含金量高怎么考?考前押题帮你搞定

高压电工证含金量高怎么考?考前押题帮你搞定 证书过期了不知道怎么复审延期,这事儿千万别拖。高压电工证含金量高,但一旦过期就失去效力,不仅影响日常工作,还可能面临罚款或停工。很多持证人因为不了解流程,错失了复审时间。其实,复审并不复杂,关键是…

📰

廊坊大城电工证怎么考?全国通用的证书怎么用?

廊坊大城电工证怎么考?全国通用的证书怎么用? 你是不是正愁手里没有特种作业证,连面试机会都拿不到?现在电工证成了很多行业的准入门槛, 廊坊大城电工证 因为 全国通用…

📰

电工证台州复审延期怎么办理

台州电工证怕考不过白交培训费?看看郑州报考避坑指南 怕考不过白交培训费?别急,台州电工证考前准备做对了,90%的人都能一次通过。很多人报名前对考试流程、内容、题型、复习资料一知半解,结果考试挂了,培训费打了水漂。如果你是驻马店的应届工程类毕…

📰

南昌去哪里考电工证好怎么报名 电工证实操考试心里没底怕挂科怎么办

南昌去哪里考电工证好怎么报名 电工证实操考试心里没底怕挂科怎么办 实操考试心里没底怕挂科,这是大多数第一次考电工证的朋友的真实写照。尤其是对于在南昌从事电工相关工作的朋友们来说,不管是低压还是高压电工证,拿到手才真正能上工地、进项目,否则只…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬