redis - 将 MichaCo\CacheManager 与 Redis4You 和 RedisLab redis 服务器一起使用

标签 redis stackexchange.redis redis-server cachemanager

https://github.com/MichaCo/CacheManager/issues/42

嗨。我正在使用 Redis4You 托管的 redis 服务器。以下配置工作正常。当代码到达 Cache.Add("a", "b"); 行时,它会无限期地停留在那里。当我监控 Redis 服务器时,我看到控制台上充满了 PING。

static class Program
{
    static readonly ICacheManager<string> Cache = CacheFactory.Build<string>("Test", cbcp =>
    {
        cbcp.WithSystemRuntimeCacheHandle("testCache")
            .And
            .WithRedisConfiguration("redis", rcb =>
            {
                rcb.WithEndpoint("<XXX>", 1111)
                   .WithPassword("<YYY>")
                   .WithAllowAdmin()
                   .WithDatabase(1);
            })
            .WithMaxRetries(100)
            .WithRetryTimeout(10)
            .WithRedisBackPlate("redis")
            .WithRedisCacheHandle("redis", true);
    });
    static void Main(string[] args)
    {
        /* It stucks in the first line. */
        Cache.Add("a", "b");
        Console.ReadLine();
    }
}

我调试了代码,CacheManager 库提供的 LuaScript 如下所示导致错误:

local result=redis.call('HMSET', KEYS[1], 'value', ARGV[1], 'type', ARGV[2], 'expiration', ARGV[3], 'timeout', ARGV[4], 'created', ARGV[5])
if ARGV[3] ~= '0' and ARGV[4] ~= '0' then
    redis.call('PEXPIRE', KEYS[1], ARGV[4])
else
    redis.call('PERSIST', KEYS[1])
end
return result

...而这个luascript用在CacheManager库RedisCacheHandler.cs LoadScripts()方法的这部分代码上;

var putLua = StackRedis.LuaScript.Prepare(ScriptPut);
putLua.Load(server);

那么,这里的问题是什么? (我觉得不是版本,因为redis4you用的是2.4,redislab用的是redis的3.0.3。)

最佳答案

Redis4You 使用 Redis v2.4,RedisLab 现在使用 Redis v3.0.3。因此,RedisLab 服务器运行完美,但 Redis4You 存在问题,因为 Redis v2.4 不支持脚本。

CacheManager 应该可以解决这个问题。顺便说一句,您可以使用 IServer.Features.Scripting 检查此可用性。

关于redis - 将 MichaCo\CacheManager 与 Redis4You 和 RedisLab redis 服务器一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35331965/

相关文章:

c# - Redis中的处理列表

redis - StackExchange.Redis 中 BookSleeve 的 Sets.GetAllString() 的等价物是什么?

pyspark - Pyspark + Redis远程服务器

redis - 如何在 Redis 服务器中查找 Redis 消息的来源列表[IP]

redis - 如何在 Linux 上配置 Redis 以在重启后持久化数据?

Redis - 如何存储和排列数据

redis - 单分片 Redis Cluster 怎么会出现 CROSSLOT 错误?

java - 将 jedis .jar 文件上传到 Git 存储库

windows - Redis 集群就绪客户端

node.js - 如何连接部署在谷歌云上的redis?