redis 运维优化相关

数据库之Redis运维手册(私人整理) 1、redis配置文件 #cat 8000.conf daemonize no #[yes/no]默认值no,该参数用于定制redis服务是否以守护模式运行。 pidfile /var/run/redis.pid #默认值/var/run/redis.pid,指定redis服务的进程号文件路径,以守护模式运行时需要配置本参数; port 8000 #默认值6379,指定redis服务... 阅读详情

优化慢日志

127.0.0.1:6379>  slowlog get     (n 获取条数,默认为10条)      
	        
监控慢日志,修改配置文件redis.conf:
slowlog-log-slower-than 10000  #单位微秒
slowlog-max-len 选项指定服务器最多保存多少条慢查询日志

发现bigkey

命令 
redis-cli  --bigkeys 
采用scan 方式,分析bigkey以及每种字段类型平均使用内存情况

查看redis使用情况 redis info 命令相关

详细的可以看 http://redisdoc.com/server/info.html

查看当前使用情况: 
redis-cli info  [memory | replication|...]

一.查看内存 
redis-cli info  memory
used_memory_human:192.54M					#redis使用的内存,包括swap分区
used_memory_rss_human:256.61M			    #物理内存总量(俗称常驻集大小)一般used_memory_rss的值只应当比used_memory的值稍微高一点,如果差距很大,说明有内存碎片
used_memory_peak_human:227.46M				#r内存消耗峰值 ??
total_system_memory_human:31.36G			#系统内存
used_memory_lua_human:37.00K				#lua脚本引擎使用的内存总量
maxmemory_human:0B							#Redis能够使用的最大内存上限(0表示没有限制),以字节为单位
maxmemory_policy:noeviction					#redis内存回收策略[noeviction、allkeys-lru、volatile-lru、allkeys-random、volatile-random、volatile-ttl]
mem_fragmentation_ratio:1.33				#内存碎片的比率(过大的话需要重新导入)

主要观察两个指标:
1. used_memory_rss   和   used_memory   或 mem_fragmentation_ratio
used_memory_rss > used_memory 说明有内存碎片,过大的话需要重新导入
used_memory_rss < used_memory  说明内存不够用,要加机器内存或者修改最大内存的值了

内存碎片产生原因:
额外碎片的产生是由于Redis释放了内存块,但内存分配器并没有返回内存给操作系统,这个内存分配器是在编译时指定的,可以是libc、jemalloc或者tcmalloc。会导致,实际占用内寸高的问题
解决办法:重启Redis服务器~?



二.查看客户端连接情况
redis-cli info  clients
# Clients
connected_clients:313		            	#客户端连接的数量(来自从机的连接除外)
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0							#由于阻塞调用(BLPOP、BRPOP、BRPOPLPUSH)而等待的客户端的数量。

三、查看Redis服务器状态
redis-cli info  Stats
total_connections_received:56				#启动来Redis服务器接受的连接总数
total_commands_processed:52393				#处理的命令总数
instantaneous_ops_per_sec:6					#每秒钟处理的命令数量
total_net_input_bytes:1862414				#通过网络接收的数据总量,以字节为单位。
total_net_output_bytes:750529				#通过网络发送的数据总量,以字节为单位。
instantaneous_input_kbps:0.25				#每秒接受数据速率
instantaneous_output_kbps:0.07				#每秒发送数据速率	
rejected_connections:0						#由于maxclients限制而拒绝的连接数量

#主从相关
sync_full:0       							#主机和从机进行完全同步的次数
sync_partial_ok:0
sync_partial_err:0

expired_keys:1					#过期键总数
evicted_keys:0					#由于maxmemory限制,而被回收内存的键的总数。
keyspace_hits:35919				#在主字典中成功查找到键的次数。
keyspace_misses:567				#在主字典中未能成功查找到键的次数。???
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:894
migrate_cached_sockets:0
slave_expires_tracked_keys:0
active_defrag_hits:0
active_defrag_misses:0
active_defrag_key_hits:0
active_defrag_key_misses:0

