当前位置: 首页 > news >正文

Redis优化建议详解

Redis优化建议详解

1. 内存优化

1.1 内存配置

设置最大内存
maxmemory 4gb
内存淘汰策略
maxmemory-policy allkeys-lru
样本数量
maxmemory-samples 5

1.2 内存优化策略

  1. 数据结构优化

    • 使用压缩列表(ziplist)
    • 合理设置hash-max-ziplist-entries
    • 使用整数集合(intset)存储整数
  2. 键值设计优化

    • 缩短键名长度
    • 压缩值的内容
    • 使用整数代替字符串
  3. 避免内存碎片

    • 设置合适的maxmemory
    • 定期执行MEMORY PURGE
    • 使用jemalloc内存分配器

2. 持久化优化

2.1 RDB优化


配置自动保存策略
save 900 1
save 300 10
save 60 10000
压缩RDB文件
rdbcompression yes
开启校验和
rdbchecksum yes

2.2 AOF优化

设置AOF策略
appendonly yes
appendfsync everysec
重写配置
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

3. 网络优化

3.1 连接优化

最大连接数
maxclients 10000
TCP keepalive
tcp-keepalive 300
超时设置
timeout 300

3.2 网络配置优化

  1. 系统参数调整
/etc/sysctl.conf
net.core.somaxconn = 2048
net.ipv4.tcp_max_syn_backlog = 2048
  1. 网络带宽优化
    • 使用内网通信
    • 合理设置buffer大小
    • 启用TCP BBR算法

4. 命令优化

4.1 慢查询优化

设置慢查询阈值
slowlog-log-slower-than 10000
慢查询记录数
slowlog-max-len 128

4.2 命令使用建议

  1. 避免使用危险命令

    • KEYS
    • FLUSHALL
    • FLUSHDB
  2. 批量操作优化

    • 使用MGET/MSET
    • 使用管道Pipeline
    • 合理使用事务

5. 架构优化

5.1 主从架构优化

主节点配置
min-slaves-to-write 1
min-slaves-max-lag 10
从节点配置
slave-serve-stale-data yes
slave-read-only yes

5.2 集群优化

集群配置
cluster-node-timeout 5000
cluster-migration-barrier 1
cluster-require-full-coverage no

6. 操作系统优化

6.1 系统参数优化

/etc/sysctl.conf
vm.overcommit_memory = 1
vm.swappiness = 0
net.core.somaxconn = 2048

6.2 文件系统优化

调整文件描述符限制
ulimit -n 65535
使用XFS或ext4文件系统
关闭atime更新
mount -o noatime /dev/sda1 /data

7. 应用层优化

7.1 客户端优化

  1. 连接池配置
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(100);
config.setMaxIdle(20);
config.setMinIdle(10);
  1. 超时设置
jedis.configSet("timeout", "5000");
jedis.configSet("tcp-keepalive", "300");

7.2 业务优化建议

  1. 缓存策略优化

    • 合理设置过期时间
    • 使用缓存预热
    • 实施缓存降级
  2. 数据结构选择

    • String:简单键值对
    • Hash:对象属性
    • List:队列操作
    • Set:去重功能
    • Sorted Set:排行榜

8. 监控优化

8.1 性能指标监控

监控命令
redis-cli info | grep instantaneous_ops_per_sec
redis-cli info | grep used_memory
redis-cli info | grep connected_clients

8.2 告警阈值设置

  1. 关键指标
    • CPU使用率 > 80%
    • 内存使用率 > 90%
    • 连接数 > maxclients的80%
    • 慢查询数量突增

9. 开发规范

9.1 键值设计规范

  1. 命名规范

    • 业务名:表名:id
    • 使用冒号分隔
    • 统一小写
  2. 过期时间规范

    • 统一设置过期时间
    • 避免永久键
    • 使用EXPIRE设置过期

10. 运维优化

10.1 部署优化

  1. 硬件选择

    • 使用SSD
    • 足够的内存
    • 高性能CPU
  2. 网络部署

    • 主从同机房
    • 专用网络
    • 冗余链路

10.2 备份策略

自动备份脚本
#!/bin/bash
redis-cli BGSAVE
cp dump.rdb /backup/redis_$(date +%Y%m%d).rdb

相关文章:

Redis优化建议详解

Redis优化建议详解 1. 内存优化 1.1 内存配置 设置最大内存 maxmemory 4gb 内存淘汰策略 maxmemory-policy allkeys-lru 样本数量 maxmemory-samples 51.2 内存优化策略 数据结构优化 使用压缩列表(ziplist)合理设置hash-max-ziplist-entries使用整数…...

ceph 存储 full 阈值调整

