简介

Redis是一个开源内存数据结构存储,用作数据库,缓存和消息代理。它支持多种数据结构,如字符串,散列,列表,集合,有序集合等。Redis具有内置复制,Lua脚本,LRU(Least Recently Used的缩写,即最近最少使用,常用于页面置换算法),事务和持久存储,并通过Redis 哨兵和Redis 集群提供高可用解决方案
使用的端口默认为6379/tcp

安装

官网的下载页面:https://redis.io/download 这里安装的是Redis5.0版本

tar xf redis-5.0.0.tar.gz 
cd redis-5.0.0
make

设置环境变量(非必要)

cd ../
mv redis-5.0.0 /usr/local/
ln -sv /usr/local/redis-5.0.0/ /usr/local/redis
echo 'export  PATH=/usr/local/redis/src/:$PATH' > /etc/profile.d/redis.sh
source  /etc/profile.d/redis.sh

启动

redis-server   /usr/local/redis/redis.conf  &

5000迸发的redis主机硬件要求 redis硬件配置_Redis常用配置项

可以进入测试一下

设置一个键值对 键为k1,值为v1。

5000迸发的redis主机硬件要求 redis硬件配置_Redis常用配置项_02

常用的配置项

Redis编译安装的时候配置文件为tar包下的redis.conf

[root@localhost redis]# grep -E "^####" redis.conf 
################################## INCLUDES ####################################
################################## MODULES #####################################模块
################################## NETWORK #####################################网络相关配置
################################# GENERAL #####################################通用配置
################################ SNAPSHOTTING  ################################快照相关配置
################################# REPLICATION #################################复制相关配置
################################## SECURITY ###################################安全相关配置
################################### CLIENTS ####################################客户端相关配置
############################## MEMORY MANAGEMENT ################################内存管理
############################# LAZY FREEING ####################################
############################## APPEND ONLY MODE ###############################AOF相关配置
################################ LUA SCRIPTING  ###############################LUA脚本
################################ REDIS CLUSTER  ###############################Redis集群相关配置
########################## CLUSTER DOCKER/NAT support  ########################
################################## SLOW LOG ###################################慢查询相关配置
################################ LATENCY MONITOR ##############################延迟监控配置
############################# EVENT NOTIFICATION ##############################时间通知相关配置
############################### ADVANCED CONFIG ###############################高级配置
########################### ACTIVE DEFRAGMENTATION #######################主动碎片整理

常用的网络配置项

  • bind IP
    监听的ip地址
  • port PORT
    监听的端口
  • protected-mode
    保护模式,避免Redis完全开放在互联网上。如果bind没有指定,密码也没有指定这时候,默认监听127.0.0.1这个地址。
  • tcp-backlog
    TCP监听的最大容纳数量,在高并发的环境下,你需要把这个值调高以避免客户端连接缓慢的问题。Linux 内核会把这个值缩小成 /proc/sys/net/core/somaxconn对应的值,要提升并发量需要修改这两个值才能达到目的
  • unixsocket
    套接字文件位置
  • timeout
    连接的空闲超时时长;

常用的通用配置项

  • daemonize
    是否以守护进程方式运行,默认为no,如果需要守护进程方式运行可以改为yes
  • supervised
    当利用upstart和systemd管理Redis守护进程启动时,可以定义与supervised tree之间的互动模式,一般用supervised no 没有监督互动
  • loglevel
    设置日志级别,一般为notice
  • logfile
    日志文件位置
  • pidfile
    pid文件位置
  • databases
    设定数据库数量,默认为16个,每个数据库的名字均为整数,从0开始编号,默认操作的数据库为0;

快照相关配置

  • save <seconds> <changes>
    快照的配置
示例:
save 900 1   #900秒(15分钟)内至少1个key值改变,触发SNAPSHOTTING操作
save 300 10  #300秒(5分钟)内至少10个key值改变,触发SNAPSHOTTING操作
save 60 10000 #60秒(1分钟)内至少10000个key值改变,触发SNAPSHOTTING操作
  • stop-writes-on-bgsave-error yes
    dump操作出现错误时,是否禁止新的写入操作请求;
  • rdbcompression yes
    快照文件是否压缩
  • rdbchecksum yes
    是否校验快照文件
  • dbfilename dump.rdb
    指定rdb文件名
  • dir /var/lib/redis
    rdb文件的存储路径

