Redis学习和搭建笔记
redis是一种远程字典服务,尤其是用在缓存技术上,非常的方便和高效,是一种开源、可基于内存、可基于持久化日志、键值对数据库,并提供多种语言支持的API。
同样的,因为目前互联网技术大部分都采用了分布式结构的理念,redis也有主从服务之分,主从互为同步联合,避免出现单点运行的情况,与fastdfs的分布理念类似。
一. 准备内容
C++语言包:gcc-c++
稳定版本的redis安装包
个人VM+CentOS7
二. 安装及配置
yum和传统编译模式安装
yum安装方式是我认为最快捷最简单的方式,只要准备好了服务器和Centos7系统,网络连接正常就可以进行安装,使用yum安装会自动将redis及其需要的依赖程序一并安装妥当,并且是自动按照依赖安装顺序进行安装,比如会先下载gcc-c++进行安装,然后下载redis进行安装,非常的方便快捷。
但相较于传统的编译安装模式,yum方式安装的程序进行卸载的时候,会同时把redis及一同安装的依赖程序都卸载,正如gcc-c++ 几乎所有的c语言编译的程序都依赖这个语言包,一旦使用yum remove,那么其他正常的程序也无法使用,而传统编译安装的程序,安装的内容都会释放到固定目录,卸载的时候只需要手动删除其安装目录即可,不会删除其他程序的共同依赖程序,同时卸载也非常干净,但是安装起来比较耗时,要考虑程序依赖性、安装顺序、编译时间较长等缺点。
简述yum和传统编译的区别和优弱势:
yum:
优点 — 社区软件仓库,软件程序全面,解决软件安装依赖包、依赖安装顺序,软件程序版本升级方便,软件安装速度快,卸载方便干净全面;
缺点 — yum安装的软件,使用为rpm安装包,属于已经编译完成的封装包,类似于Windows中的软件exe安装程序,但是没有windows安装中自定义选择(选择安装目录,是否开机启动等等),无法对软件进行定制化修改,并且卸载会将程序所有依赖的程序一同卸载,造成其他软件使用不正常;
传统编译安装:
优点 — 这种安装包一般是源码包,可以由使用者进行代码调整,功能定制,更加灵活,且安装目录较固定,卸载只需删除安装目录,不会删除与其他程序共用的依赖程序;
缺点 — 源码包一般是使用C语言编写,而linux系统要能使用,必须要在linux系统中,使用c语言框架进行编译,编译成linux可以使用的格式,此步受软件大小、复杂成都、设备性能等因素影响,且一般耗时比yum模式久,同样虽然安装目录较固定,但是也有一定的分散,卸载的时候需要手动找到这些安装目录,逐个删除,相较于yum卸载模式,要麻烦一些;
下面我分别记录yum和传统编译安装模式的笔记,其中配置部分仅描写影响的使用的部分,其他项目的功能性配置可自行在网上查询。
1. yum
1.1 安装Fedora 的epel源,redis的yum安装依赖EPEL
yum -y install epel-release
1.2 安装redis
yum -y install redis
下图可见,yum安装模式会检测redis安装需要的依赖程序,并且按照顺序进行安装,由于使用的VM在前段时间进行了fastdfs的演示安装,gcc-c++已经安装过,所以这里不再提示依赖程序中需要gcc-c++
1.3 redis相关配置
1.3.1 使用rpm -qal | grep redis,查看redis的相关安装路径
从上图中,寻找conf尾椎的文件路径,conf即config配置文件。
1.3.2 编辑redis.conf
vim /etc/redis.conf
1.3.3 配置网络访问权限
在配置文件中,找到bind和protected-mode参数,这2个参数是用来限制redis网络访问,后者protected-mode yes的时候,表示需要结合bind配置,来限制网络访问,bind的具体含义在fastdfs章节中有过介绍,这里不做赘述。
由于是个人VM学习使用,这里将bind参数注释,protected-mode no。
1.3.4 端口设置
找到port参数,默认为6379(主服务),从实际生产运用考虑,非特殊安全要求,一般使用程序默认的端口设置
1.3.5 从服务配置
一般建议主从redis服务至少需要2台服务设备,当然也可以在一台设备上配置主从服务,但是这种是毫无意义的,当服务器宕机,主从同时都会无法使用,与单点情况一样。
这里由于为个人VM,只介绍配置方法。
修改port为6380(建议与默认主服务端口)
配置主服务关联参数slaveof,下图可以看出slaveof参数的基本格式要求,填写主服务ip和端口;
1.3.6 启动daemonize守护进程运行模式,通俗来说就是后台运行,否则需要一直前台开启运行窗口,才能保持redis服务运行中;
1.4 配置开机启动和防火墙
添加开机启动,systemctl enable redis.service
启动服务systemctl start redis.service
查看服务状态systemctl status redis.service
防火墙设置
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --zone=public --add-port=6380/tcp --permanent
firewall-cmd --reload
1.5 测试
命令行登陆6379主服务,/usr/bin/redis-cli -p 6379
设置一个参数值set name 123,参数“name”值“123”
查看参数值获取,get name,得到值“123”
2. 传统编译模式安装
2.1 下载redis安装包
wget http://download.redis.io/releases/redis-4.0.6.tar.gz
2.2 安装gcc依赖
yum install gcc,由于yum安装的时候已安装,这里无需再安装
2.3 解压redis安装包
tar -zxvf redis-4.0.6.tar.gz
2.4 进入redis解压目录
cd redis-4.0.6
2.5 redis安装前编译,此步较耗时,时间长短根据程序的复杂程度、大小、设备性能等,这里相比较于yum模式的rpm包安装相对劣势一点的地方
make MALLOC=libc
2.6 进入安装程序目录,并开始安装
cd src && make install
2.7 配置redis
进入/root/redis-4.0.6,找到redis.conf
编辑配置文件,vim redis.conf
禁用bind参数
禁用protected-mode
修改端口port为6379
启动守护进程模式daemonize
2.8 设置redis启动模式
进入etc目录,cd /etc
新建一个名为redis的目录,mkdir redis
从redis安装目录拷贝一份redis.conf配置文件到新建的redis目录下,并重名为6379.conf, cp /root/redis-4.0.6/redis.conf /etc/redis/6379.conf
从redis安装目录拷贝一份redis_init_script启动脚本到/etc/init.d目录下,并重命名为6379, cp /root/redis-4.0.6/utils/redis_init_script /etc/init.d/6379
编辑启动脚本,修改启动优先级,否则无法使用chkconfig 命令设置开机启动
在#!/bin/sh行下增加:# chkconfig: 2345 90 10
设置开机启动,chkconfig 6379 on
2.9 设置防火墙和重启测试
在yum安装的时候已经设置了防火墙,这里不做赘述
重启虚拟机后,查看redis服务启动情况,ps -aux | grep redis
从本机windows系统telnet查看服务情况,显示正常