Fork me on GitHub

Redis数据类型之字符串(string)

 

1. string类型简介

string类型是二进制安全的,能够存储任意类型的字符串。

string类型是最常用到的数据类型,一种常用的用法就是将对象格式化为JSON字符串然后放到redis中,取出来的时候再反序列,不过如果序列化为二进制的话速度更快,占用空间更小。

一个字符串类型键允许存储的最大容量是512M

 

2. 如何使用

赋值

set <key> <value>

image

可以使用append命令追加值,如果指定的key不存在的话就相当于set key value,否则的话就在value后面追加,并将追加后的value的字节长度返回:

append <key> <value>

image

需要注意的是如果是中文的话,因为中文都是使用UTF-8编码的,一个中文占3个字节,所以当已经存在一个中文并追加另一个中文的时候,返回的长度是6:

image

使用mset可以同时设置多个值,格式是:

mset <key> <value> [<key> <value> …]

image

 

取值

使用get命令取值,取值的格式:

get <key>

当key存在时返回对应的value:

image

否则返回一个nil:

 image

使用mget可以同时取多个值,返回值是一个列表,当指定的某个key不存在时则返回nil:

mget <key> [<key> …]

image

 

取value字节长度

使用strlen取出指定key对应的value的字节长度

strlen <key>

image

需要注意的是string存储的时候对于中文是UTF-8编码的,一个中文对应着三个字节:

image

当指定的key不存在时,返回值是nil:

image

 

操作数字

当string中存储的是数字类型的时候,可以使用递增命令递增1,这个递增操作是原子操作。

当指定的key不存在时默认为0,即对于一个不存在的key递增的时候会返回1:

image

而对于一个已经存在的key,将其值加1返回:

image

incr递增只能用于整数类型,否则的话会抛出错误提示不是integer类型:

image

与incr对应的命令是decr,使用decr每次将指定的key递减1:

image

使用incrby、decrby可以指定每次递增递减的量:

image

使用incrbyfloat一次自增一个小数值:

image 

但是并没有decrbyfloat这样的操作,如果需要递减一个小数的话只需要递增一个负数就可以了:

image

总结一下数字操作:

incr 递增1
decy 递减1
incrby 递增指定的整数
decrby 递减指定的整数
incrbyfloat 递增指定的小数

所有的数字操作都是当指定的key不存在时就默认为0,并在此基础上操作。

 

.

posted @ 2017-11-06 14:19  CC11001100  阅读(1134)  评论(0编辑  收藏  举报