核心:在Linux下面开发,配置大于编码
在Linux中启动redis时,通过配置文件来启动,所以我们有必要去了解一下redis 的配置文件参数内容
一、Units 单位
可以看到 redis
此处在配置大小单位,开头定义了一些基本的度量单位,只支持 bytes
, 不支持 bit
,并且结尾也说了redis
对大小写并不敏感
二、Includes 包含
和我们之前学的JSP
一样,类似那种主文件包含子文件的意思,此时 redis.conf
作为总闸,包含其他配置文件
三、MODULES 模块(了解即可)
在启动时加载模块。如果服务器无法加载模块
它将中止。可以使用多个loadmodule指令
四、Network 网络(重要)
IP地址的绑定(bind)
默认情况 bind = 127.0.0.1 只能接受本机的访问请求
不写的情况下,无限制接受任何 IP地址的访问,也可以写接受你本地的IP地址(只能接受你本地的访问)
如果在生产环境下 肯定要写你应用服务器的地址
另外如果开启了 protected-mode
。那么在没有设定bing IP 且没有设置密码的情况下,Redis 只允许接受本机的响应
tcp-backlog
(连接队列)
可以理解是一个请求到达 后 直到 接受进程处理前的队列
backlog
队列总和 = 未完成三次握手队列+ 已经完成三次握手队列
在高并发环境下 你需要设置一个 高backlog
值来避免客户端连接问题。
注意 Linux
内核会将这个值减小到 /proc/sys/net/core/somaxconn
的值,所以需要确认增大 somaxconn
和 tcp_max_syn_backlog
两个值 来达到想要的效果
高并发环境 设置 tcp-backlog
的值由 超时时限内 的 Reids
吞吐量决定
timeout
一个空闲的客户端维持多少秒会关闭,0 为 永不关闭
tcp keepalive
对访问客户端的一种心跳检测,每隔 n
秒 检测一次
官方推荐设置为 60
秒 , 如果设置为 0
,则不会进行 keepalive的检测 !
五、TLS/SSL (了解即可)
Redis
遵循的安全协议,默认情况下,TLS/SSL处于禁用状态
六、 GENERAL (通用)
daemnize
是否为后台进程(守护进程),默认为 no
,我们需要自己开启为 yes
pidfile
存放 pid
文件的位置,如果以后台的方式运行,我们就需要指定一个 pid
文件,每一个实例都会产生一个不同的 pid
文件 , pid
即为 进程号。
loglevel notice
日志级别通知
四个级别根据使用阶段来选择,生产环境选择 notice
或者 warning
四个级别,从上到下,级别越来越高,级别越高,日志信息越少(越重要),级别越低的,日志信息越多,级别低的 包含级别高的日志信息
七、SNAPSHOTTING (快照)
Save the DB to disk. 也就是将数据库保存到磁盘
上述的
save
命令
在规定的时间内,进行了多少次操作,则会持久化到文件 (.rdb文件 或 .aof文件)
因为 Redis
是内存数据库,如果没有进行持久化,则数据是断电即失的 !
例如:
save 3600 1
意思为:如果在3600
秒内,至少有一个key
进行了修改,则会进行持久化操作
八、REPLICATION (复制) 了解即可
主要说明 Redis
中关于复制副本的参数以及实现
九、KEYS TRACKING (key 跟踪)了解即可
Redis实现了对客户端缓存值的服务器辅助支持。
这是使用一个失效表实现的,该表使用 一个基数键,按键名、客户端拥有哪些键进行索引
跟踪表最大密钥数1000000
十、SECURITY 安全(重要)
redis
服务的密码 分为 临时密码
和 永久密码
临时密码
就是在命令行中设置的密码,指令中的内容只在内存中有效
临时密码demo
永久密码 设置
十一、CLIENTS 客户
十二、MEMORY MANAGEMENT 内存管理
maxmemory
设置 Redis 可以使用的内存量,一旦到达内存使用上限
Redis 将会试图移除内部数据,移除规则可以通过 maxmemory-policy
来指定。
如果Redis无法根据移除规则来移除内存中的数据,或者设置了 不允许移除
,那么Redis则会针对那些需要申请内存的指令返回错误信息,比如 SET
、LPUSH
等。
maxmemory-policy
内存到达上限之后的处理策略
1. volatile-lru:使用LRU(最近最少使用)算法移除 key
只对设置了过期时间的 key
(默认值)
2. allkeys-lru:删除LRU
算法的key
3. volatile-random:随机删除即将过期的key
4. allkeys-random:随机删除
5. volatile-ttl:删除即将过期的key
6. noeviction:永不过期,不进行移除,针对写操作,只是返回错误
maxmemory-samples
设置样本数量,LRU 算法和 最小TTL算法都并非是精确的算法,而是估算值,所以你可以设置样本的大小。
一般设置3 至 7 的数字,数值越小样本越不准确,但是性能消耗也越小。
一般设置 3、4、5 ,数字太大的话,性能消耗也大!
十三、APPEND ONLY MODE 附加模式