设为首页 收藏本站
查看: 1522|回复: 0

[经验分享] 系统学习redis之八——redis常用命令

[复制链接]

尚未签到

发表于 2018-11-2 07:18:20 | 显示全部楼层 |阅读模式
  redis提供了丰富的命令对数据库和各种数据库类型进行操作,这些命令可以在linux终端使用,包括以下两种:
  1、键值相关命令
  2、服务器相关命令

redis命令介绍

一、键值相关命令


  • key:返回满足给定匹配条件的所有key。用表达式*代表取出所有的key
  • exists:确认一个key是否存在,存在即返回1,不存在就返回0
  • del:删除一个key
  • expire:设置一个key的过期时间
  • persist:移除给定的key的过期时间
  • randomkey:随机返回数据库里面的一个key
  • rename:重命名key
  • type:返回指定key的数据类型
  • move:将当前数据库中的key转移到其他数据库中
二、服务器相关命令


  • ping:测试连接是否存活
  • echo:在命令行打印一些内容
  • select:选择进入某个数据库。redis数据库编号从0~15,我们可以选择任意一个数据库来进行数据库的存取。超出0~15的这个范围就会报错
  • quit:退出redis数据库连接,也可以用exit(类似退出MySQL数据库一样)
  • dbsize:返回当前数据库中key的数目
  • info:获取服务器的信息和各种统计值
  • config get:返回制定的配置及其参数值
  • flushdb:删除当前数据库中的所有key
  • flushall:删除所有数据库中的所有key
redis命令操作

一、键值相关命令
  1、key:返回满足给定匹配条件的所有key。用表达式*代表取出所有的key
  例如:返回redis里面指定的key
  

[root@test101 redis-4.0.1]# src/redis-cli  
127.0.0.1:6379> KEYS *   #取出所有的key,下面的key就是前面实验中创建的所有key
  1) "name"
  2) "myset5"
  3) "myset2"
  4) "user:001"
  5) "list6"
  6) "list1"
  7) "myset1"
  8) "list3"
  9) "zset1"
  
10) "user:002"
  
11) "sset2"
  
12) "email"
  
13) "myset3"
  
14) "mail"
  
15) "sset1"
  
16) "myset4"
  
17) "list2"
  
18) "myset6"
  
19) "myset7"
  
20) "list5"
  
127.0.0.1:6379> KEYS my*   #取出以my开头的所有key
  
1) "myset5"
  
2) "myset2"
  
3) "myset1"
  
4) "myset3"
  
5) "myset4"
  
6) "myset6"
  
7) "myset7"
  
127.0.0.1:6379>
  

  备注,同《系统学习redis之三——redis数据类型之string类型及操作》一样,后面的例子也都在同一台机器一次性操作完毕的,因为后面的代码如果不加上“ [root@test101 redis-4.0.1]# src/redis-cli ”这一句。代码高亮也会格式有问题,所以后面所有的例子中都加上了“[root@test101 redis-4.0.1]# src/redis-cli ”,主要为了格式问题。
  2、exists:确认一个key是否存在,存在即返回1,不存在就返回0
  例如:确认当前数据库中myset1和myset0是否存在
  

[root@test101 redis-4.0.1]# src/redis-cli  
127.0.0.1:6379> KEYS my*        #查看redis里面所有以my开头的key,有下面这些
  
1) "myset5"
  
2) "myset2"
  
3) "myset1"
  
4) "myset3"
  
5) "myset4"
  
6) "myset6"
  
7) "myset7"
  
127.0.0.1:6379> EXISTS myset1       #确认myset1是否存在,从上面看出,是有myset1的,返回1,表示存在
  
(integer) 1
  
127.0.0.1:6379> EXISTS myset10      #确认myset10是否存在,从上面看出,是没有myset10的,返回0,表示不存在
  
(integer) 0
  
127.0.0.1:6379>
  

  3、del:删除一个key
  例如:删除上面例子中的myset1
  

[root@test101 redis-4.0.1]# src/redis-cli  
127.0.0.1:6379> EXISTS myset1
  
(integer) 1
  
127.0.0.1:6379> DEL myset1
  
(integer) 1
  
127.0.0.1:6379> EXISTS myset1   #myset1已经不存在了,删除成功
  
(integer) 0
  
127.0.0.1:6379>
  

  4、expire:设置一个key的过期时间
  例如:给已经存在名为“age”的key设置过期时间
  

[root@test101 redis-4.0.1]# src/redis-cli  
127.0.0.1:6379> SET age 18   #设置一个新的key名为age,值为18
  
OK
  
127.0.0.1:6379> GET age     #查看age
  
"18"
  
127.0.0.1:6379> EXPIRE age 10   #给age设置过期时间为10秒
  
(integer) 1
  
127.0.0.1:6379> TTL age         #ttl查看age剩下的过期时间,下面的7就表示还有1秒钟过期
  
(integer) 7
  
127.0.0.1:6379> TTL age
  
(integer) 2
  
