Redis数据类型string和Hash详解

摘要:redis中有五大数据类型,分别是string、list、set、hash和zset。

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

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

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

string类型命令操作

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

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

设置指定key的值

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

语法如下:

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

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

获取指定key的值

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

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

返回key中字符串值的子串

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

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

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

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

获取多个给定key的值

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

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

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

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

设置一个或多个键值对

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

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

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

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

将key中所存储的数值加一

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

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

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

将key中所存储的数值减一

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

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

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

字符串追加

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

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

hash类型

hash类型是一个string类型的field(字段)和value(值)的映射表,它的作用是可以用来存储我们定义的数据对象,所以简单来说它是一个key下面存储了多个key-value的情况,给大家简单的话一个hash的结构图:

接下来我们来简单讲一下在redis中对于hash这种数据类型,常用的几个命令,

设置一个hash数据

设置hash数据所使用的命令不是set,而是hmset,你可以理解为h代表hash的意思,m代表map的意思,该命令的格式如下:

hmset key fieid1 value1 [fieid2 value2…]

  • key为这个hash数据对应的唯一性索引
  • field为下面存储的一个键值对的键
  • value为该键对应的值

如我们设置key为“myhash”,里面存储的field分别为name-huixiaoyuan、sex-nan、age-3的三个键值对

获取指定哈希表中所有的字段和值

查看指定哈希表中所有的字段和值的命令是hgetall,作用是取出该hash中所有的数据,格式如下

hgetall key

  • 其中key为对应着这个hash数据的索引

如我们查看刚才设置的hash数据

获取存储在哈希表中指定字段的值

上一个命令是获取所有的字段,那么现在这个命令是只获取指定哈希表中指定字段的值,命令的格式如下:

hget key field

  • key哈希表的索引
  • field获取的值对应的字段

如我们获取上面的哈希表中字段为name对应的值

删除一个或多个哈希表字段

删除一个或多个哈希表字段的命令是hdel,该命令可以删除指定哈希表中指定的字段,以及其对应的值,格式如下:

hdel key field1 [field2…]

  • key为指定的哈希表的索引
  • field为要删除的值对应的字段,如果要删除多个就以空格分开

如我们要删除索引为“myhash”的哈希表中值为“3”,对应字段为“age”的字段和值为“nan”,对应字段为“sex”的两个字段。

获取哈希表中字段的数量

该命令可以获取指定哈希表中字段的数量,格式如下:

hlen key

  • key为指定的哈希表的索引

获取哈希表中的所有字段

该命令可以获取指定哈希表中所有的字段,但是不返回字段对应的值,格式如下:

hkeys key

  • key为指定的哈希表的索引

获取哈希表中所有的值

上一个命令是获取到指定哈希表中所有的字段,但是不返回字段对应的值,那么这个命令就是获取到所有的值,而不返回其对应的字段,格式如下:

hvals key

  • key为指定的哈希表的索引

到此这篇关于redis数据类型string和hash详解的文章就介绍到这了,更多相关redis数据类型内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