我是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条策略:
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最小的密钥(也是最旧的密钥)。