向库中插入如下的key

127.0.0.1:6379> set username qiyuan
OK
127.0.0.1:6379> hset user name qiyuan password admin sex 1
(integer) 3
127.0.0.1:6379> rpush mylist a b c d e
(integer) 5
127.0.0.1:6379> sadd myset a b c d e a c
(integer) 5
127.0.0.1:6379> zadd myzset 1 Kangkang 2 Tom 5 Jane 4 Mike 3 Mairy
(integer) 5

keys 查看当前库中所有的key

127.0.0.1:6379> keys *
1) "mylist"
2) "username"
3) "user"
4) "myset"
5) "myzset"
127.0.0.1:6379> keys u*
1) "username"
2) "user"

type 查看当前key是什么类型

返回 key 的数据类型,数据类型有:

  • none (key不存在)
  • string (字符串)
  • list (列表)
  • set (集合)
  • zset (有序集)
  • hash (哈希表)
127.0.0.1:6379> type myset
set
127.0.0.1:6379> type mylist
list
127.0.0.1:6379> type username
string
127.0.0.1:6379> type user
hash
127.0.0.1:6379> type myzset
zset
127.0.0.1:6379> type enheng
none

del 删除一个key

127.0.0.1:6379> del enheng
(integer) 0
127.0.0.1:6379> del username
(integer) 1

exists 检测key是否存在

可以跟多个key,返回存在key的个数

127.0.0.1:6379> exists username
(integer) 0
127.0.0.1:6379> exists mylist
(integer) 1
127.0.0.1:6379> exists mylist username
(integer) 1
127.0.0.1:6379> exists mylist username myset
(integer) 2

rename 重命名key

注意,如果newname在库中存在,会把已存在的覆盖掉

127.0.0.1:6379> rename mylist newlist
OK
127.0.0.1:6379> keys *
1) "newlist"
2) "user"
3) "myset"
4) "myzset"
127.0.0.1:6379> rename newlist user    #比如:将其重命名为user,user已经存在了,是一个string
OK
127.0.0.1:6379> keys *                 #检测:只剩下三个
1) "user"
2) "myset"
3) "myzset"
127.0.0.1:6379> get user               #通过string的get命令拿user,会报错,类型错误!!
(error) WRONGTYPE Operation against a key holding the wrong kind of value
127.0.0.1:6379> lrange user 0 -1       #再次检测user类型,已经是list类型,说明被覆盖!
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"

renamenx 重命名key,仅当newkey不存在的时候,才改名为newkey,不会像rename命令那样覆盖

127.0.0.1:6379> keys *
1) "mylist"
2) "myset"
3) "myzset"
127.0.0.1:6379> renamenx mylist newlist
(integer) 1
127.0.0.1:6379> keys *
1) "newlist"
2) "myset"
3) "myzset"
127.0.0.1:6379> renamenx myset newlist
(integer) 0                               #没有成功!没有覆盖!
127.0.0.1:6379> keys *
1) "newlist"
2) "myset"
3) "myzset"

randomkey 在当前库中随机返回一个key

127.0.0.1:6379> randomkey
"myset"
127.0.0.1:6379> randomkey
"myzset"
127.0.0.1:6379> randomkey
"newlist"
127.0.0.1:6379> randomkey
"myset"
127.0.0.1:6379> randomkey
"newlist"

dump 序列化给定key,并返回序列化的值

127.0.0.1:6379> set username qiyuan
OK
127.0.0.1:6379> dump username
"\x00\x06qiyuan\t\x00\xcb\x1c\x15\xc7\xb9\x1e\x8b\x18"
127.0.0.1:6379> get username
"qiyuan"
127.0.0.1:6379> dump newlist
"\x0e\x01\x1a\x1a\x00\x00\x00\x16\x00\x00\x00\x05\x00\x00\x01a\x03\x01b\x03\x01c\x03\x01d\x03\x01e\xff\t\x00\xe8\xed\\\xa1\xb6\x12\xfc\x86"
127.0.0.1:6379> lrange newlist 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"

expire 为一个key设置过期的时间,单位是秒

127.0.0.1:6379> keys *
1) "newlist"
2) "username"
3) "myset"
4) "myzset"
127.0.0.1:6379> expire username 60    #为username设置一个60秒的过期时间
(integer) 1
127.0.0.1:6379> ttl username          #ttl命令:显示key的过期时间
(integer) 56
127.0.0.1:6379> ttl username
(integer) 54
127.0.0.1:6379> ttl username
(integer) 50
127.0.0.1:6379> ttl username
(integer) 2
127.0.0.1:6379> ttl username          #key过期后就被删除了,返回-2
(integer) -2
127.0.0.1:6379> keys *
1) "newlist"
2) "myset"
3) "myzset"
127.0.0.1:6379> set username qiyuan
OK
127.0.0.1:6379> expire username 100
(integer) 1
127.0.0.1:6379> ttl username
(integer) 96
127.0.0.1:6379> set username qiyuan2  #当还在过期时间内,重新给它设置新的值,过期时间会消除
OK
127.0.0.1:6379> ttl username          #ttl命名返回-1表示这个key没有设置过期时间
(integer) -1
##################################################################################
#同时,我们可以在设置值的时候就给她它设置一个过期时间
127.0.0.1:6379> set username qiyuan ex 60
OK
127.0.0.1:6379> ttl username
(integer) 55

pexpire 设置过期时间,单位毫秒

127.0.0.1:6379> pexpire username 10000
(integer) 1
127.0.0.1:6379> ttl username
(integer) 7
127.0.0.1:6379> ttl username
(integer) 5
127.0.0.1:6379> ttl username
(integer) 3
127.0.0.1:6379> ttl username
(integer) -2

expireat 类似expire,但是设置的时间参数是UNIX秒时间戳

127.0.0.1:6379> set username qiyuan
OK
127.0.0.1:6379> expireat username 9999840000
(integer) 1
127.0.0.1:6379> ttl username
(integer) 8355970372
127.0.0.1:6379> ttl username
(integer) 8355970368
127.0.0.1:6379> ttl username
(integer) 8355970365

pexpireat 设置过期时间,单位是UNIX毫秒数时间戳

127.0.0.1:6379> pexpireat username 9999555555005
(integer) 1
127.0.0.1:6379> ttl username
(integer) 8355685029
127.0.0.1:6379> ttl username
(integer) 8355685025

persist 消除过期时间

127.0.0.1:6379> set username qiyuan
OK
127.0.0.1:6379> expire username 100
(integer) 1
127.0.0.1:6379> ttl username
(integer) 97
127.0.0.1:6379> persist username
(integer) 1
127.0.0.1:6379> ttl username
(integer) -1                  #返回-1,表示没有过期时间,永久存在

select 切换数据库,默认是0

127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> select 2
OK
127.0.0.1:6379[2]> select 0
OK
127.0.0.1:6379>                      #当是0数据库时,不显示[0]

move 移动key到另外一个数据库

127.0.0.1:6379> ttl username
(integer) -1
127.0.0.1:6379> expire username 1000
(integer) 1
127.0.0.1:6379> ttl username
(integer) 997
127.0.0.1:6379> move username 2
(integer) 1
127.0.0.1:6379> ttl username
(integer) -2
127.0.0.1:6379> select 2
OK
127.0.0.1:6379[2]> keys *
1) "username"
127.0.0.1:6379[2]> ttl username        #移过来之后的过期时间还存在!!
(integer) 959