四、查看命令使用情况
redis-cli info  commandstats
命令 ----调用次数----命令消耗的CPU时间总量-----每次执行命令消耗CPU时间的平均值(微秒)
cmdstat_get:calls=1042987138,usec=3100245183,usec_per_call=2.97
cmdstat_set:calls=8405476,usec=51001447,usec_per_call=6.07
cmdstat_setex:calls=27187256,usec=339466461,usec_per_call=12.49
cmdstat_del:calls=1953523,usec=10125078,usec_per_call=5.18
cmdstat_exists:calls=4083927,usec=12597033,usec_per_call=3.08
cmdstat_incr:calls=26561,usec=181897,usec_per_call=6.85
...


五、查看redis 各个库使用情况 :redis-cli info keyspace
数据库编号--------键数量--------过期key数量--------键平均生寸时间
db0:keys=10438,expires=0,avg_ttl=0
db1:keys=23,expires=3,avg_ttl=202262388
db5:keys=4,expires=0,avg_ttl=0
db6:keys=1,expires=1,avg_ttl=814949

六、查看实时redis使用情况
redis-cli monitor (这个命令线上禁止使用!很消耗性能)

redis AOF VS RDB

RDB(Redis DataBase)和AOF(Append Only File)
简单的说:RDB 是某个时间节点redis数据的快照,AOF是类似mysql binglog日志,将redis执行的指令保存下来。两种都是为redis数据备份方式。两者不冲突,可以同时开启~也可以只保留一个(aof 默认没有开启)

RDB优点
  1. RDB 在重启保存了大数据集的实例时比 AOF 要快(因为RDB是一个快照,AOF是很多指令合计)
  2. RDB 持久化时只需要父进程fock(但是fock的时候也会阻塞主进程)一个子进程,不影响父进程性能
  3. 可以复制RDB文件进行redis数据替换
RDB缺点
  1. RDB设置每隔多长时间多少个键值发生改变才进行快照替换(数据可能会丢失一部分)
  2. RDB是全量复制,如果数据集比较大时,fork的过程非常耗时也很吃机器性能。
AOF优点
  1. AOF最多只会丢失一秒数据,数据完整性高
  2. AOF是一个追加文件,在断电时也没有损坏问题,即使文件末尾写到一半,使用redis-check-aof 也可以很快修复
  3. AOF里面是一个一个的操作指令,很容易理解和解析,如果执行了误操作,可以打开aof日志文件删除对应的那行,然后重启恢复数据
AOF缺点
  1. 相同数据集的数据aof文件要远大于rdb文件,恢复速度慢于rdb(即使有AOF重写机制)
  2. aof运行效率低于rdb

AOF和RDB如何开启以及相关配置参数

AOF
  • aof 3种策略 always,every second,no (由系统决定什么时候追加)
  • 原生aof 和aof 重写(bgrewriteaof 类似生成rdb 文件)(将过期的,多次设置的key 压缩成小文件)节约硬盘,加快恢复速度
AOF 配置参数
appendonly yes(默认关着的)
appedfilename
appendfsync everysec
dir
no-appndfsyc-on-rewrite yes(aof 每秒备份,和重写之间可能会有冲突,并且耗性能,一般选择yes 可能会丢失部分数据)
aof 重写配置参数
 aoto-aof-rewrite-min-size 文件重写需要尺寸
 aoto-aof-rewrite-percentage 文件增长率
RDB(redis 默认持久化方式)
RDB配置文件
rdbcompression yes  #是否启用压缩,优点减少磁盘存储空间,消耗CPU资源
dbfilename dump.rdb # rdb文件名
dir ./ # rdb文件存储路径
save 900 1 # 15分钟内至少有一个键被更改 
save 300 10 # 5分钟内至少有10个键被更改
save 60 10000 # 1分钟内至少有10000个键被更改
手动执行备份
  • AOF 可以使用BGREWRITEAOF命令来重写AOF文件
  • RDB 可以使用SAVE和BGSAVE 来进行备份

AOF 和 RDB 如何选择

  • 如果允许数据丢失一部分而且数据可以从数据库补齐,建议只在Slave上持久化RDB文件,而且只要15分钟备份一次就够了,只保留save 900 1这条规则
  • AOF ~~~明天再研究、、AOF rewrite的最后将rewrite过程中产生的新数据写到新文件造成的阻塞几乎是不可避免的。只要硬盘许可,应该尽量减少AOF rewrite的频率,AOF重写的基础大小默认值64M太小了,可以设到5G以上。默认超过原大小100%大小时重写可以改到适当的数值。
  • 采用 主从结构,挂了也可以实现高可用……

