Redis入门之字符串类型
字符串类型是Redis中最基本的数据类型,它能存储任何形式的字符串,它是二进制安全的,可以存储例如图片的二进制编码等.这是因为Reids的字符串类型并没有直接使用C语言风格的字符串(以空字符结尾的字符数组),而是构建了一种简单动态字符串 (simple dynamic string, SDS)的抽象类型.在后面的文章中会详细介绍Redis中字符串类型的实现.
下面我们一起看一下字符串的使用.
1. 赋值与取值
set key value
get value
set 和 get分别是设置键的值和获取键的值,例如:
如果我们再次为键名为key的键设置值,将会把原来的值覆盖掉,即键的值为键中最后设置的值.
2. 递增与递减数字
Redis中可以存储只有整数的字符串,对于这种字符串,Redis提供了INCR命令,其作用是将当前键的值自增1,并返回自增后的值.用法如下:
那么当键的值不是的字符串不是整数,会发生什么情况呢?实践说话:
当键值不是整数时,会报值不是整数或者超出范围的错误.
与INCR命令类似的是DECR命令,后者的作用是将键的值减1,当值不是整数的字符串时,也会出错.
3. 关于字符串的常用命令
3.1 增加指定的整数
INCRBY key increment
INCRBY 命令可以增加指定的整数.例如:
3.2 减少指定的整数
DECRBY key decrement
DECRBY 命令可以减少指定的整数.例如:
3.3 增加指定浮点数
INCRBYFLOAT key increment
INCRBYFLOAT命令的作用是将键的值增加指定的浮点数.例如:
3.4 向尾部追加值
APPEND key value
APPEND 的作用是向key对应的值后面追加字符串,如果键不存在,则创建该键,并将值设为value.该命令的返回值是追加后字符串的总长度.例如:
可以看到loveyou之间是没有空格的,如果我们想让两者中间有个空格分隔,可以这样做:
如果字符串中有空格,需要将字符串包含在引号内.同样,如果字符串中包含回车换行符"\n",也要放在引号内.
3.5 获取字符串的长度
STRLEN key
STRLEN命令的作用是获取字符串的长度
前面说过Redis中的字符串是二进制安全的,可以存储空格、0等字符,可以和普通字符串一样计入长度中.(注意key2的值love后面有个空格o~)
3.6 同时设置/获得多个键值
mset key0 value0 [key1 value1 ...]
mget key0 [key1 ...]
mse、mget命令的特别之处是它们分别可以同时设置、获取多个键值.例如:
3.7 位操作
SETBIT key offset value
GETBIT key offset
BITCOUNT key [start] [end]
BITOP operation destkey key1 [key2 ...]
以上四个命令可以对二进制位进行操作,SETBIT可以设置key对应的值的第offset位的值为value;GETBIT则是获取key对应的值的第offset位的值;BITCOUNT是统计key对应的值一段范围(默认是值的全部)中1的个数;BITOP则是对多个字符串进行为运算,如:AND(与)、OR(或)、XOR(亦或)、NOT(非)运算.例如: