使用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