博客
关于我
在redis一致性hash(shard)中使用lua脚本的坑
阅读量:424 次
发布时间:2019-03-06

本文共 1041 字,大约阅读时间需要 3 分钟。

Redis 2.8之前的版本为了支持巨量数据缓存或持久化,通常采用sharding模式实现集群,常用Twitter开源的Twemproxy作为代理。

Twemproxy的性能影响

Twemproxy不会直接增加Redis的性能指标数据。业界测算显示,与直接使用Redis相比,Twemproxy带来约10%的性能下降。然而,单个Redis进程的内存管理能力有限,超过20G后效率会显著下降。建议将单个Redis配置在8G以内,超出部分则采用Twemproxy提供支持。

Redis内存管理的挑战

单个Redis进程的内存管理能力有限。超过20G后,效率会急剧下降。因此,建议单个Redis最好配置在8G以内,超过这一限制的缓存需求应通过Twemproxy实现。

Twemproxy配置示例

Twemproxy的配置信息通常存储在nutcracker.yml文件中,默认查找位置在conf目录下,也可以通过-c参数指定。以下是一个示例配置:

twem1:  listen: "127.0.0.1:22121"  hash: fnv1a_64  distribution: ketama  auto_eject_hosts: false  server_failure_limit: 1  server_retry_timeout: 60000  redis: true  servers:    - "IP1:6379:1 shard1-master"

Redis性能优化的误区

在使用Redis sharding模型时,Lua脚本处理键值对时可能出现问题。具体来说,代理端(如Twemproxy)在处理Lua脚本时,可能会将某些键值对分布在不同的shard上,从而导致操作不一致。

实际应用中的经验教训

在实际应用中,频繁的读写操作可能导致性能问题。通过 Lua脚本可以一次性完成事务性操作,显著提升效率。然而,在某些场景下,直接使用Lua脚本删除缓存键值时可能会遇到问题,特别是在Redis sharding模型中,可能导致部分键值未能正确过期或删除。

解决方案

针对上述问题,可以采取以下措施:

  • 在Redis sharding模型中谨慎使用Lua脚本,确保键值对的分布与操作一致。
  • 对于缓存过期或删除操作,可以结合代理端(如Twemproxy)进行批量处理,避免直接在Lua脚本中频繁操作。
  • 通过合理配置和优化,可以有效提升Redis的性能表现,同时确保系统的可靠性和可维护性。

    转载地址:http://nafuz.baihongyu.com/

    你可能感兴趣的文章
    Processing通过编程实现艺术设计_实现艺术和现实的交互---数据设计分析002
    查看>>
    ProcessOnLoading
    查看>>
    SpringBoot中集成screw(螺丝钉)实现数据库表结构文档生成
    查看>>
    PROFINET 模拟器使用教程
    查看>>
    Program type already present: android.support.v4.widget.EdgeEffectCompat
    查看>>
    PyTorch中文版官方教程来啦(附下载)
    查看>>
    Progress Kemp LoadMaster 远程命令执行漏洞复现(CVE-2024-1212)
    查看>>
    Project configuration is not up-to-date with pom.xml. Run Maven->Update Project
    查看>>
    Project Euler 15 Lattice paths
    查看>>
    Project Euler 48 Self powers( 大数求余 )
    查看>>
    Project Euler Problem 12: Highly divisible triangular number
    查看>>
    ProjectEuler 2
    查看>>
    projection介绍及EPSG:4326和EPSG:3857的投射转换
    查看>>
    project打开文件时,显示无法识别此文件格式?
    查看>>
    Prometheus + Grafana on Kubernetes部署
    查看>>
    prometheus + grafana进行服务器资源监控
    查看>>
    Prometheus Alertmanager 告警配置详解
    查看>>
    Prometheus Grafana 展示平台
    查看>>
    Prometheus pushgateway使用详解
    查看>>
    Prometheus 云原生 - Prometheus 数据模型、Metrics 指标类型、Exporter 相关
    查看>>