String(字符串)
首先 Redis 没有专用的整数类型,那么字符串必须可以暗含整数和浮点类型,Redis内部会自动判断一个加入的字符串是否是数值类型,如果是数值类型,那么 key 内储存的字符串被解释为十进制 64 位有符号整数来执行数学相关运算的操作。
1、基础操作
> append key value
把value添加到指定key值的末尾,同时返回字符的长度,一个汉字长度为3,如果key不存在,则等价于set操作。
>strlen key
返回值的长度,一个汉字长度为3,key不存在返回为 0 。
2、getXXXX
>get key
返回指定key的值,如果Redis不存在这个key,返回null
>mget key1 key2
返回所有(一个或多个)给定 key 的值
>getrange key start end
返回 key 中字符串值的子字符串,字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end 在内)。负数偏移量表示从字符串最后开始计数, -1 表示最后一个字符, -2 表示倒数第二个,以此类推。注意这里的 end 可以超出值的最大长度。
>getset key value
返回key的旧值(如果不存在返回为null),同时为key设定新值。
3、setXXX
>set key value
为key指定新的值,同时重新设置生存时间。
>setex key seconds value
原子性(atomic)操作,关联值和设置生存时间两个动作会在同一时间内完成,单位是秒。
>psetex key millseconds value
原子性(atomic)操作,关联值和设置生存时间两个动作会在同一时间内完成,单位是毫秒。
>setnx key value
将 key 的值设为 value ,当且仅当 key 不存在(SET if Not eXists)。若给定的 key 已经存在,则 SETNX 不做任何动作。
>mset key1 1234 key2 4567
设置一个或多个key的值
>msetnx key1 1234 key2 4567
同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在(if Not eXist),而且这个操作是原子性的,要么全部成功,要么全部失败。
>setrange key offset value
用 value 参数覆写(overwrite)给定 key 所储存的字符串值,从偏移量 offset 开始。不存在的 key 当作空白字符串处理。SETRANGE 命令会确保字符串足够长以便将 value 设置在指定的偏移量上,如果给定 key 原来储存的字符串长度比偏移量小(比如字符串只有 5 个字符长,但你设置的 offset 是 10 ),那么原字符和偏移量之间的空白将用零字节(zerobytes, "\x00" )来填充。
当生成一个很长的字符串时,Redis 需要分配内存空间,该操作有时候可能会造成服务器阻塞(block)。在2010年的Macbook Pro上,设置偏移量为 536870911(512MB 内存分配),耗费约 300 毫秒, 设置偏移量为 134217728(128MB 内存分配),耗费约 80 毫秒,设置偏移量 33554432(32MB 内存分配),耗费约 30 毫秒,设置偏移量为 8388608(8MB 内存分配),耗费约 8 毫秒。 注意若首次内存分配成功之后,再对同一个 key 调用 SETRANGE 操作,无须再重新内存。
4、i++,i--
>incr key
原子性自增操作,如果key不存在则默认为-,然后+1。
>incrby key num
指定的key值加num,返回结果值,如果key不存在,那么默认设置为 0,再加num。
>incrbyfloat key num
为 key 中所储存的值加上浮点数增量 num.
> decr key
指定的key值减1,返回结果值,如果key不存在,那么默认设置为 0,再减1。
>decrby key num
指定的key值减num,返回结果值,如果key不存在,那么默认设置为 0,再减num。