コード例 #1
0
        public List <BlackboardGrade> GetGrades(int RowsCount)
        {
            var grades = new List <BlackboardGrade>();
            var unpulledGradesListCacheKey      = CacheSchema.SortedSets.KeyBlackboardGradeUnpulled();
            var pulledGradesListCacheKey        = CacheSchema.SortedSets.KeyBlackboardGradePulled(RequestIdManager.RequestId);
            var pulledGradesHistoryListCacheKey = CacheSchema.SortedSets.KeyBlackboardGradePulledHistory();

            using (var redisCacheManager = new RedisCacheManager())
            {
                var gradesKeys      = PeekGrades(RowsCount);
                var gradesCacheKeys = gradesKeys.Select(x => new SimpleCacheKey(x)).ToList();
                grades = redisCacheManager.GetMultiple <BlackboardGrade>(gradesCacheKeys).ToList();

                // transfer keys from UNPULLED list to PULLED list
                // + add the current PULLED list key to the PULLED History list (to avoid the search on 'SearchPulledGradesLists')
                if (grades.Count > 0)
                {
                    var actionAddGradeKeysToPulledList        = new RedisTransactionAction(eRedisTransactionActionType.AddToUniqueList, pulledGradesListCacheKey, gradesKeys);
                    var actionRemoveGradeKeysFromUnpulledList = new RedisTransactionAction(eRedisTransactionActionType.RemoveFromUniqueList, unpulledGradesListCacheKey, gradesKeys);
                    var actionAddPulledListToHistory          = new RedisTransactionAction(eRedisTransactionActionType.AddToUniqueList, pulledGradesHistoryListCacheKey, new List <string> {
                        pulledGradesListCacheKey.KeyString
                    });
                    redisCacheManager.MakeTransaction(actionAddGradeKeysToPulledList, actionRemoveGradeKeysFromUnpulledList, actionAddPulledListToHistory);
                }
            }

            return(grades);
        }
コード例 #2
0
        public bool SaveGrade(BlackboardGrade grade)
        {
            if (string.IsNullOrWhiteSpace(grade.CustomerId))
            {
                throw new ArgumentNullException("parameter customerId is null/whitespace");
            }
            if (string.IsNullOrWhiteSpace(grade.CourseId))
            {
                throw new ArgumentNullException("parameter courseId is null/whitespace");
            }
            if (string.IsNullOrWhiteSpace(grade.AssignmentId))
            {
                throw new ArgumentNullException("parameter assignmentId is null/whitespace");
            }
            if (grade == null)
            {
                throw new ArgumentNullException("parameter grade is null");
            }

            var gradeCacheKey = CacheSchema.KeyBlackboardGrade(typeof(BlackboardGrade), grade.CustomerId, grade.CourseId, grade.AssignmentId, grade.id);
            var unpulledGradesListCacheKey = CacheSchema.SortedSets.KeyBlackboardGradeUnpulled();

            var gradeExpiryOnRedisInDays = Convert.ToInt32(CloudConfig.Get("BLACKBOARD_GRADE_EXPIRY_ON_REDIS_IN_DAYS", "7"));
            var ExpiryDate = DateTime.Now.AddDays(gradeExpiryOnRedisInDays).AddMinutes(CommonConfig.Cache.LowCacheTimeOutInMinutes);

            //redisCacheManager.Set(gradeCacheKey, grade, ExpiryDate);
            var actionSetGrade = new RedisTransactionAction(eRedisTransactionActionType.Set, gradeCacheKey, grade);

            actionSetGrade.Properties.Add("EXPIRY", ExpiryDate);

            //redisCacheManager.AddToUniqueList(unpulledGradesListCacheKey, gradeCacheKey.CacheKey);
            var actionAddGradeKeyToList = new RedisTransactionAction(eRedisTransactionActionType.AddToUniqueList, unpulledGradesListCacheKey, new List <string> {
                gradeCacheKey.KeyString
            });

            using (var redisCacheManager = new RedisCacheManager())
                return(redisCacheManager.MakeTransaction(actionSetGrade, actionAddGradeKeyToList));
        }