Redis的string类型常用命令解析

举报
灰小猿 发表于 2022/02/15 16:53:32 2022/02/15
【摘要】 hello,你好呀,我是灰小猿,一个超会写bug的程序猿!今天我们继续来讲解在Redis的学习中string类型的数据都有哪些常用的命令,以及这些命令的作用和操作。 今日学习内容先问大家一个问题?你知道Java的数据类型有哪些吗?很多小伙伴肯定会直接想到int、byte、string等等~~~但是如果这样回答就错啦!Java中的数据类型包括:基本数据类型和引用数据类型,其中基本数据类型包括:...

hello,你好呀,我是灰小猿,一个超会写bug的程序猿!

今天我们继续来讲解在Redis的学习中string类型的数据都有哪些常用的命令,以及这些命令的作用和操作。

今日学习内容

先问大家一个问题?你知道Java的数据类型有哪些吗?很多小伙伴肯定会直接想到int、byte、string等等~~~但是如果这样回答就错啦!

Java中的数据类型包括:基本数据类型和引用数据类型,其中基本数据类型包括:byte、short、int、long、double、float、char、boolean八种,而引用数据类型则是另外三种,分别是类、接口和数组!注意是没有string类型的,这可是面试的一个坑哈!

而在Redis中也是有数据类型的,和Java中有所不同,在Redis中有五大数据类型,分别是String、List、Set、Hash和Zset。而这五种数据类型中的每一个,都对应着很多不同的使用场景。接下来我们就先来学习一下在Redis中操作string字符串的命令有哪些?

String类型命令操作

String类型是在Redis中最常用的数据类型,它也是很多程序员在日常开发中最常使用甚至只会用的数据类型,这也就导致很多人在使用Redis的时候,就只知道使用string类型,而忽视了其他数据类型的重要性。所以我也希望大家在学习完这篇文章之后,对Redis中的数据类型有一个新的认识,不要只使用String类型进行Redis的操作啦!

注意:在Redis的客户端中进行操作之前,一定要保证Redis的服务器界面处于开启状态,否则会出现客户端拒绝访问或打不开的情况哈!

设置指定key的值

Redis中给string类型的数据设置指定key的方法就是最基本的设置key-value的方法,

语法如下:

SET key value

    key为索引
    value为对应的值

例如我们要设置索引为k3,值为v3的键值对数据

127.0.0.1:6379> SET k3 v3
OK

返回值为ok,则说明设置成功!

获取指定key的值

如果我们已经在Redis中设置了数据,那么我们可以通过该数据的key来获取它,语法格式如下:

GET key

    key为要获取的值对应的索引

例如我们获取刚才输入的索引为k3,值为v3的数据,如果该索引存在,那么将会返回对应的值,如果不存在就会返回(nil)也就是null的意思。

127.0.0.1:6379> GET k3
"v3"
127.0.0.1:6379> GET k4
(nil)

返回key中字符串值的子串

这个命令的作用是获取Redis中已经存在的字符串的子串,同时我们可以指定一个下标索引,指定要获取哪一段字符。命令的格式如下:

GETRANGE key start end

    key为字符串的索引
    start为截取的起始下标
    end为截取的终止下标

比如我们截取索引为“mykey”,值为“huixiaoyuan”的数据的子串,

127.0.0.1:6379> GETRANGE mykey 2 5
"ixia"
127.0.0.1:6379> GETRANGE mykey 2 -1
"ixiaoyuan"
127.0.0.1:6379> GETRANGE mykey 1 100
"uixiaoyuan"

讲解一下上面的代码,因为字符串的起始下标是0,所以第2个对应的字符是“i”,如果想要截取字符串从某一个字符到最后部分的子串,那么可以直接将最后一个参数设置为-1.

如果你设置的获取子串的范围比较大,已经超出了字符串原本的长度,那么只会返回到字符串的最后一个字符!

获取多个给定key的值

与GET命令不同,GET命令只能获取一个key对应的值,而这个命令可以用于获取多个key对应的值,格式如下:

MGET key1 [key2...]

    在MGET的后面可以追加多个索引,以空格分开

如我们来获取一下mykey、mykey1、mykey2分别对应的值,

127.0.0.1:6379> MGET mykey mykey1 mykey2
1) "huixiaoyuan"
2) "value1"
3) "value2"

返回key所对应的字符串的长度

这个命令的作用是获取到当前索引对应的字符串的长度,格式如下:

STRLEN key

    key为字符串对应的索引

127.0.0.1:6379> STRLEN mykey
(integer) 11

设置一个或多个键值对

我们知道SET命令的作用是设置一个键值对,但是如果有多个键值对同时设置呢?这个时候就可以使用这个命令了,格式如下:

MSET key1 value1 [key2 value2 ...]

    key1 value1为要设置的第一个键值对,之后的以空格分隔

如下我们设置同时设置三个键值对

127.0.0.1:6379> MSET k1 v1 k2 v2 k3 v3
OK

和上面这个命令相对的还有一个,该命令仅能在key不存在的情况下才能设置,否则所有的key-value都将会赋值失败,格式如下:

MSETNX key1 value1 [key2 value2 ...]

    key1 value1为要设置的第一个键值对,之后的以空格分隔

如我们给已经存在的k4设置值,那么返回0,说明设置失败,如果设置成功,则会返回1

127.0.0.1:6379> MSETNX k1 v1 k4 v4
(integer) 0
127.0.0.1:6379> MSETNX k4 v4 k5 v5
(integer) 1

将key中所存储的数值加一

这个命令可以将我们存储的字符的值加1,之后返回相加后的结果,但是如果该key对应的字符不是一个数的话,就会返回一个错误信息,格式如下:

INCR key

    key为要加1的数对应的索引

如下我们给刚才设置的k8加1,那么就会报错,重新设置一个数值的键值对,再进行加1,就可以返回对应的数据

127.0.0.1:6379> INCR k8
(error) ERR value is not an integer or out of range
127.0.0.1:6379> SET num1 10
OK
127.0.0.1:6379> INCR num1
(integer) 11

与INCR 命令对应的还有一个INCRBY 该命令可以给指定的key对应的数据加上指定的增量,格式如下:

INCRBY key increment

    key为索引
    increment为要增加的值

127.0.0.1:6379> INCRBY num1 5
(integer) 16

将key中所存储的数值减一

既然存在增加的操作,那么对应着也就是存在减少的操作,格式如下:

DECR key

    key为要加1的数对应的索引

上一步我们将num1对应的数值加5后得到16,现在我们对其进行减一操作。

127.0.0.1:6379> DECR num1
(integer) 15

与这个命令对应的还有减指定的数据的命令,格式如下:

DECRBY key increment

    key为索引
    decrement为要增加的值

127.0.0.1:6379> DECRBY num1 2
(integer) 13

字符串追加

如果 key 已经存在并且是一个字符串, APPEND 命令将指定的 value 追加到该 key 原来值(value)的末尾。返回的是追加后的长度,格式如下:

APPEND key value

    key为索引
    value为要追加的字符串

如我们在mykey1-value1的后面追加“hello”

127.0.0.1:6379> APPEND mykey1 hello
(integer) 11
127.0.0.1:6379> GET mykey1
"value1hello"

以上就是在Redis中操作string类型字符的常用命令操作,之后我还会继续和大家分享Redis的其他几种数据类型的操作和使用!

我是灰小猿,我们下期见!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。