del key
删除给定的一个或多个Key(多个key用空格隔开),删除成功返回1,当key不存在时,返回0;例:del no-exist-key foo。
dump key
序列化给定的key,并返回被序列化的值,使用restore可以反序列化;例:dump foo。
exists key
检查key是否存在,若key存在返回1,否则返回0;例:exists foo。
expire key seconds
为key设置超时时间(单位:秒),当key过期时,会被系统自动删除;例:expire foo 30。
expireat key timestamp
为key设置超时时间(单位:秒),和expire不同的是其接受的时间参数是Unix时间戳;例:expireat foo 1355292000。
keys pattern
查找所有符合给定模式的key,通常用于查找key;例:keys* 匹配所有的key、keys h?llo匹配hello、hallo;h*llo匹配hallo和heeeello;h[ea]llo匹配hello和hallo,但不匹配hillo。
migrate host port key destination-db timeout [copy] [replace]
将key原子性的传送到指定数据库上,传送成功后,本地的key会被删除;例:migrate 127.0.0.1 6340 foo 0 100。
move key db
将key移动到指定数据库中;例:move foo 1,将foo从db0移动到db1,移动陈工返回1,移动失败返回0。
object subcommand[agruments[arguments]]
object允许从内部查看给定Key的Redis对象,通常用于拍错或节省空间而对key使用特殊编码:
- OBJECT REFCOUNT <key> 返回给定 key 引用所储存的值的次数。此命令主要用于除错;例:object refcount foo。
- OBJECT ENCODING <key> 返回给定 key 锁储存的值所使用的内部表示(representation);例:object encoding foo。
- OBJECT IDLETIME <key> 返回给定 key 自储存以来的空转时间(idle, 没有被读取也没有被写入),以秒为单位;例:object idletime foo。
persist key
移除指定key的生存时间,成功返回1,若key不存在或不存在生存时间时返回0;例:persist foo。
pexpire key millseconds
这个命令和expire类似,但是它是以毫秒为单位设置key的生存时间,而不像expire命令那样,以秒为单位;例:pexpire foo 30000。
pexpireat key millseconds-timestamp
这个命令和expireat类似,但是它是以毫秒为单位设置key的生存时间,而不像expireat命令那样,以秒为单位;例:pexpireat foo 1478007195543
pttl key
这个命令和ttl类似,它以毫秒为单位返回key的剩余生存时间,而不像ttl命令那样,以秒为单位;当key不存在时返回-2,当key存在但没有设置剩余时间时返回-1;例:pptl foo。
randomkey
从数据库中随机返回一个key,若数据库为空则返回nil;例:randomkey。
rename key newkey
为key改名,当key和newkey相同或者key不存在时返回一个错误,当newkey已存在时则会覆盖newkey中的值;例:rename foo foo1。
renamenx key newkey
当且仅当newkey不存在时将key改为newkey,若key不存在返回错误,若newkey存在返回0;例:renamex foo foo1。
restore key ttl serialized-value
反序列化给定的序列化值,并将它和给定的key关联;例: RESTORE greeting-again 0 "\x00\x15hello, dumping world!\x06\x00E\xa0Z\x82\xd8r\xc1\xde"(看别人的例子吧,说实话到现在除了做迁移验证兼容性之外我还没想到它的其他用处)。
sort key [by pattern] [limit offset count] [get pattern [get pattern ...]] [asc(default) | desc] [alpha] [store destination]
返回或保存给定列表、集合、有序集合中经过排序的元素:
最常用用法:sort key返回从小到大的排列;例:lpush day 1 2 3 5 79 18 | sort day。
sort默认排序对象为数字,当需要对字符串进行排序时,需要显示的在sort命令之后添加alpha修饰符;例:lpush name tom lilei hanmeimei unclewang| sort name alpha。
排序后返回元素的数量可以通过limit修饰符进行限制,修饰符接受offset和count两个参数;例:lpush day 1 2 3 5 79 18 | sort day limit 1 3返回2、3、5三个元素。
还有一些更为详细的用法请参见:http://doc.redisfans.com/key/sort.html。
ttl key
以秒为单位返回key的剩余生存时间(time to live),当key不存在时返回-2,当key存在未设置生存时间时返回-1;例:ttl foo。
type key
返回key存储的值的类型,返回none(不存在)、string(字符串)、list(列表)、set(集合)、zset(有序集合)、hash(哈希表);例:type foo。
scan cursor [match pattern][count count]
scan命令及其相关的sscan、hscan和zscan都用于增量迭代元素,其中:
- scan命令用于迭代当前数据库中的键,返回的每个元素都是一个数据库键;例:scan 0。
- sscan命令用于迭代集合键中的元素,返回的每个元素都是一个集合成员。
- hscan命令用于迭代哈希键中的键值对,返回的每个元素都是一个键值对。
- zscan命令用于迭代有序集合中的元素,返回的每个元素都是一个有序集合元素,由一个成员和一个分值(score)组成。
SSCAN 命令、 HSCAN 命令和 ZSCAN 命令的第一个参数总是一个数据库键,而SCAN 命令则不需要在第一个参数提供任何数据库键 —— 因为它迭代的是当前数据库中的所有数据库键。
因为当keys和smembers用于生产环境处理大的数据库或者集合时可能会阻塞服务器达数秒之久,而每次执行只会返回少量元素避免了可以用于生产环境,但是由于迭代过程中,键有可能会被更改,所以只能提供有限保证。
scan命令是基于游标的:当scan命令每次被调用时,都会向用户返回一个新的游标,用户在下次迭代时需要使用这个新游标作为参数,延续之前的迭代,例:
scan 0 :当scan命令的游标为0时,服务器开始新的迭代,当服务器返回值为0的游标时,表示迭代结束,本例返回结果如下:
127.0.0.1:0>scan 0
1) 22
2) foo_21
foo_25
foo_23
foo_2
foo_3
foo_11
foo_12
foo_1
foo_15
foo_16
foo_14
foo_6
第一个结果为新游标,第二个结果为迭代内容,再次迭代:
127.0.0.1:0>scan 22
1) 3
2) foo_22
foo_28
foo_17
foo_13
foo_5
foo_19
foo_26
foo_10
foo_24
foo_20
foo_9
返回游标3和迭代结果,第三次迭代:
127.0.0.1:0>scan 3
1) 0
2) foo_7
foo_8
foo_27
foo_18
foo_4
返回游标0表示迭代完毕。由于仅仅使用游标来记录迭代,所以同一个元素可能会被返回多次,或者迭代过程中被添加或删除那么这个元素可能会被返回, 也可能不会。增量式迭代命令并不保证每次执行都返回某个给定数量的元素,用户可以通过增量式迭代命令提供的 COUNT 选项来指定每次迭代返回元素的最大值,例:scan 0 count 5。该命令也提供了match其只返回给定模式的匹配元素,但是由于匹配是在元素取出之后,客户端返回之前这段时间进行的,所以有可能在多次迭代过程中不返回任何元素,例:scan 0 match foo_1*。在同一时间,可以有任意多个客户端对服务器进行迭代,迭代状态保存在游标里,服务器无须记录任何迭代状态,客户端也可以中途停止迭代而无须通知服务器,也不会对服务器造成任何问题,当传入错误游标时,只会导致数据失真,而不会导致任何服务器出现问题。