一些基础的命令
数据库相关
我们通过 Redis的配置文件能够了解到 Redis默认数据库的数量为 16个
我们如果想在这些数据库之间进行切换可以使用 select dbindex
命令来实现;这里的 dbindex指的是数据库的下标,默认为 0~15
127.0.0.1:6379> select 1 # 将数据库切换至下标为 1的数据库
OK
127.0.0.1:6379[1]> # 切换成功后端口号后面会标识所在的数据库下标
# 而默认情况下我们使用的数据库下标为 0,即第一个数据库;这种情况端口号后面将不会有所标识
Redis不同数据库中的数据互不影响,也就是说之前存到数据库中 key为 testName
的数据,此时在下标为 1的数据库中是查不到的
127.0.0.1:6379[1]> get testName # 尝试在下标为 1的数据库中取到 key为 "testName"的数据
(nil) # 没有取到
127.0.0.1:6379[1]> select 0 # 切回默认的数据库
OK
127.0.0.1:6379> get testName # 再次执行上述操作
"moluu" # 可以看到,切换数据库后取到了key为 "testName"的数据
除 select [num]
命令外我们还经常会用到 dbsize
命令,该命令的作用是查看当前数据库 key的总数
127.0.0.1:6379> dbsize
(integer) 1
可以看到,此时第一个数据库中是存在着一条记录的
我们也可以使用 flushdb
命令来清空当前所在数据库
127.0.0.1:6379> dbsize
(integer) 1 # 未执行清空当前所在数据库操作前
127.0.0.1:6379> flushdb # 使用该命令清空当前所在数据库
OK
127.0.0.1:6379> dbsize
(integjer) 0 # 此时的记录数未 0表示当前数据库已经空了
而如果我们要执行清空所有数据库的操作,使用 flushdb
命令一个个清就显得有些呆板了;
Redis提供了专门的删库跑路(划掉)命令供我们使用,即flushall
,该命令执行后会清空所有数据库中的数据
127.0.0.1:6379> dbsize
(integer) 1 # 此时下标为 0的数据库中存在着一条记录
127.0.0.1:6379> select 1 # 我们切换到下标为 1的数据库中执行清空全部数据库命令
OK
127.0.0.1:6379[1]> flushall
OK
127.0.0.1:6379[1]> select 0 # 再切回去
OK
127.0.0.1:6379> dbsize # 很明显,清空全部数据库的操作成功了;总数的记录值为 0
(integer) 0
key相关
在 Redis中,无论什么类型的数据 都存在着 key,可想而知掌握 key相关的命令是多么重要
我们在正常使用 Redis时不可能记得住我们添加了哪些数据,而想要查看添加了哪些数据我们可以先拿到他们的 key
这自然是可以办到的, keys *
命令的作用就是如此
127.0.0.1:6379> set testName1 test # 添加第一条数据
OK
127.0.0.1:6379> set testName2 test1 # 添加第二条数据
OK
127.0.0.1:6379> keys * # 使用 keys * 命令查看数据库中所有数据的 key
1) "testName2"
2) "testName1"
# 数据库中所有数据的 key如上
删除不必要的数据我们可以使用 del key [keys]
命令来实现
127.0.0.1:6379> keys *
1) "testName1"
2) "testName2"
# 如上,此时数据库中存在两条数据
127.0.0.1:6379> del testName1 # 删除其中一条数据
(integer) 1
127.0.0.1:6379> keys *
1) "testName2" # 可以看到 key为 "testName1"的数据已经被删除了
到这里,key的增删改查只差一个修改了,key的修改我们可以使用 rename key newkey
命令实现
127.0.0.1:6379[1]> keys *
1) "testName1"
127.0.0.1:6379[1]> rename testName1 testName2 # 将 key "testName1"修改为 "testName2"
OK
127.0.0.1:6379[1]> keys *
1) "testName2" # 修改成功
如果要将数据进行不同数据库之间的迁移,我们可以使用 move key dbindex
命令来实现
127.0.0.1:6379> keys *
1) "testName2"
127.0.0.1:6379> move testName2 1 # 将未被删除的 "testName2"数据移动到下标为 1的数据库中
(integer) 1
127.0.0.1:6379> keys *
(empty array) # 再次查看下标为 0数据库中所有数据的 key时可以发现 "testName2"已经不存在了
127.0.0.1:6379> select 1 # 切到下标为 1的数据库中确认数据移动成功
OK
127.0.0.1:6379[1]> keys *
1) "testName2" # 可以看到,key为"testName2"的数据确实移动过来了
有时候我们存入的数据并不一定要永久保存,Redis提供了一个命令;可以让我们为数据设置一个过期时间(单位为秒)
这个命令就是 expire key seconds
,如果要查看数据剩余的过期时间我们还可以使用 ttl key
命令来实现
127.0.0.1:6379[1]> expire testName2 10 # 将刚刚移动过来的数据设置十秒后过期
(integer) 1
127.0.0.1:6379[1]> ttl testName2 # 查看该数据的过期时间
(integer) 6
127.0.0.1:6379[1]> ttl testName2 #再次查看
(integer) 5
127.0.0.1:6379[1]> ttl testName2 # 再次查看
(integer) 4
127.0.0.1:6379[1]> ttl testName2 # 最后一次查看等待 4秒以上再执行
(integer) -2 # 返回的过期时间为 -2表示已经过期了
127.0.0.1:6379[1]> keys * # 使用 keys * 命令确认数据已经不存在了
(empty array)
当然了 过期操作不是不可逆的,我们可以在其过期之前移除其过期时间
要使用的命令为 persist key
,以下为演示
127.0.0.1:6379[1]> expire testName2 100 # 为该数据设置 100秒后过期
(integer) 1
127.0.0.1:6379[1]> ttl testName2 # 确认过期操作已经开始了
(integer) 93
127.0.0.1:6379[1]> persist testName2 # 使用 persist命令移除其过期时间
(integer) 1
127.0.0.1:6379[1]> ttl testName2 # 再次查看其过期时间
(integer) -1 # 为 -1表示不会过期
除此之外我们还可以使用 exists key [keys]
来检查是否存在这样一条数据或多条数据,如果返回 1表示存在;返回 0则相反
127.0.0.1:6379[1]> set test test # 添加一条数据到该数据库中
OK
127.0.0.1:6379[1]> exists test # 检查 key为 test的数据是否存在于该数据库中
(integer) 1 # 返回 1表示存在了
127.0.0.1:6379[1]> del test # 现在我们将其删掉
(integer) 1
127.0.0.1:6379[1]> exists test # 再次检查则返回 0自然是不存在了
(integer) 0
有时候我们还需要判断一条数据的数据类型,此时我们就可以使用 type key
命令来实现该操作
127.0.0.1:6379