zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    Java 第十一届 蓝桥杯 省模拟赛 洁净数
    Java 第十一届 蓝桥杯 省模拟赛 第十层的二叉树
    Java 第十一届 蓝桥杯 省模拟赛 第十层的二叉树
    Java 第十一届 蓝桥杯 省模拟赛 第十层的二叉树
    Java 第十一届 蓝桥杯 省模拟赛 70044与113148的最大公约数
    Java 第十一届 蓝桥杯 省模拟赛 70044与113148的最大公约数
    20. Valid Parentheses
    290. Word Pattern
    205. Isomorphic Strings
    71. Simplify Path
  • 原文地址:https://www.cnblogs.com/chenpingzhao/p/5159153.html
Copyright © 2011-2022 走看看