进行数据备份子进程开销

  • CPU
  1. 不做CPU绑定
  2. 不和CPU密集型应用一起部署。单机多部署,防止进行同时aof和rdb重写
    内存
  3. fork 内存开销,理论上,fork内存消耗等于父进程,但是linux 中有显示复制(copy-on-write)父子进程可以共享共同的物理内存页,当父进程有写请求时,会创建一个副本(这个时候才会消耗内存)子进程可以共享父进程物理内存快照。-----当重写的时候,父进程有大量写入时,子进程内存开销比较大。
  4. linux 2.6.38内核中增加THP特性,支持大的内存页分配。为了增加frok速度。
    echo never > /sys/kernel/mm/transparent_hugepage/enable
  • 硬盘消耗
  1. 不要和高负载服务部署在一起:存储服务,消息队列
  2. no-appendfsync-on-rewirte =yes (aof重写期间,不进行aof追加)
  3. 使用SSD
  4. 单机多部署使用分盘 cgroup限制硬盘资源的分配

线上禁止使用的命令

 keys,flushall,flushdb,slow lua script,mutil/exec,operate big value(collection)

Tip

  • 如果配置了主从没有使用redis-sentinel,主库挂掉重启时,不能直接重启主库,否则会覆盖掉从库的aof文件

不重启修改配置信息

redis-cli config set appendonly yes
有些配置必须重启才可~  比如bind

redis 优缺点
https://mp.weixin.qq.com/s/SAagS7l-czClD7ZGxJgH1A

Redis 6.2&7 Rehash相关优化 | 运维进阶 随着key个数越多,rehash需要的额外内存也越大,所带来的可用性风险(大量逐出,Redis同步)和数据丢失(逐出)风险也越高。第一次灌入:67,100,000个key,观察内存第二次灌入:2,000,000个key,观察可用性和逐出。 阅读详情

相关推荐

STC8G1K08A 实战应用:从配置到功能实现

本文详细介绍了STC8G1K08A单片机的实战应用,从开发环境搭建、GPIO配置、ADC模块使用到定时器中断处理和PWM输出等核心功能。重点讲解了外设模块的协同工作配置技巧,并分享了实际项目开发中的经验教训,帮助开发者快速掌握STC8G1K08A的高效应用。

n4o5p6q7r的博客 390

Redis 全实践(超长文预警)

一:Redis 安装 1.1:yum 安装 1.1.1:安装前准备和查看 安装 epel 源 yum 安装 Redis 需要准备 epel 源: yum install epel-release 查看 epel 仓库中的 Redis 版本信息 [root@node106 ~]# yum info redis Available Packages Name : redis Arch : x86_64 Version : 3.2.12 Release : 2.el7

学渣角鹿白的博客 571

VSAN闪存缓存磁盘故障处理指南-RAID0模式实战解析

本文详细解析了VSAN集群中RAID0模式下的闪存缓存磁盘故障处理全流程。通过模拟真实故障场景,从告警识别、数据重建策略到磁盘组重构,提供了手把手的实战操作指南,并深入探讨了RAID0缓存故障的独特影响与风险,为运维人员应对此类高性能存储架构的突发问题提供了专业解决方案。

assembly8low的博客 444

netty字节处理IndexOutOfBoundsException

java.lang.IndexOutOfBoundsException: writerIndex(89) + minWritableBytes(61) exceeds maxCapacity(89): UnpooledHeapByteBuf(ridx: 89, widx: 89, cap: 89/89) at io.netty.buffer.AbstractByteBuf.ensureWr

yjh314的专栏 6654

SolidWorks+ADAMS双验证:你的机械臂力矩计算真的靠谱吗?

本文探讨了机械臂力矩计算中手工计算的局限性,并介绍了SolidWorks和ADAMS双验证方法的重要性。通过实际案例展示了动态工况下传统计算方法的误差,详细解析了SolidWorks精准质心捕捉和ADAMS动力学仿真的关键技术,帮助工程师构建计算-仿真-实测闭环验证流程,确保机械臂设计的可靠性和安全性。

grafana6viz的博客 228

跨时钟域传输数据——单bit和多bit信号(总结)

总结单bit和多bit信号的跨时钟域传输

qq_42135020的博客 1万+

redis使用中的问题

