一,创建redis的数据和日志目录:

[root@yjweb data]# mkdir /data/redis6379
[root@yjweb data]# mkdir /data/redis6379/data
[root@yjweb data]# mkdir /data/redis6379/log

说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

对应的源码可以访问这里获取: https://github.com/liuhongdi/

说明:作者:刘宏缔 邮箱: 371125307@qq.com

二,redis运行环境的linux配置

1,设置系统中每个端口的监听队列的最大的长度

[root@yjweb log]# sysctl -a | grep somaxconn
net.core.somaxconn = 128

我们修改为大于redis中的TCP backlog值

说明:redis中的TCP backlog值默认是511

tcp-backlog 511
[root@yjweb log]# vi /etc/sysctl.conf

增加一行:

net.core.somaxconn = 1024

使配置起作用:

[root@yjweb log]# sysctl -p

说明:

sysctl命令用来显示和配置内核运行时参数
-a:显示所有的配置参数
-p:从/etc/sysctl.conf加载配置

参见:

[root@yjweb log]# man sysctl

2,配置overcommit_memory

说明:内核参数overcommit_memory 

它是 内存分配策略

有三个值可用:0、1、2。

0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2, 表示内核允许分配超过所有物理内存和交换空间总和的内存

这里面,2这种策略不够安全,

0有可能发生申请失败的情况

redis建议我们采用1的策略

编辑内核参数配置文件

[root@yjweb log]# vi /etc/sysctl.conf

增加一行:

vm.overcommit_memory=1

使配置起作用:

[root@yjweb log]# sysctl -p

检查是否生效

[root@yjweb log]# sysctl -a | grep overcommit_memory
vm.overcommit_memory = 1

说明;此处注意给redis分配的内存大小

maxmemory的值不要超过物理内存的四分之三,

否则有可能引发系统内存不足

3,关闭Transparent Huge Pages(THP)

[root@localhost ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never

说明:透明大页内存管理会影响数据的访问速度,可以关闭

关闭方法:

[root@yjweb log]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
[root@yjweb log]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]

成功了,为了保证开机重启后还能自动写入配置,

参见这一篇:

centos8下启用rc-local服务
地址:https://www.cnblogs.com/architectforest/p/12467474.html

二,修改配置文件redis.conf

[root@yjweb conf]# vi /usr/local/soft/redis5/conf/redis.conf 

内容:

1,指定监听的本地ip

bind 10.51.136.133

说明:如果bind 127.0.0.1   则只能从本机访问。

请确认是否只从本机访问redis,

否则建议设置为可以从网络访问的地址

2,保护模式:

protected-mode yes

说明:

protected-mode 会在没有设置 bind 和 密码时起作用,

建议protected-mode设置为yes

3,指定端口号

port 6379

说明:

如果在同一台机器上运行多个redis实例,各个实例的端口要区分开

4,指定密码:

requirepass demopassword

说明:安全起见,此处应该指定一个有复杂度的密码

5,指定以daemon方式运行

daemonize yes

6,loglevel : 保持值为notice即可:

loglevel notice

说明:

# This can be one of:
# debug (a lot of information, useful for development/testing)
# verbose (many rarely useful info, but not a mess like the debug level)
# notice (moderately verbose, what you want in production probably)
# warning (only very important / critical messages are logged)

7,logfile 指定日志文件路径

logfile "/data/redis6379/log/redis.log"

使用上面创建的路径

8,指定数据文件的路径

dir /data/redis6379/data/

说明:此处的值只能是一个目录

9,使用的最大内存容量

maxmemory 128MB

10,最大并发连接数

maxclients 10000

不建议修改,注意这个值应该在ulimit -n 返回的值以内

ulimit -n 显示的是linux系统里单用户打开文件描述符的最大值

11,slowlog的时长:

# The following time is expressed in microseconds, so 1000000 is equivalent
# to one second. Note that a negative number disables the slow log, while
# a value of zero forces the logging of every command. slowlog-log-slower-than 10000

说明:这个值的单位是微秒,

默认值10000即10毫秒

注意不要设置为0,因为它会记录所有命令

12,slowlog的最大记录数

# There is no limit to this length. Just be aware that it will consume memory.
# You can reclaim memory used by the slow log with SLOWLOG RESET. slowlog-max-len 512

说明:默认值是128,

我们适当加大,这个值也可以从命令行中动态配置

例子:

127.0.0.1:6379> config set slowlog-max-len 1024
OK

说明:如何把动态配置的参数写入到配置文件当中?

127.0.0.1:6379> config rewrite
OK

修改完成后重启:

[root@yjweb conf]# systemctl stop redis
[root@yjweb conf]# systemctl start redis 

四,如何查看redis的慢查询日志?

1,当前的慢查询日志共多少条?

10.51.136.133:6379> slowlog len
(integer) 128

2,显示两条慢查询日志

10.51.136.133:6379> slowlog get 3
1) 1) (integer) 709
2) (integer) 1545732832
3) (integer) 13846
4) 1) "HGETALL"
2) "promotion_goods_detail"

说明:

第一个值:#日志的唯一标识符

第二个值:#命令执行是的UNIX时间戳

第三个值:#命令执行的时长,单位微妙

第四个值:#执行的命令及命令参数

3,清除所有的slowlog

127.0.0.1:6379> slowlog reset

五,查看redis的版本

[root@yjweb ~]$ /usr/local/soft/redis5/bin/redis-server --version
Redis server v=5.0.7 sha=00000000:0 malloc=libc bits=64 build=7abb9ee9ee0ce29b

