redis的安装和配置
通过redis的包安装redis
安装的版本 redis-5.0.4
redis-5.0.4.tar.gz 包
阿里云如何配置redis并允许本地访问
第一步:在根目录创建myfile文件夹
cd / 进入根目录
Mkdir myfile
通过文件传输工具,将redis的包传输到阿里云服务器的 /myfile 文件夹
第二步:解压文件
Tar -zxvf redis-5.0.4.tar.gz
第三步:创建redis的文件夹
Mkdir /usr/local/redis
第四步:进行编译
先执行 make
编译后
再执行
make install PREFIX=/usr/local/redis
注意: make install 命令需要在src目录下单独执行
执行完成后,会在 /usr/local/redis中生成bin目录
bin目录下的介绍:
redis-benchmark redis性能测试工具
redis-check-aof AOF文件修复工具
redis-check-rdb RDB文件修复工具
redis-cli redis命令行客户端
redis-sentinal redis集群管理工具
redis-server redis服务进程
第五步:安装redis 修改配置
进入redis文件夹,在 /usr/local/redis目录中,创建 conf目录(与bin同级的目录)
Cd /usr/local/redis
Mkdir conf
进入 conf目录,
cd conf
将redis的redis.conf文件拷贝到/usr/local/redis/conf目录下
复制配置文件
cp /myfile/redis-5.0.4/redis.conf /usr/local/redis/conf
修改vim redis.conf
在配置文件查找用/6379
默认端口6379
timeout
当客户端闲置多长时间后关闭连接;如果指定为0,表示关闭该功能,即不关闭连接
daemonize后台启动,默认不是后台启动,改成后台启动
快照名称
将dbfilename dump.rdb改dbfilename 6379.rdb
将appendonly no下的appendonly.aof改成6379.aof
最好改为以端口号命名,这样多实例的时候容易区分
快照存储路径
下面的目录就是生成文件的目录(即:启动redis的目录)
最大连接数默认是10000
最大使用内存
默认内存没限制,即是redis所在服务器的物理内存;一般预留一部分给系统使用,比如20%-30%
bind
可以绑定允许访问的ip(bind是绑定本机redis可以接受访问的IP),如下:
bind 127.0.0.1
bind 192.168.1.11
如果要允许所有主机访问(本地和远程<如果是云服务器,配置内网ip>),就注释所有bind,默认:bind 127.0.0.1,表示只允许本机访问
云服务器只配置本机ip
第六步 阿里云放行6379端口
第七步 启动redis
启动redis服务
杀进程:ps -ef | grep redis | grep -v grep | awk ‘{print $2}’ | xargs kill -9
重启服务:redis-server /usr/local/redis/conf/redis.conf
查看进程ps -ef | grep redis
第八步 测试连接redis
通过本地cmd命令行连接
打开本地cmd
输入 telnet ip 6379
显示这个页面,说明可以telnet成功
Redis服务启动后,在linux下,执行redis-cli
显示 connection refused ,是因为 bind 的127.0.0.1 ::1没有放开
打开manager工具,
Name 随便输入
Host 阿里云对外访问的ip
Port 6379
Auth 密码
点击test connection,提示成功连接
注意:
阿里云服务器的ip如何找?
输入 ip addr 命令
ip addr命令的作用是在Linux系统上查询ip地址。 这个系统上的两个接口: 环回(lo)和网络(eth0)。
环回接口,常被分配到127.0.0.1,用于本机通信,经过内核处理后直接返回,不会在任何网络中出现。
lo
网卡参数<>:
LOOPBACK, 回环,指将电子信号、数据流等原样送回发送者的行为,它主要用于对通信功能的测试 。
UP,表示网卡处于启动的状态。
LOWER_UP物理连接正常,就是网卡已经上电(物理指的是物理层)。
mtu 65536: 最大传输单元MTU为65536,这是以太网的默认值。
qdist noqueue: 排队规则为noqueue。内核如果需要通过某个网络接口发送数据包,它都需要按照为这个接口配置的排队规则把数据包加入队列,noqueue表示无队列。
state UNKNOWN: 网络接口状态未知。
group default: 接口组为默认的。
qlen 1: 传输队列长度为1。
link/loopback: 接口的 MAC(硬件)地址是00:00:00:00:00:00
。
brd: 广播地址00:00:00:00:00:00
。
inet: 是IPV4的地址,scop host lo:本主机环回有效。
valid_lft forever: IPv4 地址的有效使用期限为无限
preferred_lft forever: IPv4 地址的首选生存期为无限
inet6: IPV6的地址,scop host本机有效。
eth0
BROADCAST: 表示这个网卡有广播地址,可以发送广播包
MULTICAST: 表示网卡可以发送多播包。
qdist pfifo_fast: pfifo_fast规则的队列包括三个波段(band)。在每个波段里面,使用先进先出规则。
state UP: 网络接口已启用。
link/ether fa:16:3e:c7:79:75 brd ff:ff:ff:ff:ff:ff MAC地址,是一个网卡的物理地址。
scope global: 全局有效。
scop link: 仅在此设备上有效。
注意2
关闭保护模式:
1.把所有的bind都注释掉
/usr/local/redis/conf/redis.conf
2.找到 protected-mode yes
改成
protected-mode no
关于bind问题
测试场景:
场景1:
protected-mode yes
bind 都注释掉
验证结果:
1.通过linux的 redis-cli 连接成功
2.RedisDesktopManager工具无法连接
场景2:
protected-mode yes
bind 阿里云地址
1.通过linux的 redis-cli 连接失败
2.RedisDesktopManager工具连接成功
场景3:
只配置 127.0.0.1
protected-mode yes
bind 127.0.0.1 ::1
场景结果:
通过linux的 redis-cli 连接成功
RedisDesktopManager工具连接失败
场景4:
protected-mode yes
bind 阿里云地址
bind 127.0.0.1 ::1
场景结果:
1.通过linux的 redis-cli 连接成功
2.RedisDesktopManager工具连接失败
场景5:
protected-mode yes
bind 127.0.0.1 ::1
bind 阿里云地址
场景结果:
通过linux的 redis-cli 连接失败
RedisDesktopManager工具连接成功
场景6:
protected-mode no
bind 都注释掉
场景结果:
通过linux的 redis-cli 连接成功
RedisDesktopManager工具连接成功
场景7:
protected-mode no
bind 127.0.0.1 ::1
场景结果:
通过linux的 redis-cli 连接成功
RedisDesktopManager工具连接失败
场景8:
protected-mode no
bind 阿里云地址
场景结果:
测试场景:
场景1:
protected-mode yes
bind 都注释掉
验证结果:
1.只能通过linux的 redis-cli 连接
2.RedisDesktopManager工具无法连接
场景2:
protected-mode yes
bind 阿里云地址
1.通过linux的 redis-cli 连接失败
2.RedisDesktopManager工具连接成功
场景3:
只配置 127.0.0.1
protected-mode yes
bind 127.0.0.1 ::1
场景结果:
通过linux的 redis-cli 连接成功
RedisDesktopManager工具连接失败
场景4:
protected-mode yes
bind 阿里云地址
bind 127.0.0.1 ::1
场景结果:
1.通过linux的 redis-cli 连接成功
2.RedisDesktopManager工具连接失败
场景5:
protected-mode yes
bind 127.0.0.1 ::1
bind 阿里云地址
场景结果:
通过linux的 redis-cli 连接失败
RedisDesktopManager工具连接成功
场景6:
protected-mode no
bind 都注释掉
场景结果:
通过linux的 redis-cli 连接成功
RedisDesktopManager工具连接成功
场景7:
protected-mode no
bind 127.0.0.1 ::1
场景结果:
通过linux的 redis-cli 连接成功
RedisDesktopManager工具连接失败
场景8:
protected-mode no
bind 阿里云地址
场景结果:
通过linux的 redis-cli 连接失败
RedisDesktopManager工具连接成功
场景9:
protected-mode no
bind 阿里云地址
bind 127.0.0.1 ::1
结果:通过linux的 redis-cli 连接成功
RedisDesktopManager工具连接失败
测试场景:
场景1:
protected-mode yes
bind 都注释掉
验证结果:
1.只能通过linux的 redis-cli 连接
2.RedisDesktopManager工具无法连接
场景2:
protected-mode yes
bind 阿里云地址
1.通过linux的 redis-cli 连接失败
2.RedisDesktopManager工具连接成功
场景3:
只配置 127.0.0.1
protected-mode yes
bind 127.0.0.1 ::1
场景结果:
通过linux的 redis-cli 连接成功
RedisDesktopManager工具连接失败
场景4:
protected-mode yes
bind 阿里云地址
bind 127.0.0.1 ::1
场景结果:
1.通过linux的 redis-cli 连接成功
2.RedisDesktopManager工具连接失败
场景5:
protected-mode yes
bind 127.0.0.1 ::1
bind 阿里云地址
场景结果:
1.通过linux的 redis-cli 连接失败
2.RedisDesktopManager工具连接成功
场景6:
protected-mode no
bind 都注释掉
场景结果:
1.通过linux的 redis-cli 连接成功
2.RedisDesktopManager工具连接成功
场景7:
protected-mode no
bind 127.0.0.1 ::1
场景结果:
1.通过linux的 redis-cli 连接成功
2.RedisDesktopManager工具连接失败
场景8:
protected-mode no
bind 阿里云地址
场景结果:
1.通过linux的 redis-cli 连接失败
2.RedisDesktopManager工具连接成功
场景9:
protected-mode no
bind 阿里云地址
bind 127.0.0.1 ::1
结果:通过linux的 redis-cli 连接成功
RedisDesktopManager工具连接失败
1.通过linux的 redis-cli 连接失败
2.RedisDesktopManager工具连接成功
场景9:
protected-mode no
bind 阿里云地址
bind 127.0.0.1 ::1
结果:
1.通过linux的 redis-cli 连接成功
2.RedisDesktopManager工具连接失败