redis调优

redis配置文件详解

redis调优

总体思路:配置相关的参数(使用内存、key回收策略、持久化)+ 代码的书写应该不使用慢命令。
进过一段时间后查看相关参数进行调优。
数据量很大的时候采用集群。

  1. 内存使用率 used_memory

    要避免发生内存交换。

    内存交换发生的条件:当redis占用的内存超过了redis.conf中的maxmemory的值时,就会触发内存交换,会将redis内存中的数据写入到磁盘,腾出内存给新的活动页使用。
    如何避免
    1、要分析系统中使用到的redis中key过期策略,如果集中数据设置了过期时间,则采用volatile-ttl,没有设置采用allkeys-lru,这样当超过内存时会触发策略。
    2、持久化策略,如果是rdb,则需要限制最大使用内存为系统最大可用内存的45%。

  2. 尽可能的使用hash,因为Redis在储存小于100个字段的Hash结构上,其存储效率是非常高的。

  3. redis数据持久化的两种方式和优劣
    aof(apend only file:记录操作命令,用来恢复重启服务故障等导致的问题)
    开启方式:appendonly yes
    同步策略:每秒同步appendfsync everysec,效率和安全性兼顾的方案。
    rdb :快照功能(redis datebase: 记录结果数据集)
    一般是对于恢复数据比较多并且对于数据完整性要求不高的,可以用这种方式。

  4. key回收策略
    maxmemory-policy:一般都是选择1,2,4。
    1、volatile-lru:使用LRU算法从已设置过期时间的数据集合中淘汰数据。
    2、volatile-ttl:从已设置过期时间的数据集合中挑选即将过期的数据淘汰。
    3、volatile-random:从已设置过期时间的数据集合中随机挑选数据淘汰。
    4、allkeys-lru:使用LRU算法从所有数据集合中淘汰数据。
    5、allkeys-random:从数据集合中任意选择数据淘汰
    6、no-enviction:禁止淘汰数据。

  5. 缓存命中率低的原因:key生成后直到过期也没有被使用。
    误区: 这个想象在并发情况下会提高。所以并不是说一定要优化。

  6. redis慢指令优化
    单线程,所以尽可能不要使用慢命令
    参考这篇文章:慢指令总结
    代码中少用慢指令,通过优化代码实现

  7. 延迟慢命令捕捉
    配置文件中slowlog-log-slower-than 5000 表示捕获超过5毫秒的命令
    slowlog get 10 获取10条慢命令数据

  8. 监控客户端连接数

  9. redis内存碎片率
    产生的原因:redis自己实现了内存管理,redis是根据数据的大小分配指定大小的内存,当数据大小改变时会导致部分内存没有回收,内存碎片率在1~1.5是正常。
    计算公式:向os申请的内存大小 / redis使用的内存

解决办法:重启redis.

  1. redis集群的两种方式
多服务器的集群需要考虑hash一致性的问题:

一致性hash算法 php
这个当做了解。

单服务器多实例的集群
好处:读写分离,类似于mysql,理论上对于单线程的redis提升很大。
客户端连接一般的框架也支持。
还有一个好处是服务的可靠性。

方式:一是单纯的主从(一主多从)和 哨兵模式的主从(服务故障自动转移)
一般都是选择哨兵模式。看这个连接

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值