/// <summary>
        /// Добавить в кэш одновременно key-value и value-key
        /// </summary>
        /// <param name="cacheProvider"></param>
        /// <param name="collection">Namespace для формирования уникального ключа</param>
        /// <param name="key"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        public static async Task <Result> SetKeyValueAsync(this CacheProvider cacheProvider, string collection, string key, string value)
        {
            var setKeyResult = await cacheProvider.SetAsync(collection, key, value);

            if (setKeyResult.IsFailure)
            {
                return(setKeyResult);
            }

            var setValueResult = await cacheProvider.SetAsync(collection, value, key);

            return(setValueResult);
        }
        /// <summary>
        /// Найти ключ по значению и удалить ключ-значение, затем удалить значение-ключ из кэша
        /// </summary>
        /// <param name="cacheProvider"></param>
        /// <param name="collection">Namespace для формирования уникального ключа</param>
        /// <param name="value">значение, по которому идет поиск ключа</param>
        /// <returns></returns>
        public static async Task <Result> RemoveKeyByValue(this CacheProvider cacheProvider, string collection, string value)
        {
            var key = await cacheProvider.GetAsync <string>(collection, value);

            if (string.IsNullOrWhiteSpace(key))
            {
                return(Result.Failure(ErrorCodes.KeyForCacheNotFound));
            }

            await cacheProvider.RemoveAsync(collection, key);

            await cacheProvider.RemoveAsync(collection, value);

            return(Result.Success());
        }