Redis 安装配置
一、简介
全称 Redis-REmote DIctionary Server
高性能 key-value 数据库
内存数据库,支持数据持久化
二、安装
1.编译安装
这里下载Linux版本的。也有 Windows 版本的,但不是官方的,由微软维护,还有其它 windows 版本:tporadowski/redis、redis-windows、memurai
# 下载 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
编译成功,可执行文件在指定目录下
# 启动服务,加上&为后台运行,不占用命令行 ./redis-server & # 指定配置文件方式启动 ./redis-server ${redis.conf} # 指定端口号启动 ./redis-server --port 端口号 # 强制停止服务 kill -9 PID进程号 # 停止服务 ./redis-cli -p 端口号 -h 地址 shutdown
./redis-cli -p 端口号 -h 地址 shutdown save
./redis-cli -p 端口号 -h 地址 shutdown nosave
# 启动客户端 ./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 配置项来指定 unixsocket 文件的路径,并通过 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,一般只适用于那些生命周期非常短的数据,因为在主从同步时,这些临时数据就会被清理掉。自从 redis 2.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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下