zoukankan      html  css  js  c++  java
  • 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查看服务情况,显示正常

  • 相关阅读:
    c# Array或List有个很实用的ForEach方法,可以直接传入一个方法对集合中元素操作
    js 检查字符串中是否包含中文(正则)
    Js 数组对象排序
    Js日期处理
    JS 检测字符串是否还有某个字符
    js获取URL传参
    使用JavaScript修改浏览器URL地址栏的实现代码
    上传、裁剪图片-----Jcrop图片裁剪插件
    zip拉链方法
    内置函数如help()...
  • 原文地址:https://www.cnblogs.com/airlinp/p/12449554.html
Copyright © 2011-2022 走看看