使用 Redis 作为缓存和 C# 客户端
Using Redis as Cache and C# client
我是 Redis 的新手,正在尝试寻找一种简单的方法将 Redis 用作我的 C# 应用程序的本地缓存。我已经从 https://github.com/MSOpenTech/redis/releases
下载并 运行 redis-server
我可以成功存储一个键值并检索它如下:
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 方法来实现?
如果我走错了路,请告诉我。
此处描述了您问题的答案:What does Redis do when it runs out of memory?
基本上,您从配置文件中设置最大内存,而不是从 redis-cli 中。您还可以指定一个 maxmemory-policy,它是 redis 在用完指定内存时执行的一组过程。根据 that 配置文件,Redis 在内存不足时使用了 6 个策略:
volatile-lru -> 使用 LRU 算法删除带有过期设置的密钥
allkeys-lru -> 根据LRU算法移除任意key
volatile-random -> 删除带有过期设置的随机密钥
allkeys-random -> 删除随机密钥,任意密钥
volatile-ttl -> 移除过期时间最近的密钥(minor TTL)
noeviction -> 根本不会过期,只是return写操作错误
您可以使用 maxmemory-policy 指令来设置这些行为,该指令位于 redis.conf 文件的 LIMITS 部分(在 maxmemory 指令上方)。
因此,您可以为存储在 Redis 中的每个键设置一个过期时间(一个大 expire 时间),并设置一个 volatile-ttl 策略。这样,当 Redis 内存不足时,根据您设置的策略,删除 TTL 最小(也是最旧的)的键。
我是 Redis 的新手,正在尝试寻找一种简单的方法将 Redis 用作我的 C# 应用程序的本地缓存。我已经从 https://github.com/MSOpenTech/redis/releases
下载并 运行 redis-server我可以成功存储一个键值并检索它如下:
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 方法来实现?
如果我走错了路,请告诉我。
此处描述了您问题的答案:What does Redis do when it runs out of memory?
基本上,您从配置文件中设置最大内存,而不是从 redis-cli 中。您还可以指定一个 maxmemory-policy,它是 redis 在用完指定内存时执行的一组过程。根据 that 配置文件,Redis 在内存不足时使用了 6 个策略:
volatile-lru -> 使用 LRU 算法删除带有过期设置的密钥
allkeys-lru -> 根据LRU算法移除任意key
volatile-random -> 删除带有过期设置的随机密钥
allkeys-random -> 删除随机密钥,任意密钥
volatile-ttl -> 移除过期时间最近的密钥(minor TTL)
noeviction -> 根本不会过期,只是return写操作错误
您可以使用 maxmemory-policy 指令来设置这些行为,该指令位于 redis.conf 文件的 LIMITS 部分(在 maxmemory 指令上方)。
因此,您可以为存储在 Redis 中的每个键设置一个过期时间(一个大 expire 时间),并设置一个 volatile-ttl 策略。这样,当 Redis 内存不足时,根据您设置的策略,删除 TTL 最小(也是最旧的)的键。