当前位置: 首页 > news >正文

Redis五大基本类型——String字符串命令详解(命令用法详解+思维导图详解)

目录

一、String字符串类型介绍

二、常见命令

1、SET

2、GET

3、MGET

4、MSET

·使用MGET 和 使用多次GET的区别

5、DEL

6、SETNX

·SET、SET NX和SET XX执行流程

7、INCR

8、INCRBY

9、DECR

10、DECYBY

11、INCRBYFLOAT

12、APPEND

13、GETRANGE

14、SETRANGE

15、STRLEN

三、命令小结


一、String字符串类型介绍

        字符串类型是Redis 最基础的数据类型,Redis中所有键的类型都是字符串类型。其他几种数据库类型都是在字符串类型基础上构建的,例如列表和集合的元素类型都是字符串类型

        字符串类型的实际可以是字符串,包含一般格式的字符串或者类似JSON、XML格式的字符串;也可以是数字,包括整数和浮点型;也可以是二进制流数据,例如图片、音频、视频等。但要注意,一个字符串的长度不可以超过512MB。

        由于Redis内部存储字符串完全是按照二进制流的形式保存的,所以Redis是不处理字符集编码问题的,客户端传入的命令中使用的是什么字符集编码,就存储什么字符集编码。

        想显示中文,需要在连接redis服务器时,使用命令:redis-cli --raw

二、常见命令

1、SET

        将String类型的value设置到key当中。如果key之前存在,无论原来的数据类型是什么,覆盖。之前关于此key的TTL也全部失效。

语法:

SET key value [EX seconds|PX milliseconds|KEEPTTL] [NX|XX]

[ ]内是选填项,其他的是必填项

EX seconds:以秒作为单位设置key的过期时间

PX milliseconds:以毫秒作为单位设置key的过期时间

KEEPTTL:保留设置前指定键的生存时间

NX:只在key不存在时才设置,如果设置前key已存在,则不执行

XX:只在key存在时才设置,如果设置前key不存在,则不执行

返回值:

如果设置成功,返回OK

如果设置失败,SET不会执行,并返回nil

示例:

127.0.0.1:6379> exists key
0
127.0.0.1:6379> SET key dog 
OK
127.0.0.1:6379> get key
dog
127.0.0.1:6379> SET key cat NX
(nil)
127.0.0.1:6379> get key
dog
127.0.0.1:6379> SET key cat XX
OK
127.0.0.1:6379> get key
cat127.0.0.1:6379> SET key1 111 NX
OK
127.0.0.1:6379> get key1
111
127.0.0.1:6379> SET key2 222 XX
(nil)
127.0.0.1:6379> get key2
(nil)127.0.0.1:6379> SET key "will expire in 10s" EX 10
OK
127.0.0.1:6379> get key
will expire in 10s
127.0.0.1:6379> get key  #10s后
(nil)

2、GET

        获取key对应的value。如果key不存在则返回nil,如果value的数据类型不是string,则会报错。

语法:

GET key

返回值:

key对应的value,或者nil

示例:

127.0.0.1:6379> set key1 111
OK
127.0.0.1:6379> get key1
111
127.0.0.1:6379> set key2 "111"
OK
127.0.0.1:6379> get key2
111
127.0.0.1:6379> del key1  #删除key1
1
127.0.0.1:6379> get key1
(nil)
127.0.0.1:6379> HSET key name dog  #设置一个不是String类型的key
1
127.0.0.1:6379> get key
WRONGTYPE Operation against a key holding the wrong kind of value

3、MGET

        一次性获取多个key的值。如果key不存在或者对应的的数据类型不是string,则返回nil。

语法:

MGET key [key ...]

返回值:

对应value的列表

示例:

127.0.0.1:6379> SET key1 111
OK
127.0.0.1:6379> SET key2 222
OK
127.0.0.1:6379> SET key3 333
OK
127.0.0.1:6379> MGET key1 key2 key3
111
222
333
127.0.0.1:6379> MGET key1 key2 key3 key4
111
222
333
(nil)

4、MSET

        一次性设置多个key的值。

语法:

MSET key value [key value ...]

返回值:

永远是OK

示例:

127.0.0.1:6379> MSET key1 111 key2 222 key3 333
OK
127.0.0.1:6379> get key1
"111"
127.0.0.1:6379> mget key1 key2 key3
1) "111"
2) "222"
3) "333"

·使用MGET 和 使用多次GET的区别

        如图所示,使用mget/mset 有效的减少了网络时间,所以性能相较多次使用get/set来说更高。使用批量操作可以有效的提高效率。

        但是要注意,由于redis是单线程的,一次批量传输或获取的数据不宜过多,避免因为单一命令执行时间过长导致redis阻塞~

5、DEL

        删除指定的key。

语法:

DEL key [key ...]

返回值:

删除的个数

示例:

127.0.0.1:6379> set key1 111
OK
127.0.0.1:6379> set key2 222
OK
127.0.0.1:6379> set key3 333
OK
127.0.0.1:6379> DEL key1
(integer) 1
127.0.0.1:6379> DEL key2 key3
(integer) 2127.0.0.1:6379> exists key
(integer) 0
127.0.0.1:6379> DEL key
(integer) 0