六,查看centos的版本

[root@yjweb ~]$ cat /etc/redhat-release
CentOS Linux release 8.0.1905 (Core)

centos8上redis5在生产环境的配置的更多相关文章

  1. 分离Webpack开发环境与生产环境的配置

    这是Webpack+React系列配置过程记录的第五篇.其他内容请参考: 第一篇:使用webpack.babel.react.antdesign配置单页面应用开发环境 第二篇:使用react-rout ...

  2. 【Spring】使用@Profile注解实现开发、测试和生产环境的配置和切换,看完这篇我彻底会了!!

    写在前面 在实际的企业开发环境中,往往都会将环境分为:开发环境.测试环境和生产环境,而每个环境基本上都是互相隔离的,也就是说,开发环境.测试环境和生产环境是互不相通的.在以前的开发过程中,如果开发人员 ...

  3. Yarn 生产环境核心配置参数

    目录 Yarn 生产环境核心配置参数 ResourceManager NodeManager Container Yarn 生产环境核心配置参数 ResourceManager 配置调度器 yarn. ...

  4. Spring.profile实现开发、测试和生产环境的配置和切换

    软件开发过程一般涉及“开发 -> 测试 -> 部署上线”多个阶段,每个阶段的环境的配置参数会有不同,如数据源,文件路径等.为避免每次切换环境时都要进行参数配置等繁琐的操作,可以通过spri ...

  5. vue-cli 3.0 axios 跨域请求代理配置及生产环境 baseUrl 配置

    1. 开发环境跨域配置 在 vue.config.js 文件中: module.exports = { runtimeCompiler: true, publicPath: '/', // 设置打包文 ...

  6. IDEA开发、测试、生产环境pom配置及使用

    pom文件 一般放在最下面,project里 <!--开发环境.测试环境.生产环境--> <!--生产环境--> <profiles> <profile> ...

  7. [转]Docker 生产环境之配置容器 - 限制容器资源

    默认情况下,容器没有资源限制,可以使用主机内核调度程序允许的给定资源.Docker 提供了一些方法来控制容器可以使用多少内存.CPU 或块 IO,并设置 docker run 命令的运行时配置标志.本 ...

  8. django+vue+nginx生产环境部署配置

    部署环境: 1. linux redhat 7.1 2.python 3.6.3 3. vue 4. nginx 5. gunicorn 6. supervisord 安装: 一. 基础环境安装 1. ...

  9. elasticsearch7.5.0+kibana-7.5.0+cerebro-0.8.5集群生产环境安装配置及通过elasticsearch-migration工具做新老集群数据迁移

    一.服务器准备 目前有两台128G内存服务器,故准备每台启动两个es实例,再加一台虚机,共五个节点,保证down一台服务器两个节点数据不受影响. 二.系统初始化 参见我上一篇kafka系统初始化:ht ...

随机推荐

  1. 超详细!盘点Python中字符串的常用操作

    在Python中字符串的表达方式有四种 一对单引号 一对双引号 一对三个单引号 一对三个双引号 a = 'abc' b= "abc" c = '''abc''' d = " ...

  2. python中使用token模拟登录

    背景:在接口测试中我们经常是需要一个登陆token,或者获取其他用到的参数来关联下一个接口用到的参数. Token的意义及用法 一.Token的来源: 当客户端多次向服务端请求数据时,服务端就需要多次 ...

  3. Django+bootstrap启动登录模板页面(Django三)

    上次用Django启动了我的第一个页面 具体步骤参考:初步启动DjangoDjango启动第一个页面但是页面非常简陋,所以我从网上找了个模板,下载网址:免费下载模板,解压后内部文件如下: 效果图:下面 ...

  4. Python远程连接Redis

    import redisr=redis.Redis(host='192.168.56.102',port=6379,db=0,password='jinxfredis' )r.set('name',' ...

  5. 痞子衡嵌入式:MCUXpresso IDE下添加C++源文件进SDK工程编译的方法

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下添加C++源文件进SDK工程编译的方法. 最近有客户反映在MCUXpresso IDE下的SDK工程里添加 ...

  6. Linux高级命令进阶

    输出重定向 场景:一般命令的输出都会显示在终端中,有些时候需要将一些命令的执行结果想要保存到文件中进行后续的分析/统计,则这时候需要使用到的输出重定向技术. >:覆盖输出,会覆盖掉原先的文件内容 ...

  7. golang 协程学习

    协程数据传递问题 func TestGoroutineData(t *testing.T) { var wg sync.WaitGroup wg.Add(1) i := 0 go func(j int ...

  8. CentOS 正在连接 127.0.0.1:8118... 失败:拒绝连接。

    今天centos使用wget下载东西的时候出现了 看下是否开启了代理 yicunyiye@yicunyiye:~/redis$ export | grep -i proxy declare -x ft ...

  9. uniapp vue v-html,显示富文本,内容img图片超出解决办法

    uniapp h5中,v-html,img图片中style=width:auto;会显示图片原来的尺寸,会超出屏幕,替换成width:100%,这样就不会超出屏幕 重要的地方,例如<img sr ...

  10. VUE开发(一)Spring Boot整合Vue并实现前后端贯穿调用

    文章更新时间:2020/03/14 一.前言 作为一个后端程序员,前端知识多少还是要了解一些的,vue能很好的实现前后端分离,且更便于我们日常中的调试,还具备了轻量.低侵入性的特点,所以我觉得是很有必 ...