当前位置: 首页 > 面试题库 >

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

澹台鸿熙
2023-03-14
问题内容

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



 类似资料:
  • 问题内容: 我有postgres 9.3 db,我想使用Redis来缓存对数据库的调用(基本上像memcached一样)。我遵循了这些文档,这意味着我已经基本配置了redis以用作LRU缓存。但是不确定下一步该怎么做。如何告诉Redis跟踪对数据库的调用并缓存其输出?我怎么知道它正在工作? 问题答案: 用伪代码: 这可能必须是您正在使用的查询引擎的自定义适配器。

  • 我们需要根据是否配置了redis主机来启用/禁用缓存。我添加了以下3个bean配置。这是禁用的正确方法吗?启动后,我仍然看到缓存解析程序错误-“没有指定缓存解析程序,也没有找到CacheManager类型的bean。注册CacheManager bean或从配置中删除@EnableCaching注释” 谢谢你的帮助!

  • 我有一个运行在一个系统上的java服务器,它从数据库加载数据并缓存到java缓存。我有其他的C++客户端,它正在运行使用相同的Java配置。两者都在不同的PC上运行。我希望对java和C++客户机都使用一个公共缓存,也就是说,如果我使用java加载缓存,然后我希望通过C++客户机查询这个缓存数据。我只是尝试这样设置组播选项。 如果两个客户机都在同一个系统上工作,它的工作是好的。但是当两者都在不同的

  • 我的应用程序需要两个缓存用例: Redis作为缓存。我计划使用内存策略按id缓存项(JSON Blob)。平均JSON项目将采取 我是否可以在不影响性能的情况下将Redis的单个实例用于两个目的?为了更好的性能,把它们拆分是不是更好?谢谢你。

  • 问题内容: 我需要使用php创建一个具有大量数据的mysql数据库的解决方案。我的程序将有许多要求,我认为如果我使用缓存和OO数据库,我会得到很好的结果,但是我没有经验。 我认为,例如,如果我将保存在mysql中的信息缓存到redis数据库中,性能将会提高,但是我不知道这是否是个好主意,因此我希望有人来帮助我选择。 抱歉,如果我的英语不太好,我来自巴西。 问题答案: 是的,redis对此很有帮助。

  • 本文向大家介绍如何高效使用Redis作为LRU缓存,包括了如何高效使用Redis作为LRU缓存的使用技巧和注意事项,需要的朋友参考一下 当用Redis作为一个LRU存储时,有些时候是比较方便的,在你增添新的数据时会自动驱逐旧的数据。这种行为在开发者论坛是非常有名的,因为这是流行的memcached系统的默认行为。 LRU实际上只是支持驱逐的方式之一。这页包含更多一般的Redis maxmemory