Redis 字符串(String)命令
基本命令
Redis中基本的字符串命令包括 set、get和strlen。其用法很简单。其中 get 的用法为 get key,set的基本用法为 set key value,而strlen的用法为strlen key,返回key的字符串长度。而在现实中,我们经常的需求往往并不是这么简单。那么在这个时候,我们就需要一些升级后的命令了。
升级后的命令
我们在实际的需求中,可能会遇到这样的需求,我们需要先取得某个 key 的值,然后将这个 key 赋值成为 我们期望的某个值。在这样的情况下,我们往往用基本命令也能完成这样的需求:
get key
set key value
为了操作简便,Redis为我们提供了升级后的命令:getset.顾名思义,这个值会设置某个键为新值,并返回原值。用法和set相似:getset key value;除了getset之外,Redis还为我们设置了像incr,desc,incrby,descby,incrbyfloat对值是number的key的值进行自增或自减的升级命令(注:返回值为自增或自减后的值)。
mset和mget则可以同时设置多个key的值,或者同时获取多个key的值。
setex和psetex是对set的升级,它的功能除了可以给key设定值之外,还会为key设定过期时间。其中的区别是:
- setex的过期时间以秒为单位
- psetex的过期时间以毫秒为单位
setnx也是对set的升级,它只在key存在的时候才会更新值。并且返回值直接和成功与否有关:
- 成功->1
- 失败->0
append则是当key存在的时候并且值为字符串时,将value直接追加到字符串末尾,而当key不存在时,则和set是一样的效果。
msetnx是对mset或者说是setnx的升级。它只有在所有key都存在的情况下,才对所有的key进行更新操作。返回值如下:
- 成功->1
- 失败->0
getrange和setrange是对get和set针对子字符串的升级操作,分别是获取字串和设置子串,用法为getrange key start end和set key offset value;
在使用getrange和setrange的时候,其中的start end和offset需要注意。其中,当start大于字符串最后一个字符的索引时,直接返回空字符串。当值为负数的时候,即为从字符串的最后一个字母开始向前数。当offset大于最后一个字符的索引的时候,在最后一个索引和offset之间会填充空格,表现形式为\x00.
高级命令
说是高级命令,其实是对字符串的非直接操作,而是对其对应的ASCII吗的操作。getbit是获取某个key的指定偏移量位(bit)上的值,而setbit key offset value 则指定key上的offsetd 的值。