【redis系列】(二)redis中五种value类型与其常用方法

前言

redis是一个内存中的key-value型数据库。

也就是说,该数据库中的每条记录,都是由一个key和一个value构成的,其中value有五种类型:字符串(strings)散列(hashes)列表(list)集合(set)有序集合(sorted set)

不知道各位小伙伴有没有听过memcache这种技术,这种技术也是内存中的key-value型数据库。

与redis的唯一区别就是,memcache的value没有类型之分,而这也是memcache被redis取代的直接原因。

正是因为redis的value类型有这么多种,并且每种类型的value都有不同的处理方法,可以让一些计算发生在服务端,从而减轻客户端的压力。

那么这篇文章我们就来介绍一下redis中五种value类型的基本操作方法。

不过在介绍value的类型之前,需要介绍一下本文的测试工具——redis cli

redis cli就是redis中的命令行工具

根据上一篇文章的介绍配置好环境后,在命令行中输入redis-cli即可进入redis的命令行界面,如下图所示:

在这里插入图片描述
如果您运行不成功,请参照这篇文章进行环境配置。

value介绍

所谓“授人以鱼不如授人以渔”,本文在介绍不同的value及其常用方法前,先介绍一个无往不利的命令——help。

就像linux系统中的man命令,help也提供了各种命令的讲解。

通过这个命令就可以自行查看各种类型的api,以后遇到问题就可以自行解决啦。

【redis系列】(二)redis中五种value类型与其常用方法_第1张图片

value的type与encoding

在正式介绍不同的value类型之前,先来介绍一个redis中key上的两个属性——typeencoding

这两个属性用来标记value的类型。

其中,type就是我们接下来要介绍的五种类型,而encoding则是更细致的区分value,在string类型的value中就会看到encoding的不同。

字符串(string)

这种类型的value的type就会被标记成string,但是encoding会明确的反应value的数据类型,看下面这段命令:

> set k1 1
OK
> type k1
string
> object encoding k1
"int"

> set k2 hello
OK
> type k2
string
> object encoding k2
"embstr"

同样都是string类型的value,encoding却一个是int,一个是embstr

通过上面这段命令我们可以看出,虽然同为string类型的value,具体的类型也会有不同,下面我们就来介绍同为string类型的不同的三种value。

字符串

对于一个字符串类型的数据,我们预期能有什么操作呢?

set/get

这两个操作很简单,就是简单的赋值与获取操作。

> SET k1 hello
OK
> GET k1
"hello"

mset/mget

用法与上面的两个命令相同,但是可以同时设置多个key的值,并且是个原子操作,也就是说,如果一个设置失败了,那么整个命令都不会成功。

append

这个命令也是顾名思义,在某个string后面追加一些字符

> append k1 world
(integer) 10
> get k1
"helloworld"

setrange/getrange

这两个操作看上去就不是那么直观了,这个时候就可以利用help命令来查看这个命令的用法。

> help setrange
  SETRANGE key offset value
  summary: Overwrite part of a string at key starting at the specified offset
  since: 2.2.0
  group: string

根据帮助文档,我们就知道,这两个命令是从指定的位置开始重写字符串。

那么我们就能推断出,用法大致如下:

> setrange k1 5 " redis"
(integer) 11
> get k1
"hello redis"

strlen

这个命令也很简单啦,就是得到字符串的长度嘛!

> set k1 "hello world"
OK
> strlen k1
(integer) 11

数值类型

没错,在redis中,数值类型的value也归类在字符串类型中,并且可以对这种类型的数据进行数值运算。

incr、incrby

这两个操作是我们对数值类型的数据经常进行的操作。

其中,incr是把数值增一,而incrby可以指定增加的数值

用法如下:

> set k1 0
OK
> incr k1
(integer) 1
> get k1
"1"

> i

你可能感兴趣的:(redis)