1、 项目中redis配置的单节点的,用jedispool访问。在项目运行一段时间后报错java.net.SocketException: Broken pipe。大家都知道,如果一个socket连接已经被远端给close掉了,但是客户端没有察觉,仍然通过这个连接读写数据,那么就会产生Broken pipe异常。最后发现错误的原因是因为我们重启了redis服务,导致有些redis被redis服务关闭

jing956899449的博客 1424

云原生之容器编排实践-在K8S集群中使用Registry2搭建私有镜像仓库

基于前面搭建的3节点 Kubernetes 集群,今天我们使用 Registry2 搭建私有镜像仓库,这在镜像安全性以及离线环境下运维等方面具有重要意义。作为测试环境,本次使用 Registry2 搭建了私有镜像仓库,实际生产环境建议使用 Harbor;创建了一个 local-storage 的 StorageClass ,并使用本地磁盘的方式创建使用 PV ,实际建议使用 NFS 。

Heartsuit的博客 2460

redis 运维讲解01

运维不需要往里面存数据,但是需要搭建、备份、扩容、收缩都是运维的工作,保证 redis 不能宕机、备份数据、协助开发查询数据。

Jerry00713的博客 2246

【异常】OpenClaw提示Message ordering conflict - please try again. If this persists, use /new to start a fr

摘要:OpenClaw助手出现"Message ordering conflict"异常时,表明会话消息排序冲突,主要由消息队列时序错乱、会话同步异常或上下文过载引起。解决方案包括:1)基础重试暂停后单发指令;2)最优方案是发送/new重置会话;3)极端情况下需重启客户端或检查指令格式。预防建议包括避免高频并发指令、定期重置会话及确保网络稳定。该报错属业务层异常,不影响账号安全。

奶爸的编程之路,也就一周冷个三天 422

Uncaught ReferenceError: process is not defined

这个错误 Uncaught ReferenceError: process is not defined 通常出现在浏览器环境中,因为 process 是 Node.js 环境的内置对象,并不是浏览器原生支持的。因此,浏览器无法识别 process,导致该错误。在App.vue中加上以下代码就能够有效解决。

猿小白的博客 1740

40道 Redis 运维面试题(附答案)

为了做好大家面试路上的助攻手,对于 Redis 这块心里还没底的同学,特整理 40 道Redis常见面试题,让你面试不慌,争取 Offer 拿到手软!1、什么是 Redis?Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key-value 数据库。Redis 与其他 key - value 缓存产品相比有以下三个特点:Redis 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。Redis 不仅仅支持简单的 key-value 类型的数据,同时还提供 li

Javachichi的博客 2398

MAX30102心率血氧传感器原理图设计,已量产(e-Health传感器)

在最近的便携健康监测设备项目中,我们采用了集成算法的 MAX30102 心率血氧模块 —— 这类带内置 MCU 算法的传感器能直接输出心率 / 血氧数值,大幅降低了主控资源占用。但硬件电路的稳定性直接决定了 PPG 信号的采集精度,下面结合实际项目里的原理图,拆解下这个模块的设计细节。

不脱发的程序猿 1276

中高级运维工程师运维面试题(六)之 Redis

本文通过问题与答案的形式,帮助大家全面掌握 Redis 的核心知识。

qq_37566948的博客 1319

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Redis 编程核心100个核心概览与剖析

此列表覆盖 Redis 的核心功能、生产级架构设计、性能调优及生态扩展,适合开发者与运维工程师系统化掌握 Redis 技术栈。每个主题均可结合实际场景(如电商秒杀、社交应用)深入实践!实现内存不足时自动淘汰最近最少使用的键。在性能与数据安全间取得平衡。

燃灯工作室 1102

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Redis资料汇总专题

原文链接:http://blog.nosqlfan.com/html/3537.html 1.Redis是什么? 十五分钟介绍 Redis数据结构Redis系统性介绍一个很棒的Redis介绍PPT强烈推荐!非同一般的Redis介绍Redis之七种武器锋利的Redisredis 适用场景与实现【翻译】Redis协议 2.Redis内部实现 Redis源码分析系列文章R

雕刻时间的专栏 686

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

中间件(Redis篇)

Redis相关文章汇总

老苏的一日三浪 418

Redis 命令行实战:从入门到精通