6、SETNX

        设置key-value,但只允许在 key 之前不存在的前提下。

语法:

 SETNX key value

返回值:

1表示设置成功

0表示没有设置

示例:

127.0.0.1:6379> SETNX key1 111
(integer) 1
127.0.0.1:6379> get key1
"111"
127.0.0.1:6379> SETNX key2 222
(integer) 1
127.0.0.1:6379> get key2
"222"
127.0.0.1:6379> SETNX key1 666
(integer) 0
127.0.0.1:6379> get key1
"111"

·SET、SET NX和SET XX执行流程

7、INCR

        将key对应的value表示的数字加一。如果key不存在们则视为key对应的value是0,创建key;如果key对应的string不是一个整数或者范围超过了64位有符号整数,则报错。

语法:

INCR key

返回值:

integer类型的加完后的数值

示例:

127.0.0.1:6379> EXISTS key1
(integer) 0
127.0.0.1:6379> INCR key1
(integer) 1
127.0.0.1:6379> get key1
"1"127.0.0.1:6379> set key2 222
OK
127.0.0.1:6379> INCR key2
(integer) 223
127.0.0.1:6379> get key2
"223"127.0.0.1:6379> set key3 three
OK
127.0.0.1:6379> incr key3
(error) ERR value is not an integer or out of range127.0.0.1:6379> set key3 33333333333333333333333333333333333333333333333333333333333333333333333333333333333333
OK
127.0.0.1:6379> INCR key3
(error) ERR value is not an integer or out of range

8、INCRBY

        将key对应的value表示的数字加上对应的值。如果key不存在们则视为key对应的value是0,创建key;如果key对应的string不是一个整数或者范围超过了64位有符号整数,则报错。

语法:

INCRBY key increment

返回值:

integer类型的加完后的数值

示例:

127.0.0.1:6379> exists key1
(integer) 0
127.0.0.1:6379> INCRBY key1 111
(integer) 111
127.0.0.1:6379> get key1
"111"127.0.0.1:6379> set key2 222
OK
127.0.0.1:6379> INCRBY key2 111
(integer) 333
127.0.0.1:6379> get key2
"333"127.0.0.1:6379> set key3 three
OK
127.0.0.1:6379> INCRBY key3 1
(error) ERR value is not an integer or out of range127.0.0.1:6379> set key3 333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
OK
127.0.0.1:6379> INCRBY key3 1
(error) ERR value is not an integer or out of range

9、DECR

        将key对应的value表示的数字减一。如果key不存在们则视为key对应的value是0,创建key;如果key对应的string不是一个整数或者范围超过了64位有符号整数,则报错。

语法:

DECR KEY

返回值:

integer类型的减完后的数值

示例:

127.0.0.1:6379> exists key1 
(integer) 0
127.0.0.1:6379> DECR key1
(integer) -1
127.0.0.1:6379> get key1
"-1"127.0.0.1:6379> set key2 222
OK
127.0.0.1:6379> DECR key2
(integer) 221
127.0.0.1:6379> get key2
"221"127.0.0.1:6379> set key3 three 
OK
127.0.0.1:6379> DECR key3
(error) ERR value is not an integer or out of range127.0.0.1:6379> set key3 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
OK
127.0.0.1:6379> DECR key3
(error) ERR value is not an integer or out of range

10、DECYBY

        将key对应的value表示的数字减去对应的值。如果key不存在们则视为key对应的value是0,创建key;如果key对应的string不是一个整数或者范围超过了64位有符号整数,则报错。

语法:

DECRBY key increment

返回值:

integer类型的减完后的数值

示例:

127.0.0.1:6379> exists key1
(integer) 0
127.0.0.1:6379> DECRBY key1 111
(integer) -111
127.0.0.1:6379> get key1
"-111"127.0.0.1:6379> set key2 222
OK
127.0.0.1:6379> DECRBY key2 111
(integer) 111
127.0.0.1:6379> get key2
"111"127.0.0.1:6379> set key3 three
OK
127.0.0.1:6379> DECRBY key3 1
(error) ERR value is not an integer or out of range127.0.0.1:6379> set key3 33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
OK
127.0.0.1:6379> DECRBY key3 1
(error) ERR value is not an integer or out of range

11、INCRBYFLOAT

        将key对应的value表示的浮点数加上对应的值。如果对应的是负数,则视为减去对应的值;如果key不存在们则视为key对应的value是0,创建key;如果key对应的string不是一个浮点数,则报错。允许使用科学记数法表示浮点数。

什么是科学记数法:

        科学记数法是一种记数的方法。把一个数表示成a与10的n次幂相乘的形式(1≤|a|<10,a不为分数形式,n为整数),这种记数法叫做科学记数法。当我们要标记或运算某个较大或较小且位数较多的数时,用科学记数法免去浪费很多空间和时间。

语法:

INCRBYFLOAT key increment

返回值:

加/减完后的数值

示例:

