gpt4 book ai didi

redis - 使用 Redis 作为缓存和 C# 客户端

转载 作者:IT王子 更新时间:2023-10-29 06:02:27 25 4
gpt4 key购买 nike

我是 Redis 的新手,正在尝试寻找一种简单的方法将 Redis 用作我的 C# 应用程序的本地缓存。我已经从 https://github.com/MSOpenTech/redis/releases 下载并运行了 redis-server

我可以成功存储一个键值并按如下方式检索它:

        var redisManager = new PooledRedisClientManager("localhost:6379");
using (var redis = redisManager.GetClient())
{
redis.Set("mykey_1", 15, TimeSpan.FromSeconds(3600));
// get typed value from cache
int valueFromCache = redis.Get<int>("mykey_1"); // must be =
}

我想限制 Redis 在我的服务器上使用的内存量,我还希望 Redis 在内存填满时自动清除值。我尝试了 maxmemory 命令,但在 redus-cli 程序中找不到 maxmemory。

Redus 会自动为我清除旧值吗? (我假设没有)如果没有,有没有办法让 redis 的默认行为通过我在下面使用的 Set 方法来实现?

如果我走错了路,请告诉我。

最佳答案

此处描述了您问题的答案:What does Redis do when it runs out of memory?

基本上,您从配置文件中设置最大内存,而不是从 redis-cli 中。您还可以指定一个 maxmemory-policy,它是 redis 在用完指定内存时执行的一组过程。根据that配置文件中,Redis 在内存不足时使用的策略共有 6 个:

volatile-lru -> 使用 LRU 算法删除带有过期设置的 key

allkeys-lru -> 根据LRU算法移除任意key

volatile-random -> 删除一个带有过期设置的随 secret 钥

allkeys-random -> 删除随 secret 钥,任意 key

volatile-ttl -> 移除过期时间最近的key(minor TTL)

noeviction -> 根本不会过期,只是在写操作时返回一个错误

您可以使用在 redis.conf 文件的 LIMITS 部分(在 maxmemory 指令上方)中找到的 ma​​xmemory-policy 指令来设置这些行为。

因此,您可以为存储在 Redis 中的每个键设置过期时间(很大的 expire 时间),还可以设置 volatile-ttl 策略。这样,当 Redis 内存不足时,根据您设置的策略,删除具有最小 TTL(也是最旧的)的键。

关于redis - 使用 Redis 作为缓存和 C# 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33309825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com