• Linux(Centos7)下redis5安装、部署、开机自启


    1.什么是redis

    redis是用C语言开发的一个开源的高性能键值对(key-value)数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止redis支持的键值数据类型如下字符串、列表(lists)、集合(sets)、有序集合(sorts sets)、哈希表(hashs)

    2.redis的应用场景 

    缓存(数据查询、短连接、新闻内容、商品内容等等)。(最多使用
    分布式集群架构中的session分离。
    聊天室的在线好友列表。
    任务队列。(秒杀、抢购、12306等等) 
    应用排行榜。 
    网站访问统计。 
    数据过期处理(可以精确到毫秒)

    3.redis的安装 

    下面介绍在CentOS环境下,Redis的安装与部署,redis从3.0版本以后增加了集群功能。  

    步骤如下:

      由于Redis是用C语言编写,所以编译时需要gcc,

    yum install gcc-c++

      通过官网下载 地址:http://download.redis.io/releases/redis-5.0.0.tar.gz

      或 使用linux wget命令:wget http://download.redis.io/releases/redis-5.0.0.tar.gz

    把源码包上传到linux服务器,在上传的目录下进行解压

    tar -zxvf redis-5.0.0.tar.gz

    进入解压后的目录进行编译make,指定目录安装make install 如 /usr/local/redis

    cd redis-5.0.0/

    make (这里进redis-5.0.0/目录下直接make编译就好了)

    make install PREFIX=/usr/local/redis   (指定编译路径)

    进入安装目录bin下
    cd /usr/local/redis/bin

    此时的目录结构是这样的

    • redis-benchmark redis性能测试工具
    • redis-check-aof AOF文件修复工具
    • redis-check-rdb RDB文件修复工具
    • redis-cli redis命令行客户端
    • redis.conf redis配置文件
    • redis-sentinal redis集群管理工具
    • redis-server redis服务进程

    4.启动Redis

    1.前端模式启动

    /usr/local/redis/bin/redis-server
    或 cd /usr/local/redis/bin 运行 ./redis-server

    前端模式启动的缺点是ssh命令窗口关闭则redis-server程序结束,故不推荐使用此方法。

    2.后端模式启动

    1)redis的源码目录中复制redis.confredis的安装目录bin下。

    cp /root/redis-5.0.0/redis.conf /usr/local/redis/bin

    2)修改配置文件 (是否后台启动)

    vim /usr/local/redis/bin/redis.conf

    找到 daemonize  按i 进入编辑模式 把no 改为 yes 

    按ESC + :wq 保存退出

    执行如下命令启动redis:

    cd /usr/local/redis/bin
    
    ./redis-server ./redis.conf

    3.查看是否启动成功

    ps aux|grep redis

    redis默认端口为 6379,可更改redis.conf文件,修改端口号

    5. 关闭redis

    强行终止redis进程可能会导致redis持久化数据丢失。

    正确停止Redis的方式应该是向Redis发送SHUTDOWN命令,

    命令为:

    cd /usr/local/redis
    ./bin/redis-cli shutdown

    强行终止redis

    pkill redis-server

    6.让redis开机自启

    方法一

    1) vim /etc/init.d/redis  编写脚本 (输入下面的代码)
    复制代码
    # chkconfig: 2345 10 90
    # description: Start and Stop redis
    
    PATH=/usr/local/bin:/sbin:/usr/bin:/bin
    
    REDISPORT=6379 #实际环境而定
    EXEC=/usr/local/redis/bin/redis-server #实际环境而定
    REDIS_CLI=/usr/local/redis/bin/redis-cli #实际环境而定
    
    PIDFILE=/var/run/redis.pid
    CONF="/usr/local/redis/bin/redis.conf" #实际环境而定
    
    case "$1" in
            start)
                    if [ -f $PIDFILE ]
                    then
                            echo "$PIDFILE exists, process is already running or crashed."
                    else
                            echo "Starting Redis server..."
                            $EXEC $CONF
                    fi
                    if [ "$?"="0" ]
                    then
                            echo "Redis is running..."
                    fi
                    ;;
            stop)
                    if [ ! -f $PIDFILE ]
                    then
                            echo "$PIDFILE exists, process is not running."
                    else
                            PID=$(cat $PIDFILE)
                            echo "Stopping..."
                            $REDIS_CLI -p $REDISPORT SHUTDOWN
                            while [ -x $PIDFILE ]
                            do
                                    echo "Waiting for Redis to shutdown..."
                                    sleep 1
                            done
                            echo "Redis stopped"
                    fi
                    ;;
            restart|force-reload)
                    ${0} stop
                    ${0} start
                    ;;
            *)
                    echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2
                    exit 1
    esac
    复制代码

    2)  配置开机启动

    chmod 755 /etc/init.d/redis #设置文件redis的权限,让Linux可以执行
    chkconfig redis on    #开启服务自启动
    chkconfig --list #查看所有注册的脚本文件
    service redis start #启动
    service redis stop #关闭redis

    3) 检测是否成功

    reboot  #重启--如果是centos6.5学过来的,init 0与init 6一样在centos7适用
    
    ps aux|grep redis #查看redis进程是否存在

    方法二:(centos7推荐)

    centos 7以上是用Systemd进行系统初始化的,Systemd 是 Linux 系统中最新的初始化系统(init),它主要的设计目标是克服 sysvinit 固有的缺点,提高系统的启动速度。 
    Systemd服务文件以.service结尾,比如现在要建立redis为开机启动,如果用yum install命令安装的,yum命令会自动创建redis.service文件,直接用命令systemcel enable redis.service设置开机启动即可

     1.在系统服务目录里创建redis.service文件

    vim /etc/systemd/system/redis.service

    写入以下内容:

    复制代码
    [Unit]
    Description=redis-server
    After=network.target
    
    [Service]
    Type=forking
    ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target
    复制代码

    注意:ExecStart配置成自己的路径 

    配置描述: 

      Description:描述服务 
      After:描述服务类别 
      [Service]服务运行参数的设置 
      Type=forking是后台运行的形式 
      ExecStart为服务的具体运行命令 
      ExecReload为重启命令 
      ExecStop为停止命令 
      PrivateTmp=True表示给服务分配独立的临时空间 
      注意:[Service]的启动、重启、停止命令全部要求使用绝对路径 
      [Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3

    重载系统服务:systemctl daemon-reload

    2. 测试并加入开机自启 

      先关闭redis-server 
      systemctl stop redis.service

      开启redis-server 
      systemctl start redis.service #如果服务是开启状态,使用此命令会启动失败。

    3. 开启成功,将服务加入开机自启 
      systemctl enable redis.service #注意后面不能跟空格 

    4.  reboot #重启

    5.  查看服务运行状态:systemctl status redis.service

    6. 全部命令

      systemctl start redis.service #启动redis服务 
      systemctl enable redis.service #设置开机自启动 
      systemctl disable redis.service #停止开机自启动 
      systemctl status redis.service #查看服务当前状态 
      systemctl restart redis.service  #重新启动服务 
      systemctl list-units --type=service #查看所有已启动的服务 

    7.测试代码

    引入jar包:

    代码:

    复制代码
    public class JedisTest {
    
        @Test
        public void testJedisSingle() {
            //创建一个jedis的对象。
            Jedis jedis = new Jedis("172.20.10.7", 6379);
            //调用jedis对象的方法,方法名称和redis的命令一致。
            jedis.set("key1", "jedis test");
            String str = jedis.get("key1");
            System.out.println(str);
            //关闭jedis。
            jedis.close();
        }
        
        /**
         * 使用连接池
         */
        @Test
        public void testJedisPool() {
            //创建jedis连接池
            JedisPool pool = new JedisPool("172.20.10.7", 6379);
            //从连接池中获得Jedis对象
            Jedis jedis = pool.getResource();
            String str = jedis.get("key1");
            System.out.println(str);
            //关闭jedis对象
            jedis.close();
            pool.close();
        }
    }
    复制代码

    至此redis安装配置完毕。

    good luck !

  • 相关阅读:
    hihoCoder #1179 : 永恒游戏 (暴力枚举)
    HDU 5269 ZYB loves Xor I (二分法)
    HDU 5268 ZYB loves Score (简单模拟,水)
    acdream 1683 村民的怪癖(KMP,经典变形)
    acdream 1686 梦醒(时钟重合)
    acdream 1685 多民族王国(DFS,并查集)
    acdream 1681 跳远女王(BFS,暴力)
    HDU 5265 pog loves szh II (技巧)
    HDU 5264 pog loves szh I (字符串,水)
    HDU 1023 Train Problem II (卡特兰数,经典)
  • 原文地址:https://www.cnblogs.com/xiaoyaojinzhazhadehangcheng/p/13021718.html
Copyright © 2020-2023  润新知