51CTO下载-Redis命令参考手册完整版

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Redis命令参考外星人Key(键)DEL格式:DELkey[key...]删除给定的一个或多个key。不存在的key会被忽略。可用版本:=1.0.0时间复杂度:O(N),N为被删除的key的数量。删除单个字符串类型的key,时间复杂度为O(1)。删除单个列表、集合、有序集合或哈希表类型的key,时间复杂度为O(M),M为以上数据结构内的元素数量。返回值:被删除key的数量。示例代码:#删除单个keyredisSETnamehuangzOKredisDELname(integer)1#删除一个不存在的keyredisEXISTSphone(integer)0redisDELphone#失败,没有key被删除(integer)0#同时删除多个keyredisSETnameredisOKredisSETtypekey-valuestoreOKredisSETwebsiteredis.comOKredisDELnametypewebsite(integer)3KEYS格式:keyspattern查找所有符合给定模式pattern的key。KEYS*匹配数据库中所有key。KEYSh?llo匹配hello,hallo和hxllo等。KEYSh*llo匹配hllo和heeeeello等。KEYSh[ae]llo匹配hello和hallo,但不匹配hillo。特殊符号用\隔开警告:KEYS的速度非常快,但在一个大的数据库中使用它仍然可能造成性能问题,如果你需要从一个数据集中查找特定的key,你最好还是用Redis的集合结构(set)来代替。可用版本:=1.0.0时间复杂度:O(N),N为数据库中key的数量。返回值:符合给定模式的key列表。示例代码:redisMSETone1two2three3four4#一次设置4个keyOKredisKEYS*o*1)four2)two3)oneredisKEYSt??1)tworedisKEYSt[w]*1)tworedisKEYS*#匹配数据库内所有key1)four2)three3)two4)oneRANDOMKEY格式:randomkey从当前数据库中随机返回(不删除)一个key。可用版本:=1.0.0时间复杂度:O(1)返回值:当数据库不为空时,返回一个key。当数据库为空时,返回nil。示例代码:#数据库不为空redisMSETfruitappledrinkbeerfoodcookies#设置多个keyOKredisRANDOMKEYfruitredisRANDOMKEYfoodredisKEYS*#查看数据库内所有key,证明RANDOMKEY并不删除key1)food2)drink3)fruit#数据库为空redisFLUSHDB#删除当前数据库所有keyOKredisRANDOMKEY(nil)TTL格式:ttlkey以秒为单位,返回给定key的剩余生存时间(TTL,timetolive)。可用版本:=1.0.0时间复杂度:O(1)返回值:当key不存在时,返回-2。当key存在但没有设置剩余生存时间时,返回-1。否则,以秒为单位,返回key的剩余生存时间。注:在Redis2.8以前,当key不存在,或者key没有设置剩余生存时间时,命令都返回-1。示例代码:#不存在的keyredisFLUSHDBOKredisTTLkey(integer)-2#key存在,但没有设置剩余生存时间redisSETkeyvalueOKredisTTLkey(integer)-1#有剩余生存时间的keyredisEXPIREkey10086(integer)1redisTTLkey(integer)10084PTTL格式:pttlkey这个命令类似于TTL命令,但它以毫秒为单位返回key的剩余生存时间,而不是像TTL命令那样,以秒为单位。可用版本:=2.6.0复杂度:O(1)返回值:当key不存在时,返回-2。当key存在但没有设置剩余生存时间时,返回-1。否则,以毫秒为单位,返回key的剩余生存时间。注:在Redis2.8以前,当key不存在,或者key没有设置剩余生存时间时,命令都返回-1。示例代码:#不存在的keyredisFLUSHDBOKredisPTTLkey(integer)-2#key存在,但没有设置剩余生存时间redisSETkeyvalueOKredisPTTLkey(integer)-1#有剩余生存时间的keyredisPEXPIREkey10086(integer)1redisPTTLkey(integer)6179EXISTS格式:existskey检查给定key是否存在。可用版本:=1.0.0时间复杂度:O(1)返回值:若key存在,返回1,否则返回0。示例代码:redisSETdbredisOKredisEXISTSdb(integer)1redisDELdb(integer)1redisEXISTSdb(integer)0MOVE格式:movekeydb将当前数据库的key移动到给定的数据库db当中。如果当前数据库(源数据库)和给定数据库(目标数据库)有相同名字的给定key,或者key不存在于当前数据库,那么MOVE没有任何效果。因此,也可以利用这一特性,将MOVE当作锁(locking)原语(primitive)。可用版本:=1.0.0时间复杂度:O(1)返回值:移动成功返回1,失败则返回0。示例代码:#key存在于当前数据库redisSELECT0#redis默认使用数据库0,为了清晰起见,这里再显式指定一次。OKredisSETsongsecretbase-ZoneOKredisMOVEsong1#将song移动到数据库1(integer)1redisEXISTSsong#song已经被移走(integer)0redisSELECT1#使用数据库1OKredis:1EXISTSsong#证实song被移到了数据库1(注意命令提示符变成了redis:1,表明正在使用数据库1)(integer)1#当key不存在的时候redis:1EXISTSfake_key(integer)0redis:1MOVEfake_key0#试图从数据库1移动一个不存在的key到数据库0,失败(integer)0redis:1select0#使用数据库0OKredisEXISTSfake_key#证实fake_key不存在(integer)0#当源数据库和目标数据库有相同的key时redisSELECT0#使用数据库0OKredisSETfavorite_fruitbananaOKredisSELECT1#使用数据库1OKredis:1SETfavorite_fruitappleOKredis:1SELECT0#使用数据库0,并试图将favorite_fruit移动到数据库1OKredisMOVEfavorite_fruit1#因为两个数据库有相同的key,MOVE失败(integer)0redisGETfavorite_fruit#数据库0的favorite_fruit没变bananaredisSELECT1OKredis:1GETfavorite_fruit#数据库1的favorite_fruit也是appleRENAME格式:renamekeynewkey将key改名为newkey。当key和newkey相同,或者key不存在时,返回一个错误。当newkey已经存在时,RENAME命令将覆盖旧值。可用版本:=1.0.0时间复杂度:O(1)返回值:改名成功时提示OK,失败时候返回一个错误。示例代码:#key存在且newkey不存redisSETmessagehelloworldOKredisRENAMEmessagegreetingOKredisEXISTSmessage#message不复存在(integer)0redisEXISTSgreeting#greeting取而代之(integer)1#当key不存在时,返回错误redisRENAMEfake_keynever_exists(error)ERRnosuchkey#newkey已存在时,RENAME会覆盖旧newkeyredisSETpclenovoOKredisSETpersonal_computerdellOKredisRENAMEpcpersonal_computerOKredisGETpc(nil)redis:1GETpersonal_computer#原来的值dell被覆盖了lenovoRENAMENX格式:renamenxkeynewkey当且仅当newkey不存在时,将key改名为newkey。当key不存在时,返回一个错误。可用版本:=1.0.0时间复杂度:O(1)返回值:修改成功时,返回1。如果newkey已经存在,返回0。示例代码:#newkey不存在,改名成功redisSETplayerMPlyaerOKredisEXISTSbest_player(integer)0redisRENAMENXplayerbest_player(integer)1#newkey存在时,失败redisSETanimalbearOKredisSETfavorite_animalbutterflyOKredisRENAMENXanimalfavorite_animal(integer)0redisgetanimalbearredisgetfavorite_animalbutterflyTYPE格式:typekey返回key所储存的值的类型。可用版本:=1.0.0时间复杂度:O(1)返回值:none(key不存在)string(字符串)list(列表)set(集合)zset(有序集)hash(哈希表)示例代码:#字符串redisSETweathersunnyOKredisTYPEweatherstring#列表redisLPUSHbook_listprogramminginscala(integer)1redisTYPEbook_listlist#集合redisSADDpatdog(integer)1redisTYPEpatsetEXPIRE格式:expirekeyseconds为给定key设置生存时间,当key过期时(生存时间为0),它会被自动删除。在Redis中,带有生存时间的key被称为『可挥发』(volatile)的。生存时间可以通过使用DEL命令来删除整个key来移除,或者被SET和GETSET命令覆写(overwrite),这意味着,如果一个命令只是修改(alter)一个带生存时间的key的值而不是用一个新的key值来代替(replace)它的话,那么生存时间不会被改变。比如说,对一个key执行INCR命令,对一个列表进行LPUSH命令,或者对一个哈希表执行HSET命令,这类操作都不会修改key本身的生存时间。另一方面,如果使用RENAME对一个key进行改名,那么改名后的key的生存时间和改名前一样。RENAME命令的另一种可能是,尝试将一个带生存时间的key改名成另一个带生存时间的another_key,这时旧的another_key(以及它的生存时间)会被删除,然后旧的key会改名为another_key,因此,新的another_key的生存时间也和原本的key一样。使用PERSIST命令可以在不删除key的情况下,移除key的生存时间,让key重新成为一个『持久化』(persistent)key。更新生存时间可以对一个已经带有生存时间的key执行EXPIRE命令,新指定的生存时间会取代旧的生存时间。过期时间的精确度在Redis2.4版本中,过期时间的延迟在1秒钟之内——也即是,就算key已经过期,但它还是可能在过期之后

1 / 167
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功