字符串类型既可以存储字符,也可以存储数字。可以通过type命令返回string,表示是字符串类型。
127.0.0.1:6379> set sam good
OK
127.0.0.1:6379> type sam
string
127.0.0.1:6379> set tom 1
OK
127.0.0.1:6379> type tom
string
以下介绍string类型相关的命令:
1.SET
SET key value [EX seconds] [PX milliseconds] [NX|XX]
将字符串类型的key设为value值。
如果key已存在,则覆盖,无视key原来的类型和内容。
如果原key带有生存时间,覆盖后生存时间被清除。
EX seconds:设置键的过期时间为seconds秒,等同于setex key second value;
PX milliseconds:设置键的过期时间为milliseconds毫秒,等同于psetex key millisecond value;
NX:仅key不存在时才对该键进行设置操作,等同于setnx key value;
XX:仅key存在时才对该键进行设置操作。
2.GET
GET key
返回key所对应的值,如果key不存在则返回nil,如果key不是字符串类型,返回一个错误,GET只能处理字符串类型键。
3.MSET
MSET key value [key value ...]
同时设置一个或多个key-value对,如果key已存在,则会覆盖;是一个原子性操作,所有给定key会在同一时间设置,且一定会成功。
4.MGET
MGET key [key ...]
返回所有给定key的值,如果key不存在或不是字符串类型,返回nil,该命令一定成功。
5.SETEX
SETEX key seconds value
设置key值为value,过期时间为seconds。原子性操作,值和过期时间同时设置。
如果key已存在,覆盖写入。
6.SETNX
SETNX key value
当key不存在时,设置key为value值,已存在则不做任何操作。
7.MSETNX
MSETNX key value [key value ...]
当所有给定key不存在时,设置key-value对,即使其中一个key已存在,都会取消所有key的设置操作。
8.PSETEX
PSETEX key milliseconds value
作用等同于SETEX,只是时间单位为毫秒。
9.SETBIT
SETBIT key offset value
设置key的offset位为value,key值会进行伸展以满足offset需求,空白处补充0,如果key不存在,则新建并设置。offset 参数必须大于或等于 0 ,小于 2^32 (bit 映射被限制在 512 MB 之内)。
setbit bit 4 1 #1000
setbit bit 3 1 #1100
10.SETRANGE
SETRANGE key offset value
用value覆写key的字符串值,从偏移量offset开始。不存在的key当做空白字符处理。
SETRANGE 命令会确保字符串足够长以便将 value 设置在指定的偏移量上,如果给定 key 原来储存的字
符串长度比偏移量小 (比如字符串只有 5 个字符长,但你设置的 offset 是 10 ),那么原字符和偏移量之间
的空白将用零字节 (zerobytes, “\x00” ) 来填充。
注意你能使用的最大偏移量是 2^29-1(536870911) ,因为 Redis 字符串的大小被限制在 512 兆(megabytes)以内。
当生成一个很长的字符串时,Redis 需要分配内存空间,该操作有时候可能会造成服务器阻塞 (block)。
若首次内存分配成功之后,再对同一个 key 调用SETRANGE 操作,无须再重新内存。
127.0.0.1:6379> get sam
"good"
127.0.0.1:6379> setrange sam 4 boy
(integer) 7
127.0.0.1:6379> get sam
"goodboy"
127.0.0.1:6379> exists ken
(integer) 0
127.0.0.1:6379> setrange ken 6 bad
(integer) 9
127.0.0.1:6379> get ken
"\x00\x00\x00\x00\x00\x00bad"
11.GETBIT
GETBIT key offset
对 key 所储存的字符串值,获取指定偏移量上的位 (bit)。
当 offset 比字符串值的长度大,或者 key 不存在时,返回 0。
12.GETRANGE
GETRANGE key start end
返回 key 中字符串值的子字符串,字符串的截取范围由 start 和 end 两个偏移量决定 (包括 start 和 end在内)。
负数偏移量表示从字符串最后开始计数,-1 表示最后一个字符,-2 表示倒数第二个,以此类推。
值域范围不超过实际字符串,超过部分自动被符略。
13.STRLEN
STRLEN key
返回 key 所储存的字符串值的长度。
当 key 储存的不是字符串值时,返回一个错误。
14.BITCOUNT
BITCOUNT key [start] [end]
计算给定字符串中,被设置为 1 的比特位的数量。
一般情况下,给定的整个字符串都会被进行计数,通过指定额外的 start 或 end 参数,可以让计数只在特定的位上进行。
start 和 end 参数的设置和GETRANGE 命令类似,都可以使用负数值:比如 -1 表示最后一个位,而 -2表示倒数第二个位,以此类推。
不存在的 key 被当成是空字符串来处理,因此对一个不存在的 key 进行 BITCOUNT 操作,结果为 0 。
15.BITOP
BITOP operation destkey key [key ...]
对一个或多个保存二进制位的字符串 key 进行位元操作,并将结果保存到 destkey 上。
operation 可以是 AND 、OR 、NOT 、XOR 这四种操作中的任意一种:
• BITOP AND destkey key [key …] ,对一个或多个 key 求逻辑并,并将结果保存到 destkey 。
• BITOP OR destkey key [key …] ,对一个或多个 key 求逻辑或,并将结果保存到 destkey 。
• BITOP XOR destkey key [key …] ,对一个或多个 key 求逻辑异或,并将结果保存到 destkey 。
• BITOP NOT destkey key ,对给定 key 求逻辑非,并将结果保存到 destkey 。
除了 NOT 操作之外,其他操作都可以接受一个或多个 key 作为输入。
当BITOP 处理不同长度的字符串时,较短的那个字符串所缺少的部分会被看作 0 。
空的 key 也被看作是包含 0 的字符串序列。
16.APPEND
APPEND key value
如果 key 已经存在并且是一个字符串,APPEND 命令将 value 追加到 key 原来的值的末尾。
如果 key 不存在,APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 一样。
追加 value 之后,key 中字符串的长度。
17.INCR
INCR key
将 key 中储存的数字值增一。
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行INCR 操作。
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
本操作的值限制在 64 位 (bit) 有符号数字表示之内。
18.INCRBY
INCRBY key increment
等同于INCR,但增幅不是1,而是increment。
19.INCRBYFLOAT
INCRBYFLOAT key increment
为 key 中所储存的值加上浮点数增量 increment 。
如果 key 不存在,那么INCRBYFLOAT 会先将 key 的值设为 0 ,再执行加法操作。
如果命令执行成功,那么 key 的值会被更新为(执行加法之后的)新值,并且新值会以字符串的形式返回给
调用者。
无论是 key 的值,还是增量 increment ,都可以使用像 2.0e7 、3e5 、90e-2 那样的指数符号 (exponential notation) 来表示,但是,执行 INCRBYFLOAT 命令之后的值总是以同样的形式储存,也即是,它们总是由一个数字,一个(可选的)小数点和一个任意位的小数部分组成(比如 3.14 、69.768 ,诸如此类),小数部分尾随的 0 会被移除,如果有需要的话,还会将浮点数改为整数(比如 3.0 会被保存成 3 )。除此之外,无论加法计算所得的浮点数的实际精度有多长,INCRBYFLOAT 的计算结果也最多只能表示小数点的后十七位。
当以下任意一个条件发生时,返回一个错误:
• key 的值不是字符串类型 (因为 Redis 中的数字和浮点数都以字符串的形式保存,所以它们都属于字符串类型)
• key 当前的值或者给定的增量 increment 不能解释 (parse) 为双精度浮点数 (double precision floating point number)
20.DECR
DECR key
将 key 中储存的数字值减一。
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行DECR 操作。
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
本操作的值限制在 64 位 (bit) 有符号数字表示之内。
21.DECRBY
DECRBY key decrement
将 key 所储存的值减去减量 decrement 。
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行DECRBY 操作。
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
本操作的值限制在 64 位 (bit) 有符号数字表示之内。
关于更多递增 (increment) / 递减 (decrement) 操作的更多信息,请参见INCR 命令。