复制相关配置

  • slaveof
    复制选项,slave复制对应的master
  • masterauth
    master设置了口令,则需要这一项配置master的口令。
  • slave-serve-stale-data yes
    当从库同主机失去连接或者复制正在进行,从机库有两种运行方式:1) 如果slave-serve-stale-data设置为yes(默认设置),从库会继续响应客户端的请求。2) 如果slave-serve-stale-data设置为no,除去INFO和SLAVOF命令之外的任何请求都会返回一个错误”SYNC with master in progress”。
  • slave-read-only yes #
    从节点是否只读
  • repl-diskless-sync no
    是否使用socket方式复制数据。目前redis复制提供两种方式,disk和socket。如果新的slave连上来或者重连的slave无法部分同步,就会执行全量同步,master会生成rdb文件。有2种方式:disk方式是master创建一个新的进程把rdb文件保存到磁盘,再把磁盘上的rdb文件传递给slave。socket是master创建一个新的进程,直接把rdb文件以socket的方式发给slave。disk方式的时候,当一个rdb保存的过程中,多个slave都能共享这个rdb文件。socket的方式就的一个个slave顺序复制。在磁盘速度缓慢,网速快的情况下推荐用socket方式。
  • repl-diskless-sync-delay 5
    diskless复制的延迟时间,防止设置为0。一旦复制开始,节点不会再接收新slave的复制请求直到下一个rdb传输。所以最好等待一段时间,等更多的slave连上来。
  • repl-ping-slave-period 10
    slave根据指定的时间间隔向服务器发送ping请求。时间间隔可以通过 repl_ping_slave_period 来设置,默认10秒
  • repl-timeout 60
    复制连接超时时间,master和slave都有超时时间的设置。master检测到slave上次发送的时间超过repl-timeout,即认为slave离线,清除该slave信息。slave检测到上次和master交互的时间超过repl-timeout,则认为master离线。需要注意的是repl-timeout需要设置一个比repl-ping-slave-period更大的值,不然会经常检测到超时。
  • repl-disable-tcp-nodelay no
    表示数据立即传输 不等待
  • repl-backlog-size 1mb
    复制缓冲区大小,这是一个环形复制缓冲区,用来保存最新复制的命令。这样在slave离线的时候,不需要完全复制master的数据,如果可以执行部分同步,只需要把缓冲区的部分数据复制给slave,就能恢复正常复制状态。缓冲区的大小越大,slave离线的时间可以更长,复制缓冲区只有在有slave连接的时候才分配内存。没有slave的一段时间,内存会被释放出来,默认1m。
  • slave-priority 100
    复制集群中,主节点故障时,sentinel应用场景中的主节点选举时使用的优先级;数字越小优先级越高,但0表示不参与选举;
  • min-slaves-to-write 3
    redis提供了可以让master停止写入的方式,如果配置了min-slaves-to-write,健康的slave的个数小于N,mater就禁止写入。master最少得有多少个健康的slave存活才能执行写命令。这个配置虽然不能保证N个slave都一定能接收到master的写操作,但是能避免没有足够健康的slave的时候,master不能写入来避免数据丢失。设置为0是关闭该功能
  • min-slaves-max-lag 10
    延迟小于min-slaves-max-lag秒的slave才认为是健康的slave。

安全配置

  • requirepass
    配置口令
  • rename-command <NEW_CMND_NAME>
    将命令重命名,为了安全考虑,可以将某些重要的、危险的命令重命名。当你把某个命令重命名成空字符串的时候就等于取消了这个命令。在AOF或Replication环境中,不推荐使用;

客户端相关的配置

  • maxclients
    设置客户端最大并发连接数,默认无限制,Redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件描述符数-32(redis server自身会使用一些),如果设置 maxclients为0 ,表示不作限制。当客户端连接数到达限制时,Redis会关闭新的连接并向客户端返回max number of clients reached错误信息

内存管理相关配置

  • maxmemory
    指定Redis最大内存限制
  • maxmemory-policy noeviction
    淘汰策略:volatile-lru, allkeys-lru, volatile-random, allkeys-random, volatile-ttl, noeviction
    1)volatile-lru 利用LRU算法移除,选择范围是设置了过期时间的key(因为用户如果设置了过期时间,可以认为这部分反正都要过期的用的又很少。所以可以提前被淘汰)
    2)allkeys-lru 利用LRU算法移除,选择范围是所有key
    3)volatile-random 随机移除,选择范围是设置了过期时间的key
    4)allkeys-random 随机移除,选择范围是所有key
    5)volatile-ttl 移除即将过期的key(minor TTL)
    6)noeviction noeviction 不移除任何key,只是返回一个写错误 ,默认选项
  • maxmemory-samples 5
    淘汰算法运行时的采样样本数;如果淘汰的选择范围是所有key,这时候如果全部拿出来选择肯定是低效的,所有采用一批选5个key,直接在5个里面比较进行淘汰。

AOF相关配置

  • appendonly no
    AOF持久化方式是否打开
  • appendfilename “appendonly.aof”
    AOF文件名
  • appendfsync
    aof持久化策略的配置:
    no:redis不执行主动同步操作,而是OS进行;
    everysec:每秒一次;
    always:每语句一次;
  • no-appendfsync-on-rewrite no
    是否在后台执行aof重写期间不调用fsync,默认为no,表示调用;
  • auto-aof-rewrite-percentage 100
    aof自动重写配置。当目前aof文件大小超过上一次重写的aof文件大小的百分之多少进行重写,即当aof文件增长到一定大小的时候Redis能够调用bgrewriteaof对日志文件进行重写。当前AOF文件大小是上次日志重写得到AOF文件大小的二倍(设置为100)时,自动启动新的日志重写过程。
  • auto-aof-rewrite-min-size 64mb
    上述两个条件同时满足时,方会触发重写AOF;与上次aof文件大小相比,其增长量超过100%,且大小不少于64MB;

SlowLog相关的配置:

  • slowlog-log-slower-than 1000
    超过这个设置的值属于慢查询,单位是微秒;
  • slowlog-max-len 128
    SlowLog记录的日志最大条目;

ADVANCED配置

  • client-output-buffer-limit normal 0 0 0
    对客户端输出缓冲进行限制可以强迫那些不从服务器读取数据的客户端断开连接,用来强制关闭传输缓慢的客户端。
    #对于normal client,第一个0表示取消hard limit,第二个0和第三个0表示取消soft limit,normal client默认取消限制,因为如果没有寻问,他们是不会接收数据的。
  • client-output-buffer-limit slave 256mb 64mb 60 意思为:硬限制256m,软限制64m,超出软限的部分过了60s直接删