当前位置: 首页 > 知识库问答 >
问题:

Redis性能调优

松旭
2023-03-14

我们正在运行一个web应用程序,并从memcached切换到redis(2.4)进行缓存。现在我们对redis的表现有些失望。Redis运行在同一台服务器上,我们只使用非常简单的GET和SET操作。对于一些大量使用缓存值的请求,我们有多达300个对redis的GET请求,但这些请求最多需要150ms。我们大约有20万个活动密钥,每秒大约有1000个redis请求。磁盘io、ram或CPU都没有问题。由于我们现有的代码,我们不能简单地将redis请求组合在一起。Memcached的速度大约快了4倍。我们喜欢redis的是,我们不需要任何缓存升温,并且可以在将来使用更高级的数据存储特性。我们期望redis的性能与memcached类似。所以也许我们在配置中遗漏了一些东西,这基本上是默认配置。

您知道redis性能调优的任何最佳实践吗?

共有1个答案

汝承载
2023-03-14

首先,您可能希望阅读Redis benchmark页面。它对调优Redis要检查的要点提供了很好的总结。

即使不使用流水线,在150毫秒内获得300个也不是那么有效。这意味着平均延迟为500我们。然而,它实际上取决于您的对象的大小。更大的对象,更多的延迟。在我非常旧的2 GHz AMD盒上,我可以为小对象(几个字节)测量150us延迟。

要快速检查Redis实例的平均延迟,可以使用:

$ redis-cli --latency
$ redis-benchmark -q -n 10000 -c 1 -d average_size_of_your_objects_in_bytes

您可能需要检查以下几点:

  • 您使用哪个Redis客户端库?用哪种开发语言?对于某些脚本语言,您需要安装hiredis模块以获得高效的客户端。
  • 您的计算机是虚拟机吗?在哪个操作系统上?
  • 到Redis的连接是持久的吗?(即,您不应在应用程序服务器的每个HTTP请求中连接/断开连接)。

为什么使用memcached会更好?一个memcached实例肯定比一个Redis实例更具有可伸缩性,并且响应速度更快,因为它可能运行在多个线程上。Redis是快速的,但是是单线程的--所有命令的执行都是序列化的。因此,当一个命令正在进行连接时,所有其他客户端都必须等待一个给定命令的延迟也会影响所有挂起的命令。一般来说,在低吞吐量时,性能是相当的。

 类似资料:
  • 主要内容:测试命令格式,执行测试命令为了解 Redis 在不同配置环境下的性能表现,Redis 提供了一种行性能测试工具 redis-benchmark(也称压力测试工具),它通过同时执行多组命令实现对 Redis 的性能测试。 性能测试的作用是让我们了解 Redis 服务器的性能优劣。在实际的业务场景中,性能测试是必不可少的。在业务系统上线之前,我们都需要清楚地了解 Redis 服务器的性能,从而避免发生某些意外情况,比如数据量过

  • 我安装了Redis来评估是否可以使用它来缓存对象集合;每个密钥包含一个更新的时间序列,每个更新是一个字节[5000]。我对我运行的一个简单测试的结果感到惊讶--我插入了1000个数组;每个都是一个字节[5000]。在本地读取计算机上运行LRANGE的完整列表需要20秒才能完成。我通过改变我检索到的Byte[5000]对象的数量进行了测试,并且检索的时间与所请求的数据大小成比例o(n),正如预期的那

  • Redis 性能测试是通过同时执行多个命令实现的。 语法 redis 性能测试的基本命令如下: redis-benchmark [option] [option value] 实例 测试存取大小为100字节的数据包的性能。 $ redis-benchmark -h 127.0.0.1 -p 6379 -q -d 100 PING_INLINE: 85910.65 requests per se

  • 对于某些工作负载,可以在通过在内存中缓存数据或者打开一些实验选项来提高性能。 在内存中缓存数据 Spark SQL可以通过调用sqlContext.cacheTable("tableName")方法来缓存使用柱状格式的表。然后,Spark将会仅仅浏览需要的列并且自动地压缩数据以减少内存的使用以及垃圾回收的 压力。你可以通过调用sqlContext.uncacheTable("tableName")

  • 集群中的Spark Streaming应用程序获得最好的性能需要一些调整。这章将介绍几个参数和配置,提高Spark Streaming应用程序的性能。你需要考虑两件事情: 高效地利用集群资源减少批数据的处理时间 设置正确的批容量(size),使数据的处理速度能够赶上数据的接收速度 减少批数据的执行时间 设置正确的批容量 内存调优

  • 常用命令 1. 查看系统 CPU 总数 $ grep -c ^processor /proc/cpuinfo $ lscpu 2. 查看网卡信息,主机名 $ hostname $ ip addr show eth0 3. 查看系统上运行的服务 # systemctl list-units -t service | awk '$3=="active"' ** ** ** **