玩转Redis-研发也应该知道的Connection命令

  《玩转Redis》系列文章主要讲述Redis的基础及中高级应用,文章基于Redis5.0.4+。Redis的链接每每是由程序完成,多数程序员并不关心,但掌握链接命令能提高本身的综合水平,真正了解整个Redis的使用过程。git

一、链接命令概述

1910RedisConnection.png

二、各命令详解

2.一、AUTH认证命令

2.1.一、AUTH命令功能

  • AUTH命令用于密码验证,Redis的密码明文配置在配置文件redis.conf(requirepass yourRedisPassword)中;
  • 因为Redis高性能,建议使用复杂密码避免被爆破;
  • 建议修改默认端口6379,避免被爆破;
# 查询密码
config get requirepass
# 在线设置密码
config set requirepass abcdefg
# (生产环境应屏蔽config命令)
# rename-command CONFIG ""
复制代码

2.1.二、示例

# 无密码链接
[guest@xxx redis]$ ./redis-cli -h 127.0.0.1 -p 6378
# 输入密码验证
127.0.0.1:6378> AUTH 123456
(error) ERR invalid password
127.0.0.1:6378> auth pwd123456
OK
复制代码

2.二、ECHO命令

  • ECHO命令将返回参数自己,经常使用于脚本中;
  • 脚本中的ECHO支持引入变量;
PIDFILE=/var/run/redis_${REDISPORT}.pid
echo "$PIDFILE is 123"
复制代码

2.三、PING命令

  • 测试Redis创建的链接是否可用(链接存在被其余线程关闭的状况);
  • 测试链接的延迟;
  • PING不带参数将返回"PONG",带参数将返回参数自己;
  • 若是订阅了channel或pattern,PING第一次返回"PONG",后续返回空字符串。
127.0.0.1:6378> ping
PONG
127.0.0.1:6378> ping "hi @zxiaofan"
"hi @zxiaofan"
复制代码

2.四、QUIT命令

  • 用于关闭链接,成功返回"OK";
  • 因为Redis是单线程,故当有命令正在执行操做时,链接时没法被关闭的;

2.五、SELECT命令

  • 用于选择Redis数据库;
  • Redis共有16个DB,DB索引从0开始,新链接老是使用DB0;
  • 不一样的DB能够有相同名字的key;
  • 须要指定DB的命令:FLUSHDB、SWAPDB、RANDOMKEY;
  • DB主要用于拆分属于相同应用的不一样key;
  • Redis Cluster只能使用DB0,不能使用SELECT命令;
  • index范围超出[0,15]时,将提示(error) ERR DB index is out of range;

注意:
  Redis没有提供命令查询当前链接所选择的DB,命令CLIENT LIST可展现全部链接选择的DB(db=0);程序员

Redis如何查看当前链接操做的DB:github

  1. 控制台查看:
127.0.0.1:6378> select 1
OK
# 注意在6378后有个“[1]”,这个就表示当前链接操做的DB;
127.0.0.1:6378[1]> select 0
OK
127.0.0.1:6378> 
复制代码
  1. 三方API(如lettuce、jedis)
# lettuce 中查看DB的API:
/**
 * Returns the Redis database number. Databases are only available for Redis Standalone and Redis Master/Slave.
 *
 * @return
 */
public int getDatabase() {
    return database;
}
复制代码

2.六、SWAPDB命令

2.6.一、SWAPDB命令功能及示例

  • 用于交换2个Redis的DB中的数据,交换成功返回"OK";
  • 交换DB中的数据,并非直接切换链接
  • SWAPDB 0 1后,先前访问DB0的链接能当即访问之前DB1中的数据,但实际上链接依旧是DB0;
  • index范围超出[0,15]时,将提示(error) ERR DB index is out of range;
  • 若是发现Redis中始终没有预期数据,能够先确认DB是否正确;
127.0.0.1:6378> set db0 db0value
OK
127.0.0.1:6378> select 1
OK
127.0.0.1:6378[1]> set db1 db1value
OK
127.0.0.1:6378[1]> get db0
(nil)
127.0.0.1:6378[1]> swapdb 0 1
OK
127.0.0.1:6378[1]> get db0
"db0value"
127.0.0.1:6378[1]> swapdb 0 16
(error) ERR DB index is out of range
复制代码

2.6.二、SWAPDB命令应用场景

  • 修正线上Redis数据:若是线上Redis数据有问题又不能直接处理,能够考虑在新DB中构造正确数据,最后直接切换2个DB的数据(数据量较大慎用);

三、Redis链接命令总结

  • 除了SWAPDB命令是4.0.0版本可用,其余命令均是1.0.0版本可用;
  • 除PING、ECHO命令外,其余命令执行成功均返回"OK";
  • Redis的链接命令在开发中使用较少,但学习了解有备无患;

人生就像一只储蓄罐,你投入的每一分努力都会在将来的某一天,回馈于你。redis


祝君好运!
Life is all about choices!
未来的你必定会感激如今拼命的本身!
CSDN】【GitHub】【OSCHINA】【掘金】【微信公众号
欢迎订阅zxiaofan的微信公众号,扫码或直接搜索zxiaofan数据库

相关文章
相关标签/搜索