redis正确使用的十个技巧是什么,redis正确使用的十个技巧有哪些,Redis正确使用的十个技巧

redis正确使用的十个技巧是什么,redis正确使用的十个技巧有哪些,Redis正确使用的十个技巧

Redis已经走过了很长的路,有了它的一系列最佳实践,大多数人都能正确使用Redis。在这里,我们将探讨正确使用Redis的10个技巧。

Redis在当前的技术社区非常流行。Redis已经从Antirez的一个小型个人项目发展成为内存数据存储行业的标准。

1、停止使用 KEYS *

好吧,挑战这个命令可能不是开始这篇文章的好方法,但这可能是最重要的一点。很多时候,我们在关注一个redis实例的统计时,会快速输入“KEYS *”命令,这样关键信息就会清晰的显示出来。平心而论,从程序的角度来看,往往倾向于写以下伪代码:

对于“keys *”中的键:

doAllTheThings()

但是当你有1300万个键的时候,执行速度会慢一些。因为KEYS命令的时间复杂度是O(n),其中n是要返回的键的数量,所以这个命令的复杂度取决于数据库的大小。在此操作过程中,不能在您的实例中执行任何其他命令。

作为替代命令,看看SCAN,它允许您以更友好的方式执行它… SCAN通过增量迭代扫描数据库。这个操作是基于游标的迭代器,所以你可以在任何你觉得合适的时候停止或者继续。

2、找出拖慢 Redis 的罪魁祸首

因为Redis没有非常详细的日志,所以很难知道Redis实例内部做了什么。幸运的是,Redis提供了如下命令统计工具:

127.0.0.1:6379信息命令状态

#命令状态

cmdstat_get:calls=78,usec=608,usec_per_call=7.79

cmdstat_setex:calls=5,usec=71,usec_per_call=14.20

cmdstat_keys:calls=2,usec=42,usec_per_call=21.00

cmdstat_info:calls=10,usec=1931,usec_per_call=193.10

通过这个工具,可以查看所有命令统计数据的快照,比如命令执行了多少次,执行命令用了多少毫秒(每个命令的总时间和平均时间)。

只需执行CONFIG RESETSTAT命令来重置它,这样就可以得到一个全新的统计结果。

3、将 Redis-Benchmark 结果作为参考,而不要一概而论

Redis之父Salvatore曾说过,“通过执行GET/SET命令来测试Redis,就像是测试法拉利的雨刷在雨天清洁镜子的效果”。很多时候人们来找我,他们想知道为什么他们的Redis-Benchmark统计结果低于最优结果。但是我们必须考虑到各种实际情况,例如:

可能受到哪些客户端运行环境的限制?

是同一个版本号吗?

测试环境中的性能是否与应用程序运行的环境一致?

Redis-Benchmark的测试结果提供了一个基准,保证你的Redis-Server不会运行在异常状态,但你千万不要把它当成真正的“压力测试”。压力测试需要反映应用的运行模式,需要尽可能与生产相似的环境。

4、Hashes 是你的最佳选择

以优雅的方式介绍散列。哈希将给你带来前所未有的体验。我以前见过很多像下面这样的关键结构:

foo:名字

foo:姓氏

foo:地址

在上面的例子中,foo可能是一个用户的用户名,每个用户名都是一个单独的键。这增加了出错的空间,以及一些不必要的键。用hash代替,你会惊讶的发现你只需要一个键:

127 . 0 . 0 . 1:6379 HSET福的名字“乔”

(整数)1

127 . 0 . 0 . 1:6379 HSET福姓“恩格尔”

(整数)1

127.0.0.1:6379 HSET福地址' 1狂热Pl '

(整数)1

127.0.0.1:6379

1)“名字”

2)“乔”

3)“姓氏”

4)“恩格尔”

5)“地址”

6)“1狂热的计划”

127 . 0 . 0 . 1:6379 HGET foo first _ name

乔的

5、设置 key 值的存活时间

尽可能利用按键超时。一个很好的例子是存储诸如临时认证密钥之类的东西。在寻找授权密钥时,——以OAUTH为例,——通常会得到一个超时。这样在设置键的时候,设置成同样的超时,Redis会自动为你清除!而不是用KEYS *来遍历所有的键,有多方便?

6、选择合适的回收策略

既然说到清除key这个话题,那就来说说回收策略吧。当Redis的实例空间被填满时,它会尝试回收一些密钥。根据您的使用情况,我强烈推荐使用Volatile-lru策略3354,前提是您已经为key设置了超时。但是如果运行的是类似cache的东西,而且key没有超时机制,可以考虑使用allkeys-lru回收机制。我的建议是先在这里查可行方案。

7、如果你的数据很重要,请使用 Try/Except

如果有必要确保关键数据可以放入Redis的实例中,我强烈建议放在try/except块中。几乎所有的Redis客户端都采用“发送并忘记”的策略,因此经常需要考虑一个键是否实际放入了Redis数据库。至于在Redis命令中放置try/expect的复杂性,本文不做讨论。你只需要知道这样做可以确保重要的数据放在该放的地方。

8、不要耗尽一个实例

尽可能分散多个redis实例的工作负载。Redis从版本3.0.0开始就支持集群。Redis cluster允许您根据键范围来分离一些包含主/从模式的键。完整集群背后的“魔力”可以在这里找到。但是如果你正在寻找一个教程,这是一个完美的地方。如果您不能选择一个集群,请考虑名称空间,然后将您的密钥分布在多个实例中。redis.io网站上有这个关于如何分布数据的精彩评论。

9、内核越多越好吗?

当然是错的。Redis是单线程进程,即使启用了持久化,最多也只会消耗两个内核。除非你打算在一台主机上运行——的多个实例,否则我希望只在开发和测试环境下!3354否则,Redis实例不需要2个以上的核心。

10、高可用

到目前为止,Redis Sentinel已经过彻底的测试,许多用户已经将其应用到生产环境中(包括ObjectRocket)。如果您的应用程序严重依赖Redis,您需要提出一个高可用性方案来确保它不会被丢弃。当然,如果你不想自己管理这些东西,ObjectRocket提供了一个高可用的平台,并提供724小时的技术支持。有兴趣可以考虑一下。

以上就是关于Redis正确使用的十个技巧。希望对大家的学习有帮助。果断收藏。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 关于redis数据库入门详细介绍图片,redis数据库的使用,关于Redis数据库入门详细介绍
  • redis队列操作命令,redis 循环队列
  • redis队列操作命令,redis 循环队列,redis实现简单队列
  • redis部署应用服务器上,redis如何启动服务器
  • redis部署应用服务器上,redis如何启动服务器,搭建Redis服务器步骤详细介绍
  • redis缓存穿透和击穿解决方案,redis缓存穿透,缓存雪崩解决
  • redis缓存穿透和击穿解决方案,redis缓存穿透,缓存雪崩解决,redis缓存穿透解决方法
  • Redis缓存,redis和缓存
  • Redis缓存,redis和缓存,Redis缓存详解
  • redis的配置,启动,操作和关闭方法有哪些,关闭redis的命令,Redis的配置、启动、操作和关闭方法
  • redis的主从配置方法详解图,Redis主从配置
  • redis的主从配置方法详解图,Redis主从配置,redis的主从配置方法详解
  • redis界面工具,mac安装redis可视化工具
  • redis界面工具,mac安装redis可视化工具,推荐几款 Redis 可视化工具(太厉害了)
  • redis正确使用的十个技巧是什么,redis正确使用的十个技巧有哪些
  • 留言与评论(共有 条评论)
       
    验证码: