【持久化设置】 对于redis,有两种持久化方式:rdb和aof rdb:后台定期生成一个dump文件,保存当前redis内存中所有的数据 aof:类似日志,记录所有的操作命令 save 900 1 save 绝对路径/start.sh 【常用运维命令】 查看redis运行日志 cat . /logs/redis.log 查看redis当前pid cat ./pidfile/redis.pid 关闭redis kill -9 redis的pid 启动redis . /start.sh 连接redis . /redis-cli -h IP地址 -p 端口号 连接密码 auth 密码字符串 查看redis基础信息 info 提升slaver为master 【谨慎操作】连接slaver并执行 slaveof
需求背景 生产 Redis 日常运维需要。 前提 添加 Redis 可执行命令到系统环境变量中。 日常运维脚本 8Copyright Copyright (c) jiangliheng 9License GNU General Public License 概要 redis-tools.sh 日常运维脚本 13# Copyright Copyright (c) jiangliheng 14# License GNU General Public 日常运维脚本 23#% 24#%概要(SYNOPSIS) 25#% sh ${SCRIPT_NAME} [option] <value> ... 26#% 27#%描述(DESCRIPTION ) 28#% Redis 日常运维脚本 29#% 30#%选项(OPTIONS) 31#% -h<value>, --host=<value> Redis
Redis 安装 1、下载Redis二进制文件 wget https://download.redis.io/releases/redis-5.0.14.tar.gz 2、解压 3、编译 4、安装 5、启动 # 配置开机启动 [Unit] Description=Redis After=network.target [Service] User=admin Type=forking ExecStart =/usr/local/redis/bin/redis-server /home/admin/redis/etc/redis.conf ExecStop=/usr/lcoal/redis/bin/redis-cli -h 127.0.0.1 -p 6379 shutdown [Install] WantedBy=multi-user.target # 启动 systemctl enable redis-server systemctl start redis-server
Redis运维之swap空间 swap空间对于操作系统来说比较重要,当我们使用操作系统的时候,如果系统内存不足,常常会将一部分内存数据页进行swap操作,以解决临时的内存困境。 下面以一个Redis实例进行说明: [root@VM-0-14-centos ~]# ps -ef|grep redis root 1711 1 0 Jul20 ? 00:20:15 src/redis-server 127.0.0.1:21243 root 2370 1 0 Jul20 ? =auto redis root 14804 1 0 Jul20 ? 00:20:39 redis-server *:6379 我们以14804这个redis进程为例 [root@VM-0-14-centos ~]# cat /proc/14804/smaps | grep
说说IT运维那些事,服务器如果不注意安全的话,就有可能会被入侵,特别是安装了redis的Linux服务器,如果安全防范没做好的话,更有可能会被入侵,被入侵以后会有很多种危害,那么我总结了有以下几种危害, 第四,严重影响公司的形象,你想服务器都被入侵了,那么公司的形象是不是会受到影响,下面我总结了一些防御的方法,修改redis配置文件的一些参数,比如说我的redis的配置文件里面有一些比较重要的参数,这里和大家一起探讨一下 比如说这个参数protected-mode yes就是打开保护模式,如果把这个参数关闭了以后,外部的网络就可以直接访问redis,非常的危险,那么我们要做的就是把这个保护模式打开,并且为redis添加密码验证 下面这条参数内on come on de,flew Shaw他的意思是删除,redis是中所有数据库中的所有数据,并且该命令是原子性的,不会被终止执行,一旦执行将不会执行失败,非常的危险。 第四个防火墙的防护设置只允许特定的IP来连接redis服务的6379端口,比如你设定只有192.168.8.100这台机器才能够连接redis的6379端口,或者你改了端口以后的7379端口,那么其他不在白名单里面的机器
一、上线规划 一般 redis 的参数配置都在 redis.conf 中,在上线前根据实际环境配置好合适参数,能有效提高 redis 的可用性。 redis 的运行机器 CPU 不求核数多,但求主频高,Cache大,因为 redis 主处理模式是单进程的。 留意 redis 日志文件的配置,对应 logfile 参数。 affinity list: 0-3 pid 15361's new affinity list: 3 二、常见运维操作 服务功能运维 启动 redis:redis-server redis.conf 启动 redis-sentinel:redis-sentinel sentinel.conf 停止 redis,注意 kill -9 关闭可能会丢失数据:redis-cli shutdown 验证密码( --pipe 服务性能运维 查看连接的客户端:client list 探测服务是否可用(返回 pong 说明正常):ping 探测服务延迟,千兆网卡一般延迟在 0.16ms 左右: [root@localhost
审稿人 无为,前饿了么 MySQL DBA,现就职于某知名互联网公司,对 MySQL、 Redis、PostgrepSQL 等主流数据库有一定了解,拥有丰富的一线运维经验。 这是专栏《Redis 运维实战》的最后一篇,感谢您的阅读。也感谢 9 篇文章的审稿人:无为,提出了多个修改建议,让文章内容更全面。 专栏《Redis 运维实战》系列文章推荐 Redis 运维实战 第01期:Redis 复制 Redis 运维实战 第02期:Redis Cluster Redis 运维实战 第03期:Codis Redis 运维实战 第04期:AOF 持久化 Redis 运维实战 第05期:RDB 持久化 Redis 运维实战 第06期:Bigkey Redis 运维实战 第07期:Hotkey Redis 运维实战 第 08期:监控 Redis 运维实战 第09期:Redis 规范
从这篇文章开始,将出几期 Redis 运维实战相关的内容,大致包括:Redis 主从、Redis 集群、持久化、大 key、热 key、Redis 监控以及 Redis 规范等。 本节先从 Redis 主从复制开始聊。 首先来看 Redis 复制的配置: 1 配置 Redis 主从复制 1.1 配置复制 Redis 安装可以参考官方文档(https://redis.io/download),配置 Redis 主从复制的方法如下 (本节内容的 Redis 版本为 6.0): 直接登录 Redis 之后,在从节点执行如下命令: replicaof {masterHost} {masterPort} 拓展: Redis 5.0 之前配置复制是使用 在笔者几年的 Redis 运维工作中,多多少少会遇到一些与复制相关的问题。这里就选几个比较典型的来跟各位朋友分享,也方便你们在后续工作中绕过这些坑。
Redis 最为突出的特性就是:执行命令的速度非常快(原因是所有数据都存放在内存中)。但是单机 Redis 总会遇到瓶颈的,比如:并发、流量、内存等。 直到 Redis 3.0,官方推出了 Redis Cluster,实现了切片集群方案。今天就来聊聊 Redis Cluster。 2 集群搭建 2.1 安装 Redis 安装 6 个 Redis 实例(本节的版本为:5.0.7,6 个实例在同一台 Centos7 上部署的,端口分配是:7001 到 7006),Redis 安装可以参考官方文档 2.2 修改配置文件 在 Redis 的配置文件中,加入如下参数,开启 Redis 集群功能。 与 Redis 单机版相比,存在一些限制,我们在运维或者开发过程,应该提前了解的,这里就总结几点限制: key 批量操作支持有限。
监控 Redis-exporter就是用来监控Redis的,它将INFO命令监控到的运行状态和各种统计信息提供给Prometheus,从而进行可视化展示和报警设置;除了获取Redis实例的运行状态,Redis-exporter 命令行选项,让Redis-exporter运行这个特定的脚本,从而可以满足业务层的多样化监控需求; 数据迁移工具 Redis-shake redis-shake的基本运行原理,是先启动Redis-shake 接着,源实例会再把增量命令发送给Redis-shake,Redis-shake负责把这些增量命令再同步给目的实例; 数据对比Redis-full-check redis-full-check的工作原理很简单 的值设置为想要比对的轮数,等到所有轮数都比对完成后,数据库中记录的数据就是源实例和目的实例最终的差异结果了; 集群管理工具 CacheCloud 针对常见的集群运维需求,CacheCloud提供了5个运维操作 当然,作为运维管理平台,CacheCloud除了提供运维操作以外,还提供了丰富的监控信息,CacheCloud不仅会收集INFO命令提供的实例实时运行状态信息,进行可视化展示,而且还会把实例运行状态信息保存下来
// Redis开发与运维学习笔记---(17) // Redis Sentinel实现原理---(一) 前面的文章讲述了redis sentinel可以实现对redis master的可用性监控和故障转移 三个定时监控任务 Redis Sentinel通过三个定时监控任务完成对各个节点的发现和监控。 b、当有新的从节点加入时,都可以立刻感应出来 c、节点不可达或者故障转移之后,可以通过info命令实时更新节点的拓扑信息 任务二: 每隔2s,每隔sentinel节点会向redis数据节点的__sentinel
最近看完了《Redis开发与运维》分享给大家。 全面讲解Redis基本功能及其应用,并结合线上开发与运维监控中的实际使用案例,深入分析并总结了实际开发运维中遇到的“陷阱”,以及背后的原因, 包含大规模集群开发与管理的场景、应用案例与开发技巧,为高效开发运维提供了大量实际经验和建议 Redis监控运维云平台CacheCloud。 大力推荐 ,不管是 redis 新手 老手,都能学到很多。 Redis相关书籍里面内容属于特别上乘的。 Pipeline(流水线)机制能将一组 Redis命令进行组装,通过一次 RTT传输给 Redis,再将这组 Redis命令的执行结果按顺序返回给客户端。
// Redis开发与运维学习笔记---(14) // Redis内存优化 我们知道redis的数据都保存在内存中,如何高效利用内存变得尤为重要。 01 redisobject Redis使用object结构体来保存redis对象, 一个redisobject包含下面几个方面的内容: type:对象类型,包含string,hash,list, set,zset等类型 encoding(内部编码类型):redis的内部编码类型。 如user:frends可简化为u:fs value长度缩减,首先是避免不必要的对象属性等,其次是将业务对象序列化成二进制数组放入redis,或者使用json、xml等将对象作为字符串存储在Redis中 04 字符串优化 redis没有使用c的原生字符串类型,而是自己实现了字符串结构。
Redis开发与运维学习笔记---(11) Redis开发与运维中遇到的问题 之前的文章中,我们讲述了redis的复制机制,通过复制,数据可以被备份,然后这些备份的副本可以用来做读写分离、负载均衡、故障转移等 定时删除指的是redis主节点在内部定时任务会循环采样一定数量的键值,当发现采样的键值过期时,执行del命令,之后再同步给从节点。 以上所述为使用Redis做读写分离是存在的成本,Redis本身的性能非常高,开发人员在使用额外的从节点提升读性能之前,尽量在主节点上做充分的优化,提前解决慢查询、持久化阻塞等问题。 3 规避全量复制 我们知道,全量复制是一个非常消耗资源的操作,如何规避全量复制是需要我们关注的运维点。 2、单机器复制风暴 由于redis是单线程架构,通常单台机器会部署对个redis实例,当一台机器上同时部署多台机器时,如果这台机器出现故障或者网络长时间中断,当它恢复后,会有大量从节点针对这台机器上的主节点进行全量复制
// Redis开发与运维学习笔记---(16) // Redis Sentinel的几个重要参数 第15篇文章中我们讲述了sentine的基本搭建办法,今天我们来说说,sentinel的几个重要参数 Redis Sentinel同时监控多个Redis节点 这个还是比较简单的,只需要在sentinel的配置文件中写上多个节点的名称,其他参数也区分开来即可。 c、有条件的情况下,尽量使用sentinel节点和redis节点一对一的方式部署,不要使用同一套sentinel来管理多个redis主节点。 的日常运维中非常有用。 10、sentinel remove master-name 取消当前redis sentinel节点对于指定master-name主节点的监控。
在前面,我们提到了 Redis 集群方案 Redis Cluster,今天我们来聊聊 Redis 另外一种比较受欢迎的集群方案:Codis。 ,相对 Redis 3.2.8,其变化可以参考官方文档:Redis 修改部分。 集群方案 优点 缺点 Codis 平滑扩容支持读写分离拥有管理平台多线程 Codis 集群整体性能比单个 Redis 性能有所下降依赖 zk跟不上官方高版本 Redis 的新功能 Twemproxy 分布式 不支持平滑扩容运维难度大单线程 Redis cluster 无Proxy,直连性能较高支持平滑扩容无中心架构 读写分离实现复杂不支持 pipeline维护成本高客户端必须支持集群协议 6 与 专栏《Redis 运维实战》系列文章推荐 Redis 运维实战 第01期:Redis 复制 Redis 运维实战 第02期:Redis Cluster
过期时可能阻塞:如果 Bigkey 设置了过期时间,当过期后,这个 key 会被删除,假如没有使用 Redis 4.0 的过期异步删除,就会存在阻塞 Redis 的可能性,并且慢查询中查不到(因为这个删除是内部循环事件 安装 redis-rdb-tools,参考 GitHub(https://github.com/sripathikrishnan/redis-rdb-tools)。 3.5 其他第三方工具 例如:redis-rdb-cli 地址:https://github.com/leonchen83/redis-rdb-cli 4 优化 Bigkey 找到 Bigkey 后,怎么优化呢 但是要注意的是:如果直接 del,可能会阻塞 Redis 服务。 4.4 更换数据库 其实有些场景下,使用 Redis 并不是最优的选择,比如长文本,如果放在 Redis 中,很可能就是一个 Bigkey,因此建议不要存入 Redis,用文档型数据库 MongoDB
Redis-cli详解 Redis提供了redis-cli、redis-server、redis-benchmart等shell工具,今天对这些工具做下介绍。 --pipe --pipe选项用于将命令封装成Redis通信协议定义的数据格式,批量发送给redis执行。 的重要统计信息,虽然info命令中的统计信息更全,但是能够实时看到一些增量数据,对于redis的运维还是有一定帮助。 详解 redis-server是用来启动redis服务的,常用的启动方式有下面几种: 1、直接启动:redis-server即可 2、增加配置参数: redis-server --configkey1 例如: redis-server --port 6380 3、配置文件启动 redis-server /dir/redis.conf 除了启动redis之外,还有一个选项--test-memory,
工作中使用 Redis 时,如果大家公司没有专业运维,可能我们开发就会面临运维的工作,包括 Redis 的运行状态监控,数据迁移,主从集群、切片集群的部署和运维等等。 本文我就从这三个方面,给大家介绍一些工具,帮助大家更好的运维管理 Redis。 好了,最后,我再向你介绍一个用于 Redis 集群运维管理的工具 CacheCloud。 当然,作为运维管理平台,CacheCloud 除了提供运维操作以外,还提供了丰富的监控信息。 这样一来,当 Redis 运行发生问题时,运维人员可以查询保存的历史记录,并结合当时的运行状态信息进行分析。
// Redis开发与运维学习笔记---(13) // 如何高效利用Redis内存 我们知道redis的数据都保存在内存中,如何高效利用内存变得尤为重要。 01 内存消耗 Redis的内存使用统计 redis中通过info memory命令获取内存相关的指标: # Memory used_memory:2043448 used_memory_human 如果该值小于1,这种情况一般出现在操作系统把Redis的内存交换到硬盘导致,这会导致Redis性能变得很差,需要格外注意。 mem_allocator:Redis所使用的内存分配器 redis的内存消耗,主要包含下面4个方面: 自身内存; 对象内存; 缓冲内存; 内存碎片; 其中redis空进程自身占用的内存消耗很少, 当redis由于内存溢出删除键时,可以通过info stats命令来查看evicted_keys指标找出当前redis服务器已经删除的键数量。