127.0.0.1:6379> exists key1
(integer) 0
127.0.0.1:6379> INCRBYFLOAT key1 1.1
"1.1"
127.0.0.1:6379> INCRBYFLOAT key1 -0.1
"1"127.0.0.1:6379> set key2 1.0e3
OK
127.0.0.1:6379> INCRBYFLOAT key2 100
"1100"
127.0.0.1:6379> INCRBYFLOAT key2 -100
"1000"

12、APPEND

        如果 key 已经存在并且是⼀个 string,命令会将 value 追加到原有 string 的后边。如果 key 不存在,则效果等同于 SET 命令。

语法:

APPEND key value

返回值:

追加完成后string的长度

示例:

127.0.0.1:6379> exists key1
(integer) 0
127.0.0.1:6379> APPEND key1 hello
(integer) 5
127.0.0.1:6379> get key1
"hello"
127.0.0.1:6379> APPEND key1 world
(integer) 10
127.0.0.1:6379> get key1
"helloworld"

13、GETRANGE

        返回 key 对应的 value的⼦串,由 start 和 end 确定(左闭右闭)。可以使⽤负数表⽰倒数。-1 代表倒数第⼀个字符,-2 代表倒数第⼆个,其他的与此类似。超过范围的偏移量会根据 string 的⻓度调整 成正确的值。

语法:

GETRANGE key start end

返回值:

string类型的字串

示例:

127.0.0.1:6379> get key1
"helloworld"
127.0.0.1:6379> GETRANGE key1 0 -1
"helloworld"
127.0.0.1:6379> GETRANGE key1 0 4
"hello"
127.0.0.1:6379> GETRANGE key1 -10 -1
"helloworld"
127.0.0.1:6379> GETRANGE key1 -100 100
"helloworld"
127.0.0.1:6379> GETRANGE key1 100 200
""

14、SETRANGE

        从指定的偏移开始覆盖字符串的一部分。

语法:

SETRANGE key offset value

返回值:

替换后的string的长度

示例:

127.0.0.1:6379> set key "hello world!"
OK
127.0.0.1:6379> get key
"hello world!"
127.0.0.1:6379> SETRANGE key 1 ooo
(integer) 12
127.0.0.1:6379> get key
"hoooo world!"
127.0.0.1:6379> SETRANGE key 6 aabbccdd
(integer) 14
127.0.0.1:6379> get key
"hoooo aabbccdd"

15、STRLEN

        获取key对应的value的长度,当key存放的类型不是string时,报错。

语法:

STRLEN key

返回值:

当key存在且value是string类型时,返回对应的长度

当key不存在时,返回0

示例:

127.0.0.1:6379> set key1 "hello world!!!"
OK
127.0.0.1:6379> STRLEN key1
(integer) 14
127.0.0.1:6379> exists key2
(integer) 0
127.0.0.1:6379> STRLEN key2
(integer) 0

三、命令小结


        以上就是 Redis五大基本类型——String字符串命令详解(命令用法详解+思维导图详解)的全部内容了,希望能对你有所帮助!你的点赞收藏关注是对我最大的支持!

http://www.lryc.cn/news/486029.html

相关文章:

  • Flutter中的Material Theme完全指南:从入门到实战
  • Python 第三方库 PyQt5 的安装
  • CSS基础也要进行模电实验
  • 贴代码框架PasteForm特性介绍之markdown和richtext
  • 3D Gaussian Splatting 代码层理解之Part3
  • Ceph 中PG与PGP的概述
  • 已解决:spark代码中sqlContext.createDataframe空指针异常
  • flutter字体大小切换案例 小字体,标准字体,大字体,超大字体案例
  • 智慧建造-运用Trimble技术将梦幻水族馆变为现实【上海沪敖3D】
  • 【NOIP提高组】计算系数
  • IDEA部署AI代写插件
  • 【阅读记录-章节1】Build a Large Language Model (From Scratch)
  • 微服务day08
  • JAVA接入WebScoket行情接口
  • 使用Axios函数库进行网络请求的使用指南
  • Vue2+ElementUI:用计算属性实现搜索框功能
  • 抖音热门素材去哪找?优质抖音视频素材网站推荐!
  • spring-cache concurrentHashMap 自定义过期时间
  • 解析传统及深度学习目标检测方法的原理与具体应用之道
  • shell数组
  • 高斯混合模型回归(Gaussian Mixture Model Regression,GMM回归)
  • 【3D Slicer】的小白入门使用指南八
  • 【流量分析】常见webshell流量分析
  • 基于树莓派的边缘端 AI 目标检测、目标跟踪、姿态估计 视频分析推理 加速方案:Hailo with ultralytics YOLOv8 YOLOv11
  • Java在算法竞赛中的常用方法
  • Vulnhub靶场案例渗透[10]- Momentum2
  • Spark RDD中常用聚合算子源码层面的对比分析
  • 计算机网络 (6)物理层的基本概念
  • 快速上手:Docker 安装详细教程(适用于 Windows、macOS、Linux)
  • kafka消费者出现频繁Rebalance