0

我正在使用 redis 进行缓存,但也在我的一项服务中使用 ICacheClient 使用 Get 和 Set 等直接从缓存中写入和读取。

Redis 设置为将值保存到磁盘。所以如果我关闭 Redis 并重新启动它,缓存的数据就在那里。但是,如果我在调试模式下运行我的 servicestack 服务并停止网站并再次重新启动它,servicestack 会在第一次调用 servicestack 服务时清除 redis 缓存。我怎样才能关闭它,或者它是一个错误。缓存中的项目不应过期,并且在检查缓存中的各个项目时,将其设置为不过期,因此并不是它即将过期,而是该服务堆栈似乎在重新启动后第一次调用时刷新数据库。

        public ICacheClient CacheClient { get; set; }

        public object Get(KeyValues request)
        {

            var value = CacheClient.Get<object>(request.Key);

            var response = new KeyValuesResponse { Key = request.Key, Value       = value };
            return value;
        }

        public void Put(KeyValuesRecord request)
        {
           if (request.Key != null)
           { 
                CacheClient.Set(request.Key,request.Value);
           }
        }

        public void Post(KeyValuesRecord request)
        {
            CacheClient.Set(request.Key, request.Value);
        }

        public void Delete(KeyValues request)
        {
            CacheClient.Remove(request.Key);
        }

当我调用第一个 Get 时,例如 url:http://localhost:4099/api/KeyValues/mykey

整个 redis db(0) 被清除。

4

0 回答 0