Redis远程连接【运维】
摘要: Redis是一款内存高速缓存数据库。在互联网开发当中,具有举足轻重的作用。它能够帮助后台开发者,进行大数据缓存。也是目前市场上做负载均衡中一个重要的环节。所以学会使用Redis还是非常有必要的。本篇文章将教会大家如何使用Redis进行远程连接。
精辟句:得罪了小人,可能会麻烦不断;得罪了君子,你可能原本就是小人。
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。
CMD命令连接Redis
在了解Redis远程连接之前,首先要知道怎么通过CMD命令去连接Redis?
当打开Redis的安装目录之后,可以找到redis-cli.exe的应用程序,它是Redis的客户端,而CMD就是通过该应用程序进行远程连接。所以只需要切换到Redis的安装目录,操作redis-cli.exe执行相应的命令。
redis>redis-cli.exe -h ip地址 -p 端口号 -a 密码
- -h ,默认是127.0.0.1
- -p <端口>,默认是6379
- -a <密码>,如果redis加锁,需要传递密码
本地远程Redis
当在服务端安装好Redis并开启Redis服务之后,本地进行远程连接,却发现本地无法远程连接到服务端的Redis。运行结果图如下:
按照常理讲,采用公网IP和端口号(Redis的默认端口号为6379)应该可以访问到,但是Redis为了数据安全默认设置设置只允许本地(127.0.0.1)访问,其他IP访问时拒绝,当然也会拒绝外网进行访问。
所以要想远程连接到Redis,还需要做以下几步操作。这里以Windows为例:
修改IP绑定
在Redis的安装目录中找到Redis的配置文件redis.conf(或redis.windows.conf),打开配置文件找到NETWORK部分,可以发现如下代码:
# By default, if no "bind" configuration directive is specified, Redis listens
# for connections from all the network interf-aces available on the server.
# It is possible to listen to just one or multiple selected interf-aces using
# the "bind" configuration directive, followed by one or more IP addresses.
#
# Examples:
#
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1 ::1
#
# ~~~ WARNING ~~~ If the computer running Redis is directly exposed to the
# internet, binding to all the interf-aces is dangerous and will expose the
# instance to everybody on the internet. So by default we uncomment the
# following bind directive, that will force Redis to listen only into
# the IPv4 lookback interf-ace address (this means Redis will be able to
# accept connections only from clients running into the same computer it
# is running).
#
# IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERF-ACES
# JUST COMMENT THE FOLLOWING LINE.
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bind 127.0.0.1
从代码意思上可以看出,要想设置多个IP进行访问,可以通过bind来进行设置。当不设置bind的时候就允许所有IP访问,但是这样做不安全。
注意:这里有一个产生歧义的地址,多个IP访问不是指进行访问Redis服务器的IP,而是指安装Redis服务器自身的IP地址。而Redis服务器的IP地址常用的也就是三个,外网IP,内网IP和本地IP(127.0.0.1)。
在这里将bind注释掉,不使用。即允许所以IP进行访问,但是为了数据安全,要设置Redis密码。
设置Redis密码
设置Redis密码可以设置临时密码,也可以设置永久密码。
设置临时密码
登录到服务端,打开Redis服务(双击Redis安装目录下的应用程序redis-server.exe),之后打开redis-cli.exe,执行如下命令:
config set requirepass "yourpassword"
// 设置当前密码,服务重新启动后又会置为默认,即无密码;
临时密码指针对于当前Redis服务,所以个人并不推荐。
补充,可以输入以下代码获取当前设置密码:
config get requirepass // 获取当前密码
设置永久密码
在Redis的安装目录中找到Redis的配置文件redis.conf(或redis.windows.conf),打开配置文件找到SECURITY部分,可以发现如下代码:
# Require clients to issue AUTH <PASSWORD> before processing any other
# commands. This might be useful in environments in which you do not trust
# others with access to the host running redis-server.
#
# This should stay commented out for backward compatibility and because most
# people do not need auth (e.g. they run their own servers).
#
# Warning: since Redis is pretty fast an outside user can try up to
# 150k passwords per second against a good box. This means that you should
# use a very strong password otherwise it will be very easy to break.
#
# requirepass foobared
添加requirepass yourpassword(此处注意,行前不能有空格),保存之后,重启Redis服务。
存在问题
当设置好永久密码之后,通过redis-server.exe启动Redis服务,却发现密码设置无效,这是为什么呢?
这是因为通过redis-server.exe启动Redis服务默认记载配置文件为redis.conf,这个文件并不是我们修改过的那个配置文件,这里有两种解决方案:
1、CMD手动启动Redis服务
打开CMD,进入Redis安装目录,输入以下命令,执行即可。
redis-server.exe redis.windows.conf
2、自定义启动文件startup.bat
在Redis安装目录下,创建startup.bat文件,打开文件,输入redis-server.exe redis.windows.conf,以后启动Redis服务双击该文件即可。
相关设置到这里就完成了,这时候再测试本地是否能够远程连接Redis,当不设置密码的时候,操作Redis会发生错误警告,只有填写好正确的密码才能够连接上远程的Redis。
注:auth是设置密码,keys * 是用来查看Redis内键值。