Redis数据类型之字符串(string)
1. string类型简介
string类型是二进制安全的,能够存储任意类型的字符串。
string类型是最常用到的数据类型,一种常用的用法就是将对象格式化为JSON字符串然后放到redis中,取出来的时候再反序列,不过如果序列化为二进制的话速度更快,占用空间更小。
一个字符串类型键允许存储的最大容量是512M。
2. 如何使用
赋值
set <key> <value>
可以使用append命令追加值,如果指定的key不存在的话就相当于set key value,否则的话就在value后面追加,并将追加后的value的字节长度返回:
append <key> <value>
需要注意的是如果是中文的话,因为中文都是使用UTF-8编码的,一个中文占3个字节,所以当已经存在一个中文并追加另一个中文的时候,返回的长度是6:
使用mset可以同时设置多个值,格式是:
mset <key> <value> [<key> <value> …]
取值
使用get命令取值,取值的格式:
get <key>
当key存在时返回对应的value:
否则返回一个nil:
使用mget可以同时取多个值,返回值是一个列表,当指定的某个key不存在时则返回nil:
mget <key> [<key> …]
取value字节长度
使用strlen取出指定key对应的value的字节长度:
strlen <key>
需要注意的是string存储的时候对于中文是UTF-8编码的,一个中文对应着三个字节:
当指定的key不存在时,返回值是nil:
操作数字
当string中存储的是数字类型的时候,可以使用递增命令递增1,这个递增操作是原子操作。
当指定的key不存在时默认为0,即对于一个不存在的key递增的时候会返回1:
而对于一个已经存在的key,将其值加1返回:
incr递增只能用于整数类型,否则的话会抛出错误提示不是integer类型:
与incr对应的命令是decr,使用decr每次将指定的key递减1:
使用incrby、decrby可以指定每次递增递减的量:
使用incrbyfloat一次自增一个小数值:
但是并没有decrbyfloat这样的操作,如果需要递减一个小数的话只需要递增一个负数就可以了:
总结一下数字操作:
incr 递增1 decy 递减1 incrby 递增指定的整数 decrby 递减指定的整数 incrbyfloat 递增指定的小数
所有的数字操作都是当指定的key不存在时就默认为0,并在此基础上操作。
.