我是 Redis 新手,正在尝试找出一种简单的方法来使用 Redis 作为我的 C# 应用程序的本地缓存。我已经下载并运行了 redis-serverhttps://github.com/MSOpenTech/redis/releases https://github.com/MSOpenTech/redis/releases
我可以成功存储键值并检索它,如下所示:
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 方法来实现?
如果我走错了路,请告诉我。
您的问题的答案如下所述:当Redis内存不足时会做什么? https://stackoverflow.com/questions/5068518/what-does-redis-do-when-it-runs-out-of-memory
基本上,您可以从配置文件而不是从 redis-cli 设置 maxmemory。您还可以指定一个 maxmemory-policy,它是 redis 在耗尽指定内存时执行的一组过程。根据that http://download.redis.io/redis-stable/redis.conf在config文件中,Redis在内存不足时总共使用了6种策略:
挥发性lru-> 使用 LRU 算法删除带有过期设置的密钥
全键-lru-> 根据LRU算法删除任意key
易失性随机-> 删除带有过期设置的随机密钥
全键随机-> 删除随机密钥,任意密钥
易失性-ttl-> 删除具有最近过期时间(次要 TTL)的密钥
不驱逐-> 根本不会过期,只是在写入操作时返回错误
您可以使用以下命令设置这些行为最大内存策略您可以在 redis.conf 文件的 LIMITS 部分中找到该指令(位于 maxmemory 指令上方)。
因此,您可以为存储在 Redis 中的每个键(一个大的expire http://redis.io/commands/expire时间)并设置易失性-ttl政策。这样,当 Redis 内存不足时,根据您设置的策略,具有最小 TTL 的键(也是最旧的键)将被删除。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)