草庐IT

cpu-cache

全部标签

class - 将我的类命名为 : Pipelined cache? AntiSymetricPipelineCache?

无法为此类命名。基本上它是一个围绕redis数据存储的包装器,其中写入异步“触发”并在另一个线程上执行(以尽可能快地保持主要处理行为)。只有偶尔的Get操作,在我们运行这些操作之前,我们需要确保在执行get操作之前所有的put操作都已完成。在正常操作期间,它与后写缓存非常相似,但它必须等待刷新/同步才能返回任何数据。有什么想法吗?我想我在这里遗漏了一些明显的东西。 最佳答案 如果您将键->值映射视为一种转换,那么转换后备缓冲区(TLB)命名法就很有意义。 关于class-将我的类命名为:

caching - 我的缓存守护进程应该放在哪里?

TL;DR-一个用于session存储的简单缓存集群(使用memcache或redis)应该存在于应用程序的服务器上(即与nginx和php一起)还是在它自己的独立ec2实例(如elasticache或定制的ec2实例)上?我正在使用AmazonOpsWorks设置我的网络应用程序的基础设施。我倾向于通过安装在应用层本身的内存缓存实例而不是作为它自己的ec2实例来实现session缓存。例如:[LoadBalancer]/|\[AppLayer1]–[AppLayer2]–[AppLayer3]*/wmemcacheorredis对比[LoadBalancer]/|\[AppLayer

caching - 我的缓存守护进程应该放在哪里?

TL;DR-一个用于session存储的简单缓存集群(使用memcache或redis)应该存在于应用程序的服务器上(即与nginx和php一起)还是在它自己的独立ec2实例(如elasticache或定制的ec2实例)上?我正在使用AmazonOpsWorks设置我的网络应用程序的基础设施。我倾向于通过安装在应用层本身的内存缓存实例而不是作为它自己的ec2实例来实现session缓存。例如:[LoadBalancer]/|\[AppLayer1]–[AppLayer2]–[AppLayer3]*/wmemcacheorredis对比[LoadBalancer]/|\[AppLayer

c# - Catch Microsoft.Extensions.Caching.Redis 连接失败?

我需要在我的asp.net核心项目中使用Microsoft.Extensions.Caching.Redis。我将此代码放入ConfigureService(Startup.cs)中:IDistributedCachecache=newRedisCache(newRedisCacheOptions{Configuration=Configuration.GetConnectionString("Redis"),InstanceName="Master"});services.AddSingleton(cache);我需要的是捕获连接异常(以防Redis服务器宕机,或者服务器无法访问),

c# - Catch Microsoft.Extensions.Caching.Redis 连接失败?

我需要在我的asp.net核心项目中使用Microsoft.Extensions.Caching.Redis。我将此代码放入ConfigureService(Startup.cs)中:IDistributedCachecache=newRedisCache(newRedisCacheOptions{Configuration=Configuration.GetConnectionString("Redis"),InstanceName="Master"});services.AddSingleton(cache);我需要的是捕获连接异常(以防Redis服务器宕机,或者服务器无法访问),

caching - 仅将一部分 Redis 键保存到磁盘的最佳方法

是否可以使用Redis仅将某些键保存到磁盘?目前最好的解决方案是运行单独的Redis服务器,其中一台服务器可以丢弃缓存,另一台服务器有更重要的数据,我们需要定期刷新到磁盘(例如网页访问计数器) 最佳答案 您可以为您的key子集设置过期时间。它们将持久保存到磁盘,但仅在它们过期之前。这可能足以满足您的用例。然后您可以使用redismaxmemory和maxmemory-policy配置选项来限制内存使用,并告诉redis在达到最大内存时该怎么做。如果您使用volatile-lru或volatile-ttl选项,Redis将仅丢弃那些在

caching - 仅将一部分 Redis 键保存到磁盘的最佳方法

是否可以使用Redis仅将某些键保存到磁盘?目前最好的解决方案是运行单独的Redis服务器,其中一台服务器可以丢弃缓存,另一台服务器有更重要的数据,我们需要定期刷新到磁盘(例如网页访问计数器) 最佳答案 您可以为您的key子集设置过期时间。它们将持久保存到磁盘,但仅在它们过期之前。这可能足以满足您的用例。然后您可以使用redismaxmemory和maxmemory-policy配置选项来限制内存使用,并告诉redis在达到最大内存时该怎么做。如果您使用volatile-lru或volatile-ttl选项,Redis将仅丢弃那些在

performance - Redis CPU 在排序集上的性能

我们正在运行Redis,每秒对排序集中的键执行数百次增量,同时每秒对排序集执行数千次读取。这似乎运行良好,但在峰值负载期间,CPU使用率变得相当高,达到单核的80%。排序集本身是几千个键的小内存占用。CPU使用率的增加可能是由于每秒数百次增量还是数千次读取?了解两者都会影响性能,但哪个影响更大?鉴于此,监控我的生产实例以审查这些瓶颈的一些最佳指标是什么? 最佳答案 要检查的一点是排序集是否小到足以被Redis序列化。例如,“调试对象”可以应用于已排序集合的样本,以检查它们是否编码为ziplist。ziplist使用内存与CPU进行交

performance - Redis CPU 在排序集上的性能

我们正在运行Redis,每秒对排序集中的键执行数百次增量,同时每秒对排序集执行数千次读取。这似乎运行良好,但在峰值负载期间,CPU使用率变得相当高,达到单核的80%。排序集本身是几千个键的小内存占用。CPU使用率的增加可能是由于每秒数百次增量还是数千次读取?了解两者都会影响性能,但哪个影响更大?鉴于此,监控我的生产实例以审查这些瓶颈的一些最佳指标是什么? 最佳答案 要检查的一点是排序集是否小到足以被Redis序列化。例如,“调试对象”可以应用于已排序集合的样本,以检查它们是否编码为ziplist。ziplist使用内存与CPU进行交

Redis 内存和 CPU 峰值

我们在应用程序中使用Redis处理一些数据,这非常棒。不过,我注意到redis-server进程偶尔会出现cpu和内存峰值。这是Giraffedashboard来self们的生产和登台环境。分期显然没有那么忙,但生产也不是很忙......这似乎与后台保存相关,但并非全部相关。只有少数人创造了这个峰值。也许都可以,但这只是取决于测量分辨率(有些根本没有在我们的内存/CPU监控周期内捕获)。我不完全确定。我仍然想知道这是否符合预期/正常。我们没有观察到任何问题,但我想安全起见。如果我们的产品有更多的流量/事件,我们是否可能会看到更多这样的峰值?更新:峰值时间附近的redis日志文件[185