• Redis 安装配置


    一、简介

    全称 Redis-REmote DIctionary Server
    高性能 key-value 数据库
    内存数据库,支持数据持久化

    二、安装

    1.编译安装

    这里下载Linux版本的,也有 Windows 版本的,但不是官方的,由微软维护

    # 下载
    curl http://download.redis.io/releases/redis-4.0.11.tar.gz -o /tmp/redis-4.0.11.tar.gz
    # 解压
    tar -zxvf redis-4.0.11.tar.gz
    
    # 进入解压目录编译并安装,编译需要 gcc,不指定路径默认为 /usr/local/bin/
    yum install gcc
    cd redis-4.0.11
    make PREFIX=/opt/redis install MALLOC=libc
    # 安装后,要手动从解压路径拷贝配置文件到安装路径
    
    # 测试是否编译成功(测试需安装 tcl)
    yum install tcl
    make test

    编译成功,可执行文件在指定目录下
    tu

    # 启动服务,加上&为后台运行,不占用命令行
    ./redis-server &
    
    # 指定配置文件方式启动
    ./redis-server ${redis.conf}
    
    # 指定端口号启动
    ./redis-server --port 端口号
    
    # 强制停止服务
    kill -9 PID进程号
    
    # 停止服务
    ./redis-cli -p 端口号 -h 地址 shutdown
    
    # 启动客户端
    ./redis-cli
    
    # 指定参数启动客户端
    ./redis-cli -p 端口号 -h 地址 -a 密码

    添加到环境变量

    # 修改profile文件
    vi /etc/profile
    
    # 在最后行追加
    export PATH="$PATH:/opt/redis/bin"
    
    # 刷新环境变量
    . /etc/profile

    2.yum 方式安装

    # 要安装最新的 redis,需要安装 Remi 源 https://rpms.remirepo.net/wizard/
    yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
    yum --enablerepo=remi install redis -y
    
    systemctl start redis
    systemctl enable redis.service
    
    # 查看下redis安装时创建的相关文件
    rpm -qa | grep redis
    rpm -ql redis
    
    # 查看redis版本
    redis-cli --version

    三、配置

    ################################## INCLUDES ###################################
    
    # 指定包含其他的配置文件,可以在同一主机上多个Redis实例之间使用同一份配置文件,而同时各实例又拥有自己的特定配置文件
    include /path/to/local.conf
    
    ################################## MODULES #####################################
    
    # 启动时加载模块。 如果服务器无法加载模块它会中止。 可以使用多个loadmodule指令。
    loadmodule /path/to/other_module.so
    
    ################################## NETWORK #####################################
    
    # 绑定的主机地址,后跟一个或多个IP地址。如果没有绑定,接受所有IP的连接请求
    bind 127.0.0.1
    
    # 保护模式,默认启用。禁止公网访问redis cache,启用有两个条件:没有bind IP,没有设置访问密码
    protected-mode yes
    
    # 指定Redis监听端口,默认端口为6379,如果指定0端口,表示Redis不监听TCP连接
    port 6379
    
    #  在高并发的环境中,为避免慢客户端的连接问题,需要设置一个高速后台日志
    tcp-backlog 511
    
    # redis不监听端口,怎么通信,redis还支持通过unix socket方式来接收请求。可以通过unixsocket配置项来指定unix socket文件的路径,并通过unixsocketperm来指定文件的权限
    unixsocket /tmp/redis.sock
    unixsocketperm 700
    
    # 当客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能
    timeout 0
    
    # TCP连接保活策略,单位为秒,向连接空闲的客户端发起一次ACK请求,对于无响应的客户端则会关闭其连接,如果设置为0,则不进行检测。
    tcp-keepalive 300
    
    ################################# GENERAL #####################################
    
    # 默认不启用,启用守护进程后,Redis会把pid写到一个pidfile中,在/var/run/redis.pid
    daemonize no
    
    # If you run Redis from upstart or systemd, Redis can interact with your
    # supervision tree. Options:
    #   supervised no      - no supervision interaction
    #   supervised upstart - signal upstart by putting Redis into SIGSTOP mode
    #   supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET
    #   supervised auto    - detect upstart or systemd method based on
    #                        UPSTART_JOB or NOTIFY_SOCKET environment variables
    # Note: these supervision methods only signal "process is ready."
    #       They do not enable continuous liveness pings back to your supervisor.
    supervised no
    
    # 指定了pid文件,Redis启动时会将其写入指定的位置并在退出时将其删除。
    pidfile /var/run/redis_6379.pid
    
    # 指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为notice
    loglevel notice
    
    # 日志文件的位置,指定为空字符串为标准输出,如果redis已守护进程模式运行,那么日志将会输出到/dev/null
    logfile ""
    
    # 设置为yes会把日志输出到系统日志,默认是no
    syslog-enabled no
    
    # 指定syslog的标示符,如果'syslog-enabled'是no,则这个选项无效。
    syslog-ident redis
    
    #指定syslog 设备(facility), 必须是USER或者LOCAL0到LOCAL7.
    syslog-facility local0
    
    # 设置数据库的数量,默认数据库为0,可以使用select <dbid> 切换数据库,dbid是介于0到‘databases’-1之间的数
    databases 16
    
    # 设置为yes来强制执行4.0之前的行为,始终在启动日志中显示ASCII艺术徽标(Logo)。
    always-show-logo yes
    
    ################################ SNAPSHOTTING  ################################
    
    # 指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合
    # 满足以下条件将会同步数据:
    # 900秒(15分钟)内有1个更改
    # 300秒(5分钟)内有10个更改
    # 60秒内有10000个更改
    # 可以把所有“save”行注释掉,这样就取消同步操作了
    save 900 1
    save 300 10
    save 60 10000
    
    # 如果用户开启了RDB快照功能,那么在redis持久化数据到磁盘时如果出现失败,默认情况下,redis会停止接受所有的写请求
    stop-writes-on-bgsave-error yes
    
    # 指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变的巨大
    rdbcompression yes
    
    # 在存储快照后,可以让redis使用CRC64算法来进行数据校验,这样做会增加大约10%的性能消耗,如果希望获取到最大的性能提升,可以关闭此功能
    rdbchecksum yes
    
    # 转储数据库的文件名,默认值为dump.rdb
    dbfilename dump.rdb
    
    # 工作目录,指定本地数据库存放目录,文件名由上一个dbfilename配置项指定,这里只能指定一个目录,不能指定文件名
    dir ./
    
    ################################# REPLICATION #################################
    
    # 主从复制。使用slaveof从Redis服务器复制一个Redis实例。注意,该配置仅限于当前slave有效
    # 设置本机为slav服务时,设置master服务的ip地址及端口,在Redis启动时,它会自动从master进行数据同步
    slaveof <masterip> <masterport>
    
    # 当master服务设置了密码保护时,slav服务连接master的密码
    masterauth <master-password>
    
    # 当从redis与主redis失去了连接,或者正在同步时,redis该如何处理外部发来的访问请求呢
    # 第一种选择:yes(默认),从redis仍会继续响应客户端的读写请求
    # 第二种选择:no,从redis会对客户端的请求返回“SYNC with master in progress”,也有例外,当客户端发来INFO请求和SLAVEOF请求,从redis还是会进行处理
    slave-serve-stale-data yes
    
    # 可以控制从redis是否可以接受写请求。将数据直接写入从redis,一般只适用于那些生命周期非常短的数据,因为在主从同步时,这些临时数据就会被清理掉。自从redis2.6版本之后,默认从redis为只读。
    slave-read-only yes
    
    # 只读的从redis并不适合直接暴露给不可信的客户端。为了尽量降低风险,可以使用rename-command指令来将一些可能有破坏力的命令重命名,避免外部直接调用。比如:
    rename-command Config za8asd7a8sd7wd87asd9
    
    # 主从数据复制是否使用无硬盘复制功能,新的从站和重连后不能继续备份的从站,需要做所谓的“完全备份”,即将一个RDB文件从主站传送到从站
    # 1)硬盘备份:redis主站创建一个新的进程,用于把RDB文件写到硬盘上。过一会儿,其父进程递增地将文件传送给从站。
    # 2)无硬盘备份:redis主站创建一个新的进程,子进程直接把RDB文件写到从站的套接字,不需要用到硬盘。
    # 在硬盘备份的情况下,主站的子进程生成RDB文件。一旦生成,多个从站可以立即排成队列使用主站的RDB文件。
    # 在无硬盘备份的情况下,一次RDB传送开始,新的从站到达后,需要等待现在的传送结束,才能开启新的传送。
    # 如果使用无硬盘备份,主站会在开始传送之前等待一段时间(可配置,以秒为单位),希望等待多个子站到达后并行传送。在硬盘低速而网络高速(高带宽)情况下,无硬盘备份更好。
    repl-diskless-sync no
    
    # 当启用无硬盘备份,服务器等待一段时间后才会通过套接字向从站传送RDB文件,延迟时间以秒为单位,默认为5秒。设置0秒为关闭,传送会立即启动。一旦传送开始,就不能再为一个新到达的从站服务。从站则要排队等待下一次RDB传送
    repl-diskless-sync-delay 5
    
    # 从redis会周期性的向主redis发出PING包,默认是10秒
    repl-ping-slave-period 10
    
    # 在主从同步时,可能在这些情况下会有超时发生:
    # 以从redis的角度来看,当有大规模IO传输时。
    # 以从redis的角度来看,当数据传输或PING时,主redis超时
    # 以主redis的角度来看,在回复从redis的PING时,从redis超时
    # 用户可以设置上述超时的时限,要确保比repl-ping-slave-period的值要大,否则每次主redis都会认为从redis超时
    repl-timeout 60
    
    # 同步之后是否禁用从站上的TCP_NODELAY
    # yes会使用较少量的TCP包和带宽向从站发送数据。但这会导致在从站增加一点数据的延时。Linux内核默认配置情况下最多40毫秒的延时
    # no从站的数据延时不会那么多,但备份需要的带宽相对较多。默认情况下我们针对低延迟进行优化,但是在非常高的流量条件下,或者当主设备和从设备经过路由转发的次数多时,将其转为yes会更好
    repl-disable-tcp-nodelay no
    
    # 设置设置同步队列长度。同步队列是一个缓冲区,当从站断开一段时间,它替从站接收存储数据,当从站重连时,就不必重新全量同步数据,只需要同步这部分增量数据即可
    # 只要有一个从站连接,就会立刻分配一个同步队列
    repl-backlog-size 1mb
    
    # 如果主redis等了一段时间之后,还是无法连接到从redis,那么缓冲队列中的数据将被清理掉。默认是1个小时,0表示不释放
    repl-backlog-ttl 3600
    
    # 给从redis设置优先级,在主redis持续工作不正常的情况,优先级高的从redis将会升级为主redis。编号越小优先级越高,当优先级被设置为0时,这个从redis将永远也不会被选中。默认的优先级为100。
    slave-priority 100
    
    # 假如有大于等于3个从redis的连接延迟大于10秒,那么主redis就不再接受外部的写请求。上述两个配置中有一个被置为0,则这个特性将被关闭
    min-slaves-to-write 3
    min-slaves-max-lag 10
    
    # Redis主站能够以不同方式列出所连接从站的地址和端口
    # 从站可以使用以下两个选项,以便向其主站报告一组特定的IP和端口,以便INFO和ROLE都报告这些值。
    slave-announce-ip 5.5.5.5
    slave-announce-port 1234
    
    ################################## SECURITY ###################################
    
    # 设置Redis连接密码,如果配置了连接密码,客户端在连接Redis时需要通过auth <password>命令提供密码,默认关闭
    requirepass foobared
    
    #   将命令重命名,为了安全考虑,可以将某些重要的、危险的命令重命名。当把某个命令重命名成空字符串的时候就等于取消了这个命令
    rename-command CONFIG ""
    
    ################################### CLIENTS ####################################
    
    # 设置同一时间最大客户端连接数,默认无限制,Redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件描述符数,如果设置maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis会关闭新的连接并向客户端返回max Number of clients reached错误信息
    maxclients 10000
    
    ############################## MEMORY MANAGEMENT ################################
    
    # 指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key,移除规则可以通过maxmemory-policy来指定,当处理后,仍然到达最大内存,将无法再进行写入操作,但仍然可以进行读取操作
    # Redis新的vm机制,会把Key存放内存,Value会存放在swap区
    maxmemory <bytes>
    
    # 当内存使用达到最大值时,redis使用的清除策略:
    # LRU表示最近最少使用,LFU意味着最少使用
    # volatile-lru -> 利用LRU算法移除设置过过期时间的key
    # allkeys-lru -> 利用LRU算法移除任何key
    # volatile-lfu -> 利用LFU算法移除设置过过期时间的key
    # allkeys-lfu -> 利用LFU算法移除任何key
    # volatile-random -> 移除设置过过期时间的随机key
    # allkeys-random -> 移除随机key
    # volatile-ttl -> 移除即将过期的key(minor TTL)
    # noeviction -> 不移除任何key,只是返回一个写错误 ,默认选项
    maxmemory-policy noeviction
    
    # LRU,LFU和最小TTL算法不是精确的算法,而是近似算法(为了节省内存),默认Redis将检查五个键并选择最近使用的键,可以配置指令更改样本大小获得速度或精度。默认值5会产生足够好的结果,10非常接近真实的LRU但耗CPU,3更快但不是很准确。
    maxmemory-samples 5

    https://www.cnblogs.com/autohome7390/p/6433956.html
  • 相关阅读:
    socket协议和http协议性能对比
    PHP对象在内存中的分配
    如何打造高性能Web应用
    ubuntu 16.04 实现远程图形界面连接
    NACOS升级操作
    ulimit 更改 gcc升级 查看显卡状态命令
    CentOS7下firewall-cmd防火墙使用
    Nacos 1.1.0发布,支持灰度配置和地址服务器模式
    NGINX限流配置
    学Redis
  • 原文地址:https://www.cnblogs.com/jhxxb/p/11736342.html
Copyright © 2020-2023  润新知