• redis的简单安装配置


    一、简介

    • Redis是一种高级key-value数据库,数据可以持久化,支持的数据类型很丰富,有字符串,哈希,链表,集合和有序集合5种数据类型

    • Redis支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能,所以Redis也可以被看成是一个数据结构服务器

    • Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(半持久化模式);也可以把每一次数据变化都写入到一个append only file(aof)里面(全持久化模式)

    二、Redis安装

    安装tclsh

    Redis在make test有使用到tclsh对Redis进行测试,所有需要想将tclsh安装好,如果没有安装的话,在make test过程中会出现如下错误:

    [root@dev ~]# wget http://hivelocity.dl.sourceforge.net/project/tcl/Tcl/8.5.14/tcl8.5.14-src.tar.gz
    [root@dev ~]# tar xzvf tcl8.5.14-src.tar.gz
    [root@dev ~]# cd tcl8.5.14-src/unix     #windows进入tcl8.5.14-src/win
    [root@dev ~]# ./configure --prefix=/app/soft/tcl8.5.11 --enable-64bit  #enable-64bit对64系统生效
    [root@dev ~]# make && make install

    安装完成之后需要将tclsh添加到PATH中,并使其生效

    [root@dev ~]# vim /etc/profile
    ···
    PATH=/app/soft/tcl8.5.11/bin:$PATH
    export PATH
    ···
    [root@dev ~]# source /etc/profile

    安装Redis

    [root@dev ~]# cd /usr/loca/src
    [root@dev ~]# wget http://download.redis.io/releases/redis-3.0.6.tar.gz
    [root@dev ~]# tar xzvf redis-3.0.6.tar.gz
    [root@dev ~]# cd redis-3.0.6
    [root@dev ~]# make
    [root@dev ~]# make test   #检查Redis是否已经make成功,这个步骤可以省略,不过建议还是使用
    [root@dev ~]# make PREFIX=/usr/local/redis install  #默认安装路径:/usr/local

    三、配置Redis

    Redis.conf

    [root@dev ~]#  cat redis.conf|grep -v ^#
    daemonize yes            #开启守护进程
    pidfile /var/run/redis.pid    #设置PID文件
    port 6579                #设置Redis端口
    timeout 300
    tcp-keepalive 0
    loglevel verbose        #设置日志级别
    syslog-enabled yes      #开启syslog
    syslog-ident redis      #设置Redis在syslog里面的标识符
    syslog-facility local6  #设置Redis在syslog使用的设备
    databases 5
    save 900 1              #Redis硬盘数据保存设置
    save 300 10
    save 60 10000
    stop-writes-on-bgsave-error yes
    rdbcompression yes
    rdbchecksum yes
    dbfilename dump.rdb    #Redis数据保存文件
    dir ./    #Redis数据保存目录
    slaveof 183.232.10.64  6579       #开启主从同步,设置Master的IP及端口
    masterauth Dmx#xYkJ0Z8            #设置主从同步密码
    slave-serve-stale-data yes
    slave-read-only yes
    repl-disable-tcp-nodelay no
    slave-priority 100
    requirepass Dmx#xYkJ0Z8            #设置Redis认证密码
    maxclients 10000                   #设置客户端连接数
    maxmemory 512M                     #设置内容大小
    appendonly no                      #设置是否开启AOF模式
    appendfsync everysec
    no-appendfsync-on-rewrite no
    auto-aof-rewrite-percentage 100
    auto-aof-rewrite-min-size 64mb
    lua-time-limit 5000
    slowlog-log-slower-than 10000
    slowlog-max-len 128
    hash-max-ziplist-entries 512
    hash-max-ziplist-value 64
    list-max-ziplist-entries 512
    list-max-ziplist-value 64
    set-max-intset-entries 512
    zset-max-ziplist-entries 128
    zset-max-ziplist-value 64
    activerehashing yes
    client-output-buffer-limit normal 0 0 0
    client-output-buffer-limit slave 256mb 64mb 60
    client-output-buffer-limit pubsub 32mb 8mb 60
    hz 10
    aof-rewrite-incremental-fsync yes

    日志设置

    通过Redis日志的配置可以知道,这次设置Redis日志是通过syslog来统一管理的,然后再通过logrotate来进行日志轮循,具体配置如下:

    ##syslog配置
    [root@dev ~]#  cat /etc/syslog.conf
    ···
    # Log anything (except mail) of level info or higher.
    # Don't log private authentication messages!
    *.info;mail.none;authpriv.none;cron.none;redis.none    /var/log/messages
    #redis.none去除Redis的日志输出到message
    ···
    # Save redis messages also to redis.log
    local6.*                                             /var/log/redis.log
    #设置Redis日志输入到/var/log/redis.log文件
    ···
    ##logrotate配置
    [root@dev ~]# cat /etc/logrotate.d/redis
    /var/log/redis.log {
        missingok
        weekly
        notifempty
        rotate 15
        size 200M
        sharedscripts
        postrotate
            /usr/bin/killall -HUP syslogd
        endscript
    }

    logrotate配置文档的意思为:每周检查一次Redis日志文件,大小超过200M就轮循一次,保存15个轮循日志文件。

    内核设置

    因为Redis需要使用到内存,所有最好配置一个内核参数,否则有可能会报警,具体如下:

    [root@dev ~]# cat /etc/sysctl.conf
    ···
    vm.overcommit_memory = 1  #指定内核针对内存分配的策略,其值可以是0,1,2
    ···
    # 0  → 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
    # 1  → 表示内核允许分配所有的物理内存,而不管当前的内存状态如何
    # 2  → 表示内核允许分配超过所有物理内存和交换空间总和的内存
    #  sysctl -p

    四、Redis启动与关闭

    启动脚本

    #!/bin/sh
    #
    # redis - this script starts and stops the redis-server daemon
    #
    # chkconfig:   - 85 15
    # description:  Redis is a persistent key-value database
    # processname: redis-server
    # config:      /etc/redis/redis.conf
    # config:      /etc/sysconfig/redis
    # pidfile:     /var/run/redis.pid
    
    # Source function library.
    . /etc/rc.d/init.d/functions
    
    # Source networking configuration.
    . /etc/sysconfig/network
    
    # Check that networking is up.
    [ "$NETWORKING" = "no" ] && exit 0
    
    source /etc/init.d/functions
    
    redis="/usr/local/redis/src/redis-server"
    prog=$(basename $redis)
    
    REDIS_CONF_FILE="/usr/local/redis/redis.conf"
    PIDFILE="/var/run/redis.pid"
    
    [ -f /etc/sysconfig/redis ] && . /etc/sysconfig/redis
    
    lockfile=/var/lock/subsys/redis
    
    start() {
    
            if [ -e $PIDFILE ];then
                 echo "$desc already running...."
                 exit 1
            fi
    
            echo -n $"Starting $prog: "
            daemon $redis  $REDIS_CONF_FILE
    
            RETVAL=$?
            echo
            [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
            return $RETVAL
    }
    
    stop() {
        echo -n $"Stopping $prog: "
        killproc $prog -QUIT
        retval=$?
        echo
        [ $retval -eq 0 ] &&  rm -f /var/lock/subsys/$prog $PIDFILE
        return $retval
    }
    
    restart() {
        stop
        start
    }
    
    reload() {
        echo -n $"Reloading $prog: "
        killproc $redis -HUP
        RETVAL=$?
        echo
    }
    
    force_reload() {
        restart
    }
    
    rh_status() {
        status $prog
    }
    
    rh_status_q() {
        rh_status >/dev/null 2>&1
    }
    
    case "$1" in
        start)
            rh_status_q && exit 0
            $1
            ;;
        stop)
            rh_status_q || exit 0
            $1
            ;;
        restart|configtest)
            $1
            ;;
        reload)
            rh_status_q || exit 7
            $1
            ;;
        force-reload)
            force_reload
            ;;
        status)
            rh_status
            ;;
        condrestart|try-restart)
            rh_status_q || exit 0
            ;;
        *)
            echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
            exit 2
    esac

    五、Redis服务验证

    ./redis-cli 登录,然后再通过ping、info、命令查看redis情况,具体示例如下:

    [root@dev ~]# ./redis-cli -h localhost -p 6579 -a password
    redis localhost:6579> info
    
  • 相关阅读:
    Linux学习之探索文件系统
    `设计模式之代理模式
    `设计模式之单例模式
    `设计模式之工厂模式
    浅谈系列之 javascript原型与对象
    Javascript基础
    jQuery效率提升建议
    CSS基础知识汇总
    CSS-float详解,深入理解clear:both[转+部分原创]
    HTML基础知识汇总
  • 原文地址:https://www.cnblogs.com/chenpingzhao/p/5159153.html
Copyright © 2020-2023  润新知