127.0.0.1:6379> TTL age     #当过期时间变成了负值,就表示这个key已经过期了
  
(integer) -2
  
127.0.0.1:6379> GET age    #再get查看,就已经为空了,注意:不是值被清空,而是整个key都给删除了
  
(nil)
  
127.0.0.1:6379>
  

  5、persist:移除给定的key的过期时间
  例如:给上面例子里面数据库1中的age设置20秒过期时间,然后再取消设置
  

[root@test101 redis-4.0.1]# src/redis-cli  
127.0.0.1:6379[1]> GET age
  
"16"
  
127.0.0.1:6379[1]> EXPIRE age 20    #设置age的过期前时间为20秒
  
(integer) 1
  
127.0.0.1:6379[1]> TTL age      #查看剩余过期时间
  
(integer) 17
  
127.0.0.1:6379[1]> TTL age
  
(integer) 15
  
127.0.0.1:6379[1]> PERSIST age    #取消设置过期时间
  
(integer) 1
  
127.0.0.1:6379[1]> TTL age      #再ttl查看剩余过期时间也返回-1,这里的-1不表示已经过期,表示已经取消过期时间
  
(integer) -1
  
127.0.0.1:6379[1]> GET age      #过几分钟再查看,age依然存在,最开始设置的20秒过期时间已经被成功取消
  
"16"
  
127.0.0.1:6379[1]>
  

  6、randomkey:随机返回数据库里面的一个key
  例如:随机返回当前数据库里面的key
  

[root@test101 redis-4.0.1]# src/redis-cli  
127.0.0.1:6379> RANDOMKEY
  
"list6"
  
127.0.0.1:6379> RANDOMKEY
  
"list2"
  
127.0.0.1:6379> RANDOMKEY
  
"sset2"
  
127.0.0.1:6379> RANDOMKEY
  
"myset7"
  
127.0.0.1:6379> RANDOMKEY
  
"email"
  
127.0.0.1:6379>
  

  7、rename:重命名key
  例如:将名字为“mail”的key重命名为“key_new”
  

[root@test101 redis-4.0.1]# src/redis-cli  
127.0.0.1:6379> KEYS  mai*
  
1) "mail"
  
127.0.0.1:6379> RENAME mail mail_new
  
OK
  
127.0.0.1:6379> KEYS  mai*
  
1) "mail_new"
  
127.0.0.1:6379>
  

  8、type:返回指定key的数据类型
  例如:返回当前数据库中list5和name、sset1这几个key的数据类型
  

[root@test101 redis-4.0.1]# src/redis-cli  
127.0.0.1:6379> TYPE list5
  
list
  
127.0.0.1:6379> TYPE name
  
string
  
127.0.0.1:6379> TYPE sset1      #返回的list、string和zset分别代表这几个key的数据类型
  
zset
  
127.0.0.1:6379>
  

  9、move:将当前数据库中的key转移到其他数据库中
  例如:在数据库0中创建名为age的key并设置值为16,然后将age这个key移动到数据库1中
  

[root@test101 redis-4.0.1]# src/redis-cli  
127.0.0.1:6379> SELECT 0     #先进入数据库0,确认age这个key不存在
  
OK
  
127.0.0.1:6379> EXISTS age
  
(integer) 0
  
127.0.0.1:6379> SELECT 1      #再先进入数据库1,确认age这个key不存在
  
OK
  
127.0.0.1:6379[1]> EXISTS age
  
(integer) 0
  
127.0.0.1:6379[1]> SELECT 0    #返回数据库0,创建age这个key,并设置值为16
  
OK
  
127.0.0.1:6379> SET age 16
  
OK
  
127.0.0.1:6379> EXISTS age    #现在age还存在与数据库0中
  
(integer) 1
  
127.0.0.1:6379> GET age
  
"16"
  
127.0.0.1:6379> MOVE age 1    #将age这个key移动到数据库1中
  
(integer) 1
  
127.0.0.1:6379> EXISTS age   #然后再查看,数据库0里面就没有age这个key了
  
(integer) 0
  
127.0.0.1:6379> SELECT 1      #进入数据库1中查看,age这个key已经存在,并且值为16
  
OK
  
127.0.0.1:6379[1]> EXISTS age
  
(integer) 1
  
127.0.0.1:6379[1]> GET age
  
"16"
  
127.0.0.1:6379[1]>
  

二、服务器相关命令
  1、ping:测试连接是否存活
  例如:测试当前redis数据库是否存活
  

[root@test101 redis-4.0.1]# src/redis-cli  
127.0.0.1:6379> ping     #返回PONG,表示连接成功,是OK的
  
PONG
  
127.0.0.1:6379> ping     #在执行这条命令之前,重开一个窗口,杀掉redis进程,再回来执行这个ping
  
Could not connect to Redis at 127.0.0.1:6379: Connection refused   #因为redis进程已经在另一个窗口被kill掉,所以连接失败
  