前言 在 Ceph 集群中,默认情况下,当某些 OSD(对象存储守护进程)的使用率达到 85% 时,系统会发出 nearfull 警告,并可能限制进一步的写入操作,以防止数据丢失或集群不稳定。 要允许在 OSD 使用率超过 85% 的情况下继续写入,您可以调整以下两个参数: mon_osd_nearful…...

后端技术选型 sa-token校验学习 下 结合项目学习 后端鉴权

目录 后端注册拦截器 实现对 WebMvcConfigurer 接口的类实现 静态变量 方法重写 注册 Spring Framework拦截器 Sa-Token中SaServletFilter拦截器 思考 为什么使用两个拦截器 1. Spring Framework 拦截器 2. SaServletFilter 为什么要注册两个拦截器? 总结 …...

Vue.js组件开发-实现组件切换效果的两种方法 条件渲染、动态组件

在Vue.js中&#xff0c;实现组件切换效果通常依赖于条件渲染或动态组件。 方法一&#xff1a;条件渲染 条件渲染使用v-if、v-else-if和v-else指令来根据条件展示或隐藏组件。这种方法适用于需要在不同条件下展示不同组件的场景。 <template><div><button cli…...

primitive 的 Appearance编写着色器材质

import { nextTick, onMounted, ref } from vue import * as Cesium from cesium import gsap from gsaponMounted(() > { ... })// 1、创建矩形几何体&#xff0c;Cesium.RectangleGeometry&#xff1a;几何体&#xff0c;Rectangle&#xff1a;矩形 let rectGeometry new…...

Seata搭建

1.初识Seata Quick Start | Apache Seata 官网 2.准备nacos和 seata 启动nacos startup.cmd -m standalone账号nacos 密码nacos 搭建seata TC 这里下载的 1.4.2 seata-server-1.4.2 1.修改seata配置文件 registry.conf 这里我们使用nacos作为注册中心 和 配置中心 r…...

流浪猫流浪狗领养PHP网站源码

源码介绍 流浪猫流浪狗领养PHP网站源码&#xff0c;适合做猫狗宠物类的发信息发布。当然其他信息发布也是可以的。 导入数据库&#xff0c;修改数据库配置/application/database.php 设置TP伪静态&#xff0c;设置运行目录&#xff0c; 后台&#xff1a;/abcd.php/dashboard?…...

asammdf python 处理MF4文件库简介

asammdf 是一个功能强大的 Python 库&#xff0c;专门用于处理汽车行业常用的 MDF&#xff08;Measured Data Format&#xff09;文件。以下是 asammdf 的主要功能总结&#xff1a; 主要功能 读取和写入 MDF 文件&#xff1a; 支持 MDF 文件的版本 3.x 和 4.x。 能够读取和…...

【“软件工程”基础概念学习】

基础和相关概念 英文&#xff1a;Software Engineering 软&#xff1a;物体内部的组织疏松&#xff0c;受外力作用后容易改变形状软件&#xff1a; 计算机系统的组成部分&#xff0c;是指挥计算机进行计算、判断、处理信息的程序系统。通常分为系统软件和应用软件。借指某项活…...

省森林防火应急指挥系统

森林防火形势严峻 我国森林防火形势十分严峻&#xff0c;森林火灾具有季节性强、发现难、成灾迅速等特点&#xff0c;且扑救难度大、影响范围广、造成的损失重。因此&#xff0c;构建森林防火应急指挥系统显得尤为重要。 系统建设模式与架构 森林防火应急指挥系统采用大智慧…...

一键整理背包界面功能

