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,观察可用性和逐出。 阅读详情

相关推荐

MedicalNet实战:3D医疗影像分割从零到部署(PyTorch+ResNet50)

本文详细介绍了基于PyTorch和MedicalNet预训练模型进行3D医疗影像分割的完整实战流程。通过加载ResNet50预训练权重进行迁移学习,大幅降低了对标注数据量的需求,并提升了模型性能。文章涵盖了从数据准备、模型微调、训练优化到最终部署的每一步,为医疗AI开发者提供了从零到部署的清晰指南。

weixin_29062671的博客 587

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

医药行业SAP序列号管理深度解析:如何满足GMP合规要求

本文深度解析了医药行业如何利用SAP序列号管理构建满足GMP合规要求的数字化追溯体系。文章详细阐述了SAP序列号在实现从生产到患者全流程“一物一码”精准追溯中的核心作用,并探讨了其与质量管理、冷链监控等系统的关键集成配置,为医药企业应对严格监管、保障产品质量与安全提供了切实可行的技术方案。

backprop5master的博客 655

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

意图识别和纠错问题

可想而知,错误的意图识别会带来多大的负面影响。基于词典,就是对用户query内容和词典内容进行比对,比较常见的方式是序列标注问题里用的最大逆向匹配,通过这种方式找到词典里的实体词,匹配触发了自然就有意图了,而在词典匹配的时候,不是使用链表之类的来构造匹配结构,而是使用搜索树的结构,这种匹配的复杂度最低,速度也快,两者结合,其速度甚至比很多模型要快得多(基本上1ms以内就能完成),fasttext速度非常快,但是textcnn之类的其实就已经达到ms级别以上,bert甚至在10ms级别。

TURING.DT 4571

vuecil3+版本下,兼容ie等不支持es6的低版本浏览器

*综上,完成兼容性涉及到的配置的文件有,对应在页面中查看代码,就不单独附代码了:main.js。

yhr0322的博客 832

redis使用中的问题

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

jing956899449的博客 1424

理解ADC:为什么需要抗混叠滤波器?

本文介绍 ADC 的混叠现象,引出抗混叠滤波器,并介绍一种开关电容滤波器,它具有很小的增益过渡带。

疯狂的运放 5935

redis 运维讲解01

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

Jerry00713的博客 2246

Apollo control模块横向控制原理及核心代码逐行解析

看完这篇文章,你会对apollo横向控制有一个整体的概念

weixin_39199083的博客 2万+

(十五)CX20106A 中超声波测量的应用

(十五)CX20106A 中超声波测量的应用

m0_52555663的博客 4509

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

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

Javachichi的博客 2398

使用 MATLAB/Simulink 搭建一个 无人机群间数据交换与协同控制仿真系统

本文提供了一份详细的Simulink无人机群协同控制仿真教程。主要内容包括:无人机群系统架构设计(去中心化网络、通信分层)、三维运动建模、空-空通信链路实现(距离判断、无线信道)、分布式Consensus控制算法开发,以及性能评估指标设定。教程采用模块化设计思路,通过ModelReference构建多无人机并行模型,并给出了MATLAB函数实现关键算法。最后展示了预期仿真结果(收敛时间<15s、位置偏差<2m)和进阶应用方向(编队飞行、AI协同等),帮助读者掌握群体智能系统的建模与仿真方法。

amy_mhd的博客 155

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

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

qq_37566948的博客 1319

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

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

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

燃灯工作室 1102

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Redis资料汇总专题

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

雕刻时间的专栏 686

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

中间件(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、付费专栏及课程。

余额充值