redis优化配置和redis.conf说明

redis优化配置和redis.conf说明

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

1. redis.conf 配置參数:

#是否作为守护进程执行

daemonize yes

#如以后台进程执行,则需指定一个pid,默觉得/var/run/redis.pid

pidfile redis.pid

#绑定主机IP,默认值为127.0.0.1

#bind 127.0.0.1

#Redis默认监听port

port 6379

#client闲置多少秒后,断开连接,默觉得300(秒)

timeout 300

#日志记录等级,有4个可选值,debug,verbose(默认值),notice,warning

loglevel verbose

#指定日志输出的文件名称,默认值为stdout,也可设为/dev/null屏蔽日志

logfile stdout

#可用数据库数,默认值为16,默认数据库为0

databases 16

#保存数据到disk的策略

#当有一条Keys数据被改变是,900秒刷新到disk一次

save 900 1

#当有10条Keys数据被改变时,300秒刷新到disk一次

save 300 10

#当有1w条keys数据被改变时,60秒刷新到disk一次

save 60 10000

#当dump .rdb数据库的时候是否压缩数据对象

rdbcompression yes

#本地数据库文件名称,默认值为dump.rdb

dbfilename dump.rdb

#本地数据库存放路径,默认值为 ./

dir /var/lib/redis/

 

########### Replication #####################

#Redis的复制配置

# slaveof <masterip> <masterport> 当本机为从服务时,设置主服务的IP及端口

# masterauth <master-password> 当本机为从服务时,设置主服务的连接密码

#连接password

# requirepass foobared

#最大client连接数,默认不限制

# maxclients 128

#最大内存使用设置,达到最大内存设置后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理后,任到达最大内存设置,将无法再进行写入操作。

# maxmemory <bytes>

#是否在每次更新操作后进行日志记录,假设不开启,可能会在断电时导致一段时间内的数据丢失。由于redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内仅仅存在于内存中。默认值为no

appendonly no

#更新日志文件名称,默认值为appendonly.aof

#appendfilename

#更新日志条件,共同拥有3个可选值。no表示等操作系统进行数据缓存同步到磁盘,always表示每次更新操作后手动调用fsync()将数据写到磁盘,everysec表示每秒同步一次(默认值)。

# appendfsync always

appendfsync everysec

# appendfsync no

 

################ VIRTUAL MEMORY ###########

#是否开启VM功能,默认值为no

vm-enabled no

# vm-enabled yes

#虚拟内存文件路径,默认值为/tmp/redis.swap,不可多个Redis实例共享

vm-swap-file /tmp/redis.swap

# 将全部大于vm-max-memory的数据存入虚拟内存,不管vm-max-memory设置多小,全部索引数据都是内存存储的 (Redis的索引数据就是keys),也就是说,当vm-max-memory设置为0的时候,事实上是全部value都存在于磁盘。默认值为0。

vm-max-memory 0

vm-page-size 32

vm-pages 134217728

vm-max-threads 4

 

############# ADVANCED CONFIG ###############

glueoutputbuf yes

hash-max-zipmap-entries 64

hash-max-zipmap-value 512

#是否重置Hash表

activerehashing yes

注意:Redis官方文档对VM的使用提出了一些建议:

当你的key非常小而value非常大时,使用VM的效果会比較好.由于这样节约的内存比較大.

当你的key不小时,能够考虑使用一些非常方法将非常大的key变成非常大的value,比方你能够考虑将key,value组合成一个新的value.

最好使用linux ext3 等对稀疏文件支持比較好的文件系统保存你的swap文件.

vm-max-threads这个參数,能够设置訪问swap文件的线程数,设置最好不要超过机器的核数.假设设置为0,那么全部对swap文件的操作都是串行的.可能会造成比較长时间的延迟,可是对数据完整性有非常好的保证.

 

2. 调整系统内核參数

假设内存情况比較紧张的话,须要设定内核參数:

echo 1 > /proc/sys/vm/overcommit_memory

这里说一下这个配置的含义:/proc/sys/vm/overcommit_memory
该文件指定了内核针对内存分配的策略,其值能够是0、1、2。
0,表示内核将检查是否有足够的可用内存供应用进程使用;假设有足够的可用内存,内存申请同意;否则,内存申请失败,并把错误返回给应用进程。
1,表示内核同意分配全部的物理内存,而无论当前的内存状态怎样。
2,表示内核同意分配超过全部物理内存和交换空间总和的内存
Redis 在dump数据的时候,会fork出一个子进程,理论上child进程所占用的内存和parent是一样的,比方parent占用的内存为 8G,这个时候也要相同分配8G的内存给child, 假设内存无法负担,往往会造成redisserver的down机或者IO负载过高,效率下降。所以这里比較优化的内存分配策略应该设置为 1(表示内核同意分配全部的物理内存,而无论当前的内存状态怎样)

 

 

