Пример #1
0
        public int GetObjectIndex(object model)
        {
            RedisTopLevelEntity entity = model as RedisTopLevelEntity;

            if (entity == null)
            {
                throw new Exception();
            }
            return(keys.IndexOf(entity));
        }
Пример #2
0
        public void UpdateCache(RedisTopLevelEntity entity)
        {
            String      intKey = GetByteString(GetMd5(entity.Key));
            CachedEntry entry  = new CachedEntry()
            {
                KeyHash = GetMd5(entity.Key), Type = entity.Type, TTL = entity.ExpiresAt
            };

            if (cachedEntities.ContainsKey(intKey))
            {
                if (!cachedEntities[intKey].Equals(entry))
                {                                                                   // update entry if different
                    entry.SlotIndex             = cachedEntities[intKey].SlotIndex; // inherit slot index
                    cachedEntities[intKey]      = entry;                            // modify in cache
                    cachedEntitiesDelts[intKey] = entry;                            // flag as modified
                }
            }
            else
            {   // entry does not exist, add it
                entry.SlotIndex             = GetNextEmptySlot();
                cachedEntities[intKey]      = entry;
                cachedEntitiesDelts[intKey] = entry;
            }
        }