Redis 基础连接和数据库操作五种数据类型的常用命令运维相关的重要命令性能优化的关键建议学习 Redis 集群命令掌握 Redis 事务操作了解 Redis 持久化机制Redis 官方文档Redis 命令参考欢迎在评论区分享你的 Redis 使用经验!关注我,获取更多后端技术干货~

专注分享前沿IT技术,包括AI开发、Web开发、数据库、运维等领域的实战教程。全程保姆级讲解,手把手带你从入门到精通! 743

[转载] Redis资料汇总专题

转载自http://www.cnblogs.com/tommyli/archive/2011/12/14/2287614.html 1.Redis是什么? 十五分钟介绍 Redis数据结构 Redis系统性介绍 一个很棒的Redis介绍PPT 强烈推荐!非同一般的Redis介绍 Redis之七种武器 锋利的Redis redis 适用场景与实现 2.Redis内部实现 ...

weixin_30247307的博客 84

redis 慢查询

redis提供慢查询功能,记录执行时间超过阙值的的命令。 redis请求的生命周期 客户端发送命令给服务器。 服务器接收命令后,会保存到执行队列中 redis服务器从执行队列中,取除命令执行 执行完成后会将结果返回给客户端 注意: 慢查询指的是执行命令的时间过长。客户端的响应时间长,不一定是命令执行时间长,有可能是网络延时,在执行队列中前面的命令执行时间过超过导致的。 慢查询配置 slow...

pk5478的博客 204

2025年面试运维能问啥也就这些了

注:每次作业都会评出最高分和最低分,多次成绩优异 的小伙伴会获得奖励,每次都是最低分的小伙伴会有处罚。当前数据库服务处理速度慢,你认为可能是什么原因导致的,并阐述一下对应的解决办法。目前常见的数据库软件有哪些,搭建数据库集群的时候,你如何选择使用哪种软件。答: 操作前检查,操作前备份,进行操作过程,操作后确认,操作文档编写。elasticSearch 中的集群,节点,文档,类型和索引是什么。ELK的安全插件,报警插件,管理和查询插件分别是什么。如果采购了一块硬盘,需要做哪些处理,才能正常使用磁盘。

辅导自学转行 873

redis常用资源

Redis 官网 推荐 CRUG网站redis 中文 官网 Spring Data Redis 客户端工具官网 Distributed Locks with Redis | Redis https://github.com/redisson/redisson 分布式锁实现 大数据高并发Redis一本通-张文亮编著-微信读书 书籍推荐

存在,即合理 225

Redis资料的整理

本篇为Redis部分的资料汇总。和大家一起参考学习~! 1.Redis是什么? 十五分钟介绍 Redis数据结构 Redis系统性介绍 一个很棒的Redis介绍PPT 强烈推荐!非同一般的Redis介绍 Redis之七种武器 锋利的Redis redis 适用场景与实现 2.Redis内部实现 Redis源码分析系列文章 解密Redis持久化 Redis RD...

叶知秋 130

2024-08-05 ---运维工程师常见面试题整理-----篇章(一)_zabbix 作用是什么 可以监控什么,优化有什么,工作原理

监控网络主机(路由器 交换机 防火墙),(cpu负荷 ,内存,磁盘,网络,进程,tcp )(响应时间,加载时间,渲染时间)(ELK,收集,存储,分析,展示):1轮询器实例数量 2不可达主机 3 http轮询器子进程实例个数 4 缓存大小 5 历史缓存数据大小 6 trappers进程实例数量:Agent安装在被监控的主机上,,并发送至zabbix server端,zabbix server收到数据,将数据存储到数据库中,用户基于zabbix web可以看到数据在前端展现图像。

2401_86394154的博客 1492

GitLab项目Redis故障排查指南

Redis作为GitLab的核心组件之一,负责缓存、会话存储和后台任务队列等重要功能。当Redis出现问题时,整个GitLab系统都可能受到影响。本文将深入讲解GitLab环境中Redis常见问题的排查方法,帮助管理员快速定位和解决问题。 ## 基础环境检查 在开始深入排查前,首先需要确认基础网络环境是否正常: 1. **Redis服务器**: - 确保6379端口TCP连接正常 ...

gitblog_00436的博客 478
上一篇: PHP 通过redis-sentine操作redis
下一篇: 实时流处理框架flume+kafka搭建
o王o
博客等级 码龄13年 32粉丝 97原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值