ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
#### 字符串命令 * * * * * ###### SET key value [EX seconds] [PX milliseconds] [NX|XX] 起始版本:1.0.0 时间复杂度:O(1) > Set key to hold the string value. If key already holds a value, it is overwritten, regardless of its type. Any previous time to live associated with the key is discarded on successful SET operation. 将键key设定为指定的“字符串”值。 如果 key 已经保存了一个值,那么这个操作会直接覆盖原来的值,并且忽略原始类型。 当set命令执行成功之后,之前设置的过期时间都将失效 选项 从2.6.12版本开始,redis为SET命令增加了一系列选项: > EX seconds – Set the specified expire time, in seconds. > PX milliseconds – Set the specified expire time, in milliseconds. > NX – Only set the key if it does not already exist. > XX – Only set the key if it already exist. EX seconds – 设置键key的过期时间,单位时秒 PX milliseconds – 设置键key的过期时间,单位时毫秒 NX – 只有键key不存在的时候才会设置key的值 XX – 只有键key存在的时候才会设置key的值 注意: 由于SET命令加上选项已经可以完全取代SETNX, SETEX, PSETEX的功能,所以在将来的版本中,redis可能会不推荐使用并且最终抛弃这几个命令。 返回值 simple-string-reply:如果SET命令正常执行那么回返回OK,否则如果加了NX 或者 XX选项,但是没有设置条件。那么会返回nil。 例子 ~~~ redis> SET mykey "Hello" OK redis> GET mykey "Hello" ~~~ ###### GET key 起始版本:1.0.0 时间复杂度:O(1) 返回key的value。如果key不存在,返回特殊值nil。如果key的value不是string,就返回错误,因为GET只处理string类型的values。 返回值 simple-string-reply:key对应的value,或者nil(key不存在时) 例子 ~~~ redis> GET nonexisting (nil) redis> SET mykey "Hello" OK redis> GET mykey "Hello" ~~~ ###### MSET key value [key value ...] 起始版本:1.0.1 时间复杂度:O(N) where N is the number of keys to set. 对应给定的keys到他们相应的values上。MSET会用新的value替换已经存在的value,就像普通的SET命令一样。如果你不想覆盖已经存在的values,请参看命令MSETNX。 MSET是原子的,所以所有给定的keys是一次性set的。客户端不可能看到这种一部分keys被更新而另外的没有改变的情况。 返回值 simple-string-reply:总是OK,因为MSET不会失败。 例子 ~~~ redis> MSET key1 "Hello" key2 "World" OK redis> GET key1 "Hello" redis> GET key2 "World" ~~~ ###### MGET key [key ...] 起始版本:1.0.0 时间复杂度:O(N) where N is the number of keys to retrieve. 返回所有指定的key的value。对于每个不对应string或者不存在的key,都返回特殊值nil。正因为此,这个操作从来不会失败。 返回值 array-reply: 指定的key对应的values的list 例子 ~~~ redis> SET key1 "Hello" OK redis> SET key2 "World" OK redis> MGET key1 key2 nonexisting 1) "Hello" 2) "World" 3) (nil) redis> ~~~ * * * * * ###### APPEND key value 起始版本:2.0.0 时间复杂度:O(1)。均摊时间复杂度是O(1), 因为redis用的动态字符串的库在每次分配空间的时候会增加一倍的可用空闲空间,所以在添加的value较小而且已经存在的 value是任意大小的情况下,均摊时间复杂度是O(1) 。 如果 key 已经存在,并且值为字符串,那么这个命令会把 value 追加到原来值(value)的结尾。 如果 key 不存在,那么它将首先创建一个空字符串的key,再执行追加操作,这种情况 APPEND 将类似于 SET 操作。 返回值 Integer reply:返回append后字符串值(value)的长度。 ##例子 ~~~ redis> EXISTS mykey (integer) 0 redis> APPEND mykey "Hello" (integer) 5 redis> APPEND mykey " World" (integer) 11 redis> GET mykey "Hello World" ~~~ * * * * * ###### GETRANGE key start end 起始版本:2.4.0 时间复杂度:O(N) N是字符串长度,复杂度由最终返回长度决定,但由于通过一个字符串创建子字符串是很容易的,它可以被认为是O(1)。 警告:这个命令是被改成GETRANGE的,在小于2.0的Redis版本中叫SUBSTR。 返回key对应的字符串value的子串,这个子串是由start和end位移决定的(两者都在string内)。可以用负的位移来表示从string尾部开始数的下标。所以-1就是最后一个字符,-2就是倒数第二个,以此类推。 这个函数处理超出范围的请求时,都把结果限制在string内。 返回值 bulk-reply 例子 ~~~ redis> SET mykey "This is a string" OK redis> GETRANGE mykey 0 3 "This" redis> GETRANGE mykey -3 -1 "ing" redis> GETRANGE mykey 0 -1 "This is a string" redis> GETRANGE mykey 10 100 "string" ~~~