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

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
cat

127.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) 2

127.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 range

127.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 range

127.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 range

127.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 range
 
127.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.kler.cn/a/396097.html

相关文章:

  • 探索IDE的无限可能:使用技巧与插件推荐
  • 卡尔曼滤波:从理论到应用的简介
  • 【Vue】Vue3.0(二十四)Vue3.0中$refs 、$parent 的概念和使用场景
  • 【Linux】获得同一子网下当前在线设备IP/Latency/MAC 通过nmap指定CIDR扫描当前在线设备
  • 基于Java Springboot快递物流管理系统
  • 【MYSQL】数据库日志 (了解即可)
  • 自动化运维(k8s):一键获取指定命名空间镜像包脚本
  • 衡石科技BI如何助力企业实现数字化转型
  • Spring Boot编程训练系统:敏捷开发与持续集成
  • My_SQL day3
  • 如何在 untitled 软件中安装 Scala插件
  • 微服务学习重点:底层的实现逻辑
  • java8之Stream流
  • 方法论-WPS模型(高效沟通和决策分析的框架)
  • 【软件工程】具体的设计方法(等价类、边界值、场景法)
  • 【JAVA】使用IDEA创建maven聚合项目
  • 2024React面试精选——持续更新
  • Pycharm 配置 Poetry
  • 【Android、IOS、Flutter、鸿蒙、ReactNative 】启动页
  • 初始 html
  • VSCode可以安装最新版,并且可以对应Node 12和npm 6
  • 多智能体系统实现无直接通信协同
  • Casio推出情感AI宠物机器人Moflin
  • 前后端交互之动态列
  • [CKS] 使用ingress公开https服务
  • 【大模型实战篇】vLLM的由来以及大模型部署、推理加速实践