小编典典

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

redis

我是Redis的新手,并试图找出一种简单的方法将Redis用作C#应用程序的本地缓存。我已经从https://github.com/MSOpenTech/redis/releases下载并运行redis服务器

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

        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会自动为我清除旧值吗?(我假设没有),如果没有,是否可以使用下面使用的Set方法使redis的默认行为做到这一点?

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


阅读 569

收藏
2020-06-20

共1个答案

小编典典

基本上,您是从配置文件而不是从redis-cli设置maxmemory的。您还可以指定maxmemory-
policy,这是当Redis用尽指定内存时将执行的一组过程。根据配置文件,Redis内存不足时将使用总共6条策略:

volatile-lru- >使用LRU算法删除具有过期集的密钥

allkeys-lru- >根据LRU算法删除任何密钥

volatile-random- >删除具有过期集的随机密钥

allkeys-random- >删除随机密钥,任何密钥

volatile-ttl- >删除最接近到期​​时间(较小的TTL)的密钥

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

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

因此,您可以为存储在Redis中的每个密钥设置过期时间(较大的过期时间),还可以设置_volatile-ttl_ 策略。这样,当Redis内存不足时,将根据您设置的策略删除TTL最小的密钥(也是最旧的密钥)。

2020-06-20