not connected> ping    #然后在另一个窗口再重新启动redis,再回来ping,返回PONG,连接OK
  
PONG
  
127.0.0.1:6379>
  

  2、echo:在命令行打印一些内容
  例如:在当前命令行输出某些内容
  

[root@test101 redis-4.0.1]# src/redis-cli  
127.0.0.1:6379> ECHO crystal
  
"crystal"
  
127.0.0.1:6379> ECHO 1990
  
"1990"
  
127.0.0.1:6379>
  

  3、select:选择进入某个数据库。redis数据库编号从0~15,我们可以选择任意一个数据库来进行数据库的存取。超出0~15的这个范围就会报错
  例如:选择进入指定的数据库
  

[root@test101 redis-4.0.1]# src/redis-cli  
127.0.0.1:6379> SELECT 1
  
OK
  
127.0.0.1:6379[1]> SELECT 10
  
OK
  
127.0.0.1:6379[10]> SELECT 18       #18数据库已经超出范围,所以报错
  
(error) ERR DB index is out of range
  
127.0.0.1:6379[10]>
  

  4、quit:退出redis数据库连接,也可以用exit(类似退出MySQL数据库一样)
  例如:退出当前redis数据库,回到linux系统命令行
  

[root@test101 redis-4.0.1]# src/redis-cli  
127.0.0.1:6379> quit
  
[root@test101 redis-4.0.1]# src/redis-cli
  
127.0.0.1:6379>
  
127.0.0.1:6379> exit
  
[root@test101 redis-4.0.1]# src/redis-cli
  
127.0.0.1:6379>
  

  5、dbsize:返回当前数据库中key的数目
  例如:返回放钱数据库的key的数量
  

[root@test101 redis-4.0.1]# src/redis-cli  
127.0.0.1:6379> DBSIZE     #返回当前数据库的key的数量,下面返回的18就表示有18个key
  
(integer) 18
  
127.0.0.1:6379[1]> SELECT 10    #10数据库没有创建过key,返回的数量就是0
  
OK
  
127.0.0.1:6379[10]> DBSIZE
  
(integer) 0
  
127.0.0.1:6379[10]>
  

  6、info:获取服务器的信息和各种统计值
  例如:查看当前的数据库服务
  

[root@test101 redis-4.0.1]# src/redis-cli  
127.0.0.1:6379> info
  
# Server
  
redis_version:4.0.1
  
redis_git_sha1:00000000
  
redis_git_dirty:0
  
......              #省略若干
  
127.0.0.1:6379>
  

  7、config get:返回制定的配置及其参数值
  例如:返回执行的配置及其参数值
  

[root@test101 redis-4.0.1]# src/redis-cli  
127.0.0.1:6379> CONFIG GET *      #如果不指定要返回的内容,用*代替,就会返回所有的参数值
  1) "dbfilename"
  2) "dump.rdb"
  3) "requirepass"
  4) ""
  5) "masterauth"
  6) ""
  
......              #省略若干
  
127.0.0.1:6379>
  
127.0.0.1:6379> CONFIG GET dbfilename      #返回dbfilename及其参数值
  
1) "dbfilename"
  
2) "dump.rdb"
  
127.0.0.1:6379>
  

  8、flushdb:删除当前数据库中的所有key
  例如:删除数据库1中的所有key
  

[root@test101 redis-4.0.1]# src/redis-cli  
127.0.0.1:6379> SELECT 1            #先进入数据库1
  
OK
  
127.0.0.1:6379[1]> DBSIZE           #查看数据库1的key总数
  
(integer) 3
  
127.0.0.1:6379[1]> FLUSHDB      #删除当前库的所有key
  
OK
  
127.0.0.1:6379[1]> DBSIZE   #再查看,数据库1已经没有key了
  
(integer) 0
  
127.0.0.1:6379[1]>
  

  9、flushall:删除所有数据库中的所有key
  例如:清除所有数据库中的所有key
  

[root@test101 redis-4.0.1]# src/redis-cli  
127.0.0.1:6379[1]> SELECT 0     #首先切换到数据库0,里面有18个key
  
OK
  
127.0.0.1:6379> DBSIZE
  
(integer) 18
  
127.0.0.1:6379> SELECT 1        #再切换到数据库1,里面有3个key
  
OK
  
127.0.0.1:6379[1]> DBSIZE
  
(integer) 3
  
127.0.0.1:6379[1]> FLUSHALL     #使用flushall清空所有库
  
OK
  
127.0.0.1:6379[1]> DBSIZE   #数据库1已经没有了key
  
(integer) 0
  
127.0.0.1:6379[1]> SELECT 0     #再回到数据库0,也已经没有了key,所有key都被删除完了
  
OK
  
127.0.0.1:6379> DBSIZE
  
(integer) 0
  
127.0.0.1:6379>



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-629554-1-1.html 上篇帖子: 分布式锁实现大型连续剧之(一):Redis-JavaIT程序员的博客 下篇帖子: 2018-08-22(redis)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表