一、 执行服务

# redis-server /etc/redis/redis.conf 开启

# redis-cli shutdown 关闭

二、 測试

1) 可在后台启动redis服务后,用redis-benchmark命令測试

2) 通过redis-cli命令实际操作測试

 

三、 保存/备份

数据备份能够通过定期备份该文件实现。
由于redis是异步写入磁盘的,假设要让内存中的数据立即写入硬盘能够运行例如以下命令:
redis-cli save 或者 redis-cli -p 6380 save(指定port)
注意,以上部署操作须要具备一定的权限,比方复制和设定内核參数等。
运行redis-benchmark命令时也会将内存数据写入硬盘。 

四、 开启port号

1) 打开/etc/sysconfig/iptables,

2) 在-【A INPUT -p tcp -m state –state NEW -m tcp –dport 22 -j ACCEPT】后面,加上 【-A INPUT -p tcp -m state –state NEW -m tcp –dport 6379 -j ACCEPT】  //这里的6379是Redis默认端口号

3) 保存,重新启动防火墙:/etc/init.d/iptables restart 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/118054.html原文链接:https://javaforall.net

(0)
上一篇 2021年12月14日 下午12:00
下一篇 2021年12月14日 下午1:00


相关推荐

  • 简单了解Activity工作流引擎

    简单了解Activity工作流引擎一、什么是工作流以请假为例,现在大多数公司的请假流程是这样的员工打电话(或网聊)向上级提出请假申请——上级口头同意——上级将请假记录下来——月底将请假记录上交公司——公司将请假录入电脑采用工作流技术的公司的请假流程是这样的员工使用账户登录系统——点击请假——上级登录系统点击允许就这样,一个请假流程就结束了有人会问,那上级不用向公司提交请假记录?公司不用将记录录入电脑?答案…

    2022年7月11日
    24
  • SQL函数大全及示例汇总

    SQL函数大全及示例汇总这里写自定义目录标题概述 1 聚合函数 2 转换函数 3 日期函数 4 数字函数 5 字符串函数 6 系统函数 7 文本和图像函数概述 SQL 中包含以下七种类型的函数 聚合函数 返回汇总值 转型函数 将一种数据类型转换为另外一种 日期函数 处理日期和时间 数学函数 执行算术运算 字符串函数 对字符串 二进制数据或表达式执行操作 系统函数 从数据库返回在 SQLSERVER 中的值 对象或设置的特殊信

    2026年3月17日
    2
  • Vuforia添加虚拟按键

    Vuforia添加虚拟按键AR 虚拟按键为真实识别图上的按键 通过按键可以实现真实与虚拟之间的按键交流 一 添加按键点击 target 打开 advance 添加虚拟按键 即可在此 target 下添加虚拟按键注 虚拟按键无法旋转 只能更改长宽 可以通过 Name 给虚拟按键添加一个标识 通过 name 访问到此按键 二 按键触发 publicclassV MonoBehaviou

    2026年3月18日
    3
  • pycharm操作mysql数据库 创建表 向表中插入数据 操作mysql数据库查询 修改 删除数据

    pycharm操作mysql数据库 创建表 向表中插入数据 操作mysql数据库查询 修改 删除数据1 安装 PyMySQL 模块语法为 pipinstallPy 集成环境里面操作 MySQL 数据库创建表 导入 pymysqlimpor 创建连接 con pymysql connect host localhost user root password root database test port 3

    2025年7月22日
    6
  • 使用vue创建项目的详细步骤

    使用vue创建项目的详细步骤一 前言 1 本例环境 node js v12 14 1npm v6 13 4vue vue cli4 2 32 node js 环境安装与测试由于 vue 的安装与创建依赖 node js JavaScript 的运行环境 里的 npm 包管理和分发工具 因此需要先确保安装 node js 检测方式 打开 cmd 命令窗口 Window R 输入 cmd 然后回车 输入 node

    2026年3月20日
    2
  • 常见WAF_WEB应用防火墙_运维必备_应用安全

    常见WAF_WEB应用防火墙_运维必备_应用安全排名无先后,只做汇总统计,方便各位管理服务器安全1ShareWAF有http://www.sharewaf.com/2GOODWAF免费云WEB应用防火墙,全面防御web/SQL/XSS/0day/爬虫等攻击,具备防篡改,防数据泄露,防盗链等功能,终身免费使用,保护企业web业务安全https://www.goodwaf.cn/3ModSecurityhttp://www.modsecurity.cn/ModSecurity是目前世界上使用最多的开源WA…

    2022年6月2日
    42

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号