一、安装gcc依赖
由于 redis 是用 C 语言开发,安装之前必先确认是否安装 gcc 环境(gcc -v),如果没有安装,执行以下命令进行安装
[root@localhost local]# yum install -y gcc
二、下载并解压安装包
[root@localhost local]# wget http://download.redis.io/releases/redis-5.0.3.tar.gz
[root@localhost local]# tar -zxvf redis-5.0.3.tar.gz
三、cd切换到redis解压目录下,再执行编译
[root@localhost local]# cd redis-5.0.3
[root@localhost redis-5.0.3]# make
四、安装并指定安装目录
[root@localhost redis-5.0.3]# make install PREFIX=/usr/local/redis
五、启动服务
5.1前台启动
[root@localhost redis-5.0.3]# cd /usr/local/redis/bin/
[root@localhost bin]# ./redis-server
5.2后台启动
从 redis 的源码目录中复制 redis.conf 到 redis 的安装目录
[root@localhost bin]# cp /usr/local/redis-5.0.3/redis.conf /usr/local/redis/bin/
修改 redis.conf 文件,把 daemonize no 改为 daemonize yes
[root@localhost bin]# vi redis.conf
后台启动
[root@localhost bin]# ./redis-server redis.conf
六、设置开机启动
添加开机启动服务
[root@localhost bin]# vi /etc/systemd/system/redis.service
复制粘贴以下内容:
[Unit]
Description=redis-serverAfter=network.target
[Service]
Type=forkingExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.confPrivateTmp=true
[Install]
WantedBy=multi-user.target
注意:ExecStart配置成自己的路径
设置开机启动
[root@localhost bin]# systemctl daemon-reload
[root@localhost bin]# systemctl start redis.service
[root@localhost bin]# systemctl enable redis.service
创建 redis 命令软链接
[root@localhost ~]# ln -s /usr/local/redis/bin/redis-cli /usr/bin/redis
测试 redis
服务操作命令
systemctl start redis.service #启动redis服务
systemctl stop redis.service #停止redis服务
systemctl restart redis.service #重新启动服务
systemctl status redis.service #查看服务当前状态
systemctl enable redis.service #设置开机自启动
systemctl disable redis.service #停止开机自启动
续:
1.redis命令
1 redis执行了make install后,redis的课执行文件都会自动复制到 /usr/local/bin 目录
2 redis-server redis服务器
3 redis-cli redis命令行客户端
4 redis-benchmark redis性能测试工具
5 redis-check-aof aof文件修复工具
6 redis-check-dump rdb文件检查工具
2.停止 redis 命令
# 停止Redis命令
redis-cli shutdown
3.启动 redis 命令
(1). # 启动 redis-server
redis-server
(2). # 带配置文件启动
# 注意配置文件路径
redis-server ./redis.conf
(3). # 带配置文件启动 且指定某几个配置 配置名称前加 --
# 配置后台启动,且端口是 1123
redis-server ./redis.conf --daemonize yes --port 1123
会覆盖配置文件里面的值
4.redis命令行客户端
(1).发送命令
1 第一种方式
2 发送命令,如 redis-cli shutdown
3 第二种方式:主要用这种模式
4 进入交互模式,默认是127.0.0.1和6379端口
5 可以指定 redis-cli -h 127.0.0.1 -p 6379
注意:框里面的是 6379 里面没有登录成功,下面改成了 1123 成功了,因为刚才上面改了端口
(2).命令返回值
状态回复:pong表示可用
错误回复:不知道这个什么命令
整数回复:多种命令会回复整数
下面的字符串回复,都是赋值了才有。
字符串回复:
多行字符串回复:
5.远程连接
下载客户端工具RedisDesktopManager,本地电脑初次连接服务器上的redis,肯定连不上。原因是Redis默认只支持本地链接,输入进程命令查看得知 127.0.0.1:6379 默认只限服务器本机ip。
把集群的redis全部kill命令全部kill掉,问题解决:编辑redis.conf配置文件;注释掉61行本地链接限制以及80行配置修改为no
61 # bind 127.0.0.1
80 protected-mode no
sudo vi /usr/local/redis/etc/redis.conf
# 注释掉bind 127.0.0.1,bind用于限制访问Redis的机器ip,直接关掉,方便后续做集群或其他客户端进行连接
# bind 127.0.0.1
# 修改daemonize no为yes,让Redis可以后台启动
daemonize yes
# 配置日志文件目录logfile ""
logfile "/usr/local/redis/log/redis_log.log"
# 为Redis添加服务密码# requirepass foobared,这里我们将密码设置为123456
requirepass 123456
# 修改rdb文件存储路径,rdb文件是Redis默认的数据持久化到磁盘的文件,默认配置为dir ./,则存储在相对目录
# 即每次运行redis-server的目录,这里我们修改为绝对路径,以便于后续的管理
dir /usr/local/redis/rdb/
#:wq 保存并退出
读取最新配置文件并重启,查看Redis进程情况!都开放IP链接权限了,怎么还是127.0.0.1:6379!!再查看进程情况:
wl@ubuntu:~/hproj/redis-3.0/cluster$ ./redis-start.sh
wl@ubuntu:~/hproj/redis-3.0/cluster$ ps -ef | grep redis
wl 14200 1416 0 14:00 ? 00:00:00 /home/wl/hproj/redis-3.0/redis-3.2.6/src/redis-server *:7000 [cluster]
wl 14201 1416 0 14:00 ? 00:00:00 /home/wl/hproj/redis-3.0/redis-3.2.6/src/redis-server *:7002 [cluster]
wl 14202 1416 0 14:00 ? 00:00:00 /home/wl/hproj/redis-3.0/redis-3.2.6/src/redis-server *:7001 [cluster]
wl 14205 1416 0 14:00 ? 00:00:00 /home/wl/hproj/redis-3.0/redis-3.2.6/src/redis-server *:7004 [cluster]
wl 14207 1416 0 14:00 ? 00:00:00 /home/wl/hproj/redis-3.0/redis-3.2.6/src/redis-server *:7003 [cluster]
wl 14211 1416 0 14:00 ? 00:00:00 /home/wl/hproj/redis-3.0/redis-3.2.6/src/redis-server *:7005 [cluster]
wl 14225 8680 0 14:01 pts/21 00:00:00 grep --color=auto redis
哇塞,*.6379,这意味着已经成功开放IP访问权限了。万事俱备,只欠点击RedisDesktopManager客户端测试链接按钮了。好,走起。
当你信心满满的时候,现实总泼你一盆冷水来清醒!链接失败,链接失败,我都不好意思截图上传了!!这又是闹哪样啊?还让我活不???
左思右想,突然,我想到一个词——防火墙
[root@Karle src]# service iptables status
表格:filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:8080
6 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:3306
8 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:15672
9 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
编辑Linux防火墙
1 |
|
加入防火墙规则:-A INPUT -m state –state NEW -m tcp -p tcp –dport 6379 -j ACCEPT
1 |
|
重启Linux防火墙
1 |
|
点击 “测试连接” 按钮测试连接,显示 “连接Redis 服务器成功”,问题解决了。
在此过程中并不顺利,主要就是缺少iptables命令和防火墙更换
1.发现iptables命令不能执行 Redirecting to /bin/systemctl status iptables.service Unit iptables.service could not be found.
centos
service iptables status 报错
- 1
Redirecting to /bin/systemctl status iptables.service
Unit iptables.service could not be found.
解决办法
yum install iptables-services
2.启动iptables时报Job for iptables.service failed because the control process exited with error code
解决办法
因为centos7默认的防火墙是firewalld防火墙,不是使用iptables,因此需要先关闭firewalld服务,或者干脆使用默认的firewalld防火墙。
因为这次报错的服务器是一台刚刚购买的阿里云服务器,所以在操作上忘记关闭默认防火墙的步骤了才导致浪费了些时间在这件事情上。
关闭firewalld:
-
systemctl stop firewalld
-
systemctl mask firewalld
使用iptables服务:
-
#开放443端口(HTTPS)
-
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
-
#保存上述规则
-
service iptables save
-
#开启服务
-
systemctl restart iptables.service
正常启动!!!!
续:
可进入redis安装目录 cd /usr/local/redis/bin 下,执行 ./redis-cli
因为设置密码了,所以 需要填写密码(我的密码是123456) auth 123456
输入命令ping ,便能得到响应 pong
如测试key=abc的值,输入命令 get abc 便能得到abc对应的value值。
想退出,输入 exit即退出来了。