一键整理功能 游戏《帕鲁》中的背包界面有一键整理的功能,就是玩家随意拖拽背包格子里的物品,然后导致背包界面看起来很凌乱,比如物品a在一个格子里数量为1,另一个格子里数量为3,或者还有空格杂夹在有物品的格子旁边,一键排序功能可以解决这个问题,(将相同物品整合到一…...

给DevOps加点料:融入安全性的DevSecOps

从前&#xff0c;安全防护只是特定团队的责任&#xff0c;在开发的最后阶段才会介入。当开发周期长达数月、甚至数年时&#xff0c;这样做没什么问题&#xff1b;但是现在&#xff0c;这种做法现在已经行不通了。 采用 DevOps 可以有效推进快速频繁的开发周期&#xff08;有时…...

uniapp 使用 pinia 状态持久化

1.创建文件 stores -index.js -global.js2.对应文件内容 index.js 安装插件 npm i pinia-plugin-persistedstate import { createPinia } from pinia; import persist from pinia-plugin-persistedstate; const pinia createPinia(); pinia.use(persist); export default pi…...

HarmonyOS鸿蒙-@State@Prop装饰器限制条件

一、组件Components级别的状态管理&#xff1a; State组件内状态限制条件 1.State装饰的变量必须初始化&#xff0c;否则编译期会报错。 // 错误写法&#xff0c;编译报错 State count: number;// 正确写法 State count: number 10; 2.嵌套属性的赋值观察不到。 // 嵌套的…...

Java Web开发进阶——Spring Boot与Spring Data JPA

Spring Data JPA 是 Spring 提供的一种面向数据访问的持久化框架&#xff0c;它简化了 JPA 的实现&#xff0c;为开发者提供了一种快速操作数据库的方式。在结合 Spring Boot 使用时&#xff0c;开发者能够快速完成数据库访问层的开发。 1. 介绍Spring Data JPA 1.1 什么是Spr…...

Vue Router4

Vue Router 是 Vue.js 官方的路由管理器。Vue Router 基于路由和组件的映射关系&#xff0c;监听页面路径的变化&#xff0c;渲染对应的组件。 安装&#xff1a; npm install vue-router。 基本使用&#xff1a; // src/router/index.js import {createRouter, createWebHa…...

计算机网络之---应用层协议概述

应用层协议概述 应用层协议是OSI模型中的第7层&#xff08;应用层&#xff09;定义的一组规则&#xff0c;用于支持和管理不同应用程序之间的通信。应用层协议定义了数据交换的格式、规则和约定&#xff0c;使得不同的系统或应用能够互相理解并正确地交换数据。它直接面向用户并…...

html + css 顶部滚动通知栏示例

前言 在现代网页设计中&#xff0c;一个吸引人的顶部滚动通知栏不仅能够有效传达重要信息&#xff0c;还能提升用户体验。通过使用HTML和CSS&#xff0c;我们可以创建既美观又功能强大的组件&#xff0c;这些组件可以在不影响网站整体性能的情况下提供实时更新或紧急通知。 本…...

【Rust自学】11.6. 控制测试运行:并行和串行(连续执行)测试

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 11.6.1. 控制测试的运行方式 cargo test和cargo run一样&#xff0c;cargo test也会编译代码并生成一个二进制文件用于测试&#xff0c;…...

某漫画网站JS逆向反混淆流程分析

文章目录 1. 写在前面1. 接口分析2. 反混淆分析 【&#x1f3e0;作者主页】&#xff1a;吴秋霖 【&#x1f4bc;作者介绍】&#xff1a;擅长爬虫与JS加密逆向分析&#xff01;Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Pyth…...

React 中事件机制详细介绍:概念与执行流程如何更好的理解

React 的事件机制是一个非常重要的概念&#xff0c;它涉及到 React 如何处理用户的交互事件。React 的事件系统与传统的 DOM 事件系统有所不同&#xff0c;它在底层使用了事件委托和合成事件&#xff08;Synthetic Events&#xff09;来优化性能。下面&#xff0c;我们将从 Rea…...

Day04-后端Web基础(Maven基础)

目录 Maven课程内容1. Maven初识1.1 什么是Maven?1.2 Maven的作用1.2.1 依赖管理1.2.2 项目构建1.2.3 统一项目结构 2. Maven概述2.1 Maven介绍2.2 Maven模型2.3 Maven仓库2.4 Maven安装2.4.1 下载2.4.2 安装步骤 3. IDEA集成Maven3.1 配置Maven环境3.1.2 全局设置 3.2 Maven项…...

vue3模板语法+响应式基础

模板语法 1. disabled指令&#xff0c;可以用于禁用按钮 <button :disabled"isButtonDisabled">Button</button> //:disabled是一个指令&#xff0c;用于根据isButtonDisabled的值来动态控制按钮的禁用状态。 使用场景&#xff1a; 1.防止用户重复点击…...

【面试题】简单聊一下什么是云原生、什么是k8s、容器,容器与虚机相比优势

云原生&#xff08;Cloud Native&#xff09; 定义&#xff1a;云原生是一种构建和运行应用程序的方法&#xff0c;旨在充分利用云计算的优势。它涵盖了一系列技术和理念&#xff0c;包括容器化、微服务架构、自动化部署与管理等。特点&#xff1a;云原生应用程序被设计为可弹性…...

数据挖掘实训:天气数据分析与机器学习模型构建

随着气候变化对各行各业的影响日益加剧&#xff0c;精准的天气预测已经变得尤为重要。降雨预测在日常生活中尤其关键&#xff0c;例如农业、交通和灾害预警等领域。本文将通过机器学习方法&#xff0c;利用历史天气数据预测明天是否会下雨&#xff0c;具体内容包括数据预处理、…...

STM32如何使用内部晶振作为晶振

目录 前言 首先说明一下芯片内部并没有时钟&#xff0c; 而是内部振荡。使用内部振荡的好处是外部无需设计晶振电路 &#xff0c;再说的简单点 &#xff0c;不用外部晶振依然可以让单片机正常运转。 环境&#xff1a; 芯片&#xff1a;STM32F103C8T6 Keil&#xff1a;V5.24…...

【Maui】导航栏样式调整

前言 .NET 多平台应用 UI (.NET MAUI) 是一个跨平台框架&#xff0c;用于使用 C# 和 XAML 创建本机移动和桌面应用。 使用 .NET MAUI&#xff0c;可从单个共享代码库开发可在 Android、iOS、macOS 和 Windows 上运行的应用。 .NET MAUI 是一款开放源代码应用&#xff0c;是 X…...

【黑马程序员三国疫情折线图——json+pyechart=数据可视化】

json数据在文末 将海量的数据处理成我们肉眼可以进行分析的形式&#xff0c;数据的可视化&#xff0c;可以分为两个步骤&#xff1a; 数据处理&#xff1a;利用三方网站厘清json层次格式化&#xff0c;再对文件的读取、检查是否符合JSON规范以及规范化、JSON格式的转化&#…...

如何实现多级缓存?

本文重点说一说在Java应用中&#xff0c;多级缓存如何实现。 多级缓存是比较常见的一种性能优化的手段&#xff0c;一般来说就是本地缓存分布式缓存。 本地缓存一般采用Caffeine和Guava&#xff0c;这两种是性能比较高的本地缓存的框架。他们都提供了缓存的过期、管理等功能。…...

Saas数据库迁移单租户数据

1、背景 租户使用Saas系统&#xff0c;用一段时间后要将系统、数据搬迁到自建服务器。该Saas系统没有按租户分库&#xff0c;且数据库数据量太大&#xff0c;需要将单租户的数据抽取出来。Saas系统使用Mysql5.7数据库&#xff0c;主要使用INFORMATION_SCHEMA.COLUMNS表进行数据…...

北京网站开发网站建设浩森宇特/网站优化推广方案

原文:WPF使用异步绑定的方式处理大数据量WPF的优势在于界面处理&#xff0c;即使是这样&#xff0c;在面对大数据量的时候也免不了界面假死&#xff0c;同一个线程里处理界面跟大数据量&#xff0c;这是不可避免的。解决办法还是有的&#xff0c;可以使用分页加载&#xff0c;虚…...

成都网站建设scwbo/陕西网站设计

前&#xff1a; New Relic的上市使得IT和资本界开始重新重视APM&#xff0c;当然跟传统APM相比&#xff0c;New Relic还是有相当的创新&#xff0c;另外还有一点是目前的创业潮导致的企业级需求增大。 In recent years, IT projects seem to have stopped asking “which APM s…...

做网站好的网站建设公司排名/沧州网站建设优化公司

环境&#xff1a;NAS型号&#xff1a;Synology RackStation 2418服务器&#xff1a;Centos7.4.1708 一&#xff1a;NAS上创建LUN*此处的IQN号需要复制记录下来&#xff0c;相当于NETAPP的WWN号二&#xff1a;linux上进行挂载yum install iscsi-initiator-utils -y 安装iscsi软件…...

什么网站做新闻更好/文明seo

无光驱情况下&#xff0c;U盘启动安装CentOS (笔记) 条件&#xff1a; 1.主板支持U盘启动 2.4G的U盘 3.UltraISO软件 步骤&#xff1a; 1.下载CentOS-5.3-i386-bin-DVD.iso文件,文件大小3.69G。&#xff08;如果是5.5&#xff0c;则4G U盘放不下&#xff09; 2.启动UltraISO,&q…...

网站视频超链接怎么做/北京网络推广外包公司排行

一、问题描述 工作中&#xff0c;需要在航拍图中 添加摄像头在航拍图中的位置&#xff0c;因此&#xff0c;需要开发一个功能&#xff1a;鼠标点击航拍图&#xff08;背景&#xff09;&#xff0c;显示鼠标点击位置在页面中的位置&#xff08;pageX和pageY&#xff09;,然后将…...

ftp服务器搭建设置网站信息/企业网站模板图片

收集一些有用的博客&#xff0c;造福全人类&#xff1a; http://fullstack.info/ 不知道是谁&#xff0c;好像很吊的样子http://substack.net/ substack nodejs大神&#xff0c;贡献了几百个nodejs模块http://blog.izs.me/ nodejs巨屌http://lucumr.pocoo.org/ Flask作者http:…...