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

我是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的默认行为做到这一点?

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

回答:

基本上,您是从配置文件而不是从redis-cli设置maxmemory的。您还可以指定maxmemory-

policy,这是当Redis用尽指定内存时将执行的一组过程。根据该配置文件,Redis内存不足时将使用总共6条策略:

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

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

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

>删除随机密钥,任何密钥

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

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

您可以使用在redis.conf文件的LIMITS部分中找到的

指令(在maxmemory指令上方)来设置这些行为。

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

以上是 使用Redis作为缓存和C#客户端 的全部内容, 来源链接: utcz.com/qa/418814.html

回到顶部