首页 > 编程知识 正文

redis五种基本数据类型,redis五大数据类型

时间:2023-05-03 16:39:43 阅读:23170 作者:1425

目录

字符串类型

SET和GET

存储字符串的编码方式

列表列表类型

推送和POP

作为轻量级键值数据库,Redis与上一课学习的关系数据库不同,使用Redis进行数据存储服务时,不需要担心存储模式和表的结构,也不需要在SQL语句中操作中的数据Redis支持的数据结构包括字符串类型、列表类型、散列类型和集合类型。 以下日志总结了以前学习Redis的过程,从基本Redis数据类型开始。

字符串类型SET和GET首先是字符串类型。 Redis是密钥值存储格式的数据库,其中所有密钥必须是字符串类型。 如果要将字符串数据与密钥相关联,请使用SET命令。 例如,如下所示

set " S1 " " hello "

前面的“s1”为键key,后面的“hello”为值value,如果SET命令成功,则返回OK。 然后可以使用命令GET根据保存时绑定的密钥检索值。

使用GET命令获取Redis中不存在的密钥时,将返回nil。 我们想修改某个字符串时,可以使用APPEND命令。 下面,如果要覆盖整个内容,可以更改一个全新的字符串,然后直接使用SET命令设置该键的字符串以完成覆盖。

创建新字符串时,SET命令可能会错误地复盖以前存在的密钥的值。 要避免这种情况,请选择使用SETNX命令。 它在创建时检查密钥是否存在,如果密钥不存在,则设置密钥值对并返回1,如果密钥已经存在,则返回0,而不复盖原始密钥对的值。

可以看出,键s1已经存在,由于值是我们之前设定的“hello zyrld”,因此SETNX命令返回0,即使是GET命令,原始字符串也没有被改写为“hello world”。 然后,如果使用SETNX设置不存在的密钥,则返回1,指示创建成功。

与SET和GET相关的命令还有MSET和MGET。 功能是可以通过MSET一次创建多个键值,从而MGET一次获取多个键值。

使用MSET和MGET的好处是,在一次客户端和服务器通信中可以设置或检索多个信息,无需多次发送SET和GET命令,减少了网络开销。

其他处理字符串的命令包括APPEND将字符串连接到字符串末尾、STRLEN返回字符串的长度以及SETRANGE覆盖字符串。

首先,是APPEND命令。 append " s1 " " world "在键为S1的字符串后面连接字符串" world ",并返回成功执行后的新字符串的长度。 如果命令中不存在键值,例如“s2”,则Redis会首先将“s2”键与空字符串相关联,然后创建STRLEN “s1”直接返回与该键s1相关联的字符串的长度。 您可以看到它与APPEND命令返回的字符串的长度相同,为11。 SETRANGE命令可以从字符串指定的位置复盖字符串,字符串后缀从0开始,复盖完成后返回新的字符串长度。

存储字符串的编码方式

      关于字符串数据类型再简单总结一下关于其在Redis内部的编码方式,一共有三种:

int类型:用来编码可以通过64位有符号整数表示的字符串。embstr类型:用来编码长度小于或等于44字节的字符串。raw类型:用来编码长度大于44字节的字符串。

 

List列表类型 PUSH和POP

列表也是Redis中常用的一种数据结构,因为栈和队列都可以通过列表实现,列表里可以存储一组对象,然后与一个键相关联起来,使用列表时无需先创建一个空的列表,因为当我们向一个不存在的列表中插入元素时,Redis为首先为我们创建空列表并和键关联,同样的,我们也不用手动删除空列表的键,因为Redis会自动回收。来看列表的元素插入命令,有三条:RPUSH、LPUSH和LINSERT,它们在插入成功后都会返回新列表的长度:

      首先LPUSH命令向键为music_list的列表左端插入两个字符串元素”song_1”和”song_2”,这样Redis会自动创建一个空的列表并和music_list关联起来,接着RPUSH命令向列表的右端插入两个元素”song_3”和”song_4”,完成后可以用LRANGE命令来获取列表中所有的元素。这个LRANGE命令后面的0 -1两个参数表示的是什么意思呢?它表示的是整个列表,因为在Redis中索引是这样表示的,从左到右的方式索引是0到N-1,从右到左的方式索引是-1到-N,所以整个列表就是0到-1来表示。

      第三条插入命令是LINSERT,它可以将元素插入到列表中指定元素的前面或后面,如上图AFTER “song_1”表示在”song_1”后面插入元素。Redis还提供了一个LSET命令,更直接地向列表中指定索引位置设置元素。最后还有两条命令,LPUSHX和RPUSHX,和前面的SETNX类似,这两条指令只有在列表存在时才能将元素插入到列表中:

向不存在的列表中插入元素时,插入失败返回0,插入成功后返回新列表的长度。

      有插入就有弹出,从列表左端or右端弹出元素的命令很容易联想到就是LPOP和RPOP,两者在成功执行后会返回弹出的元素值,如果对一个不存在的列表操作则返回nil。如果想一次性删除多个元素,还可以用LTRIM命令,只需在后面提供需删除的索引即可:

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。