Exemplo n.º 1
2
        // GET: Tracker
        public ActionResult Index(long userId, int amount = 0)
        {
            using (IRedisClient client = new RedisClient())
            {
                var userClient = client.As<User>();
                var user = userClient.GetById(userId);
                var historyClient = client.As<int>();
                var historyList = historyClient.Lists["urn:history:" + userId];

                if (amount > 0)
                {
                    user.Total += amount;
                    userClient.Store(user);

                    historyList.Prepend(amount);
                    historyList.Trim(0, 4);

                    client.AddItemToSortedSet("urn:leaderboard", user.Name, user.Total);
                }

                ViewBag.HistoryItems = historyList.GetAll();
                ViewBag.UserName = user.Name;
                ViewBag.Total = user.Total;
                ViewBag.Goal = user.Goal;
                ViewBag.UserId = user.Id;
            }

            return View();
        }
Exemplo n.º 2
0
        public ActionResult Save(string userName, int goal, long? userId)
        {
            using (IRedisClient client = new RedisClient())
            {
                var userClient = client.As<User>();

                User user;
                if (userId != null)
                {
                    user = userClient.GetById(userId);
                    client.RemoveItemFromSortedSet("urn:leaderboard", user.Name);
                }
                else
                {
                    user = new User()
                    {
                        Id = userClient.GetNextSequence()
                    };
                }

                user.Name = userName;
                user.Goal = goal;
                userClient.Store(user);
                userId = user.Id;

                client.AddItemToSortedSet("urn:leaderboard", userName, user.Total);
            }

            return RedirectToAction("Index", "Tracker", new { userId});
        }
        public void SaveItem(Item item)
        {
            var conf = new RedisEndpoint() { Host = "xxxxxxxxxxxxxx.redis.cache.windows.net", Password = "******", Ssl = true, Port = 6380 };
            using (IRedisClient client = new RedisClient(conf))
            {
                var itemClient = client.As<Item>();
                var itemList = itemClient.Lists["urn:item:" + item.ProductID];
                item.Id = itemClient.GetNextSequence();
                itemList.Add(item);

                client.AddItemToSortedSet("urn:Rank", item.Name, item.Price);

                //Publis top 5 Ranked Items
                IDictionary<string, double> Data = client.GetRangeWithScoresFromSortedSet("urn:Rank", 0, 4);
                List<Item> RankList = new List<Item>();
                int counter = 0;
                foreach (var itm in Data)
                {
                    counter++;
                    RankList.Add(new Item() { Name = itm.Key, Price = (int)itm.Value, Id = counter });
                }

                var itemJson = JsonConvert.SerializeObject(RankList);
                client.PublishMessage("Rank", itemJson);
                //---------------------------------------------
            }
        }
Exemplo n.º 4
0
 public void Add(string item)
 {
     client.AddItemToSortedSet(setId, item);
 }
Exemplo n.º 5
0
        private static void TestSortSet()
        {
            using (var client = new RedisClient("127.0.0.1", 6379))
            {
            
            #region "有序Set操作"
            client.AddItemToSortedSet("HQF.Tutorial.Redis:SA", "B", 2);
            client.AddItemToSortedSet("HQF.Tutorial.Redis:SA", "C", 1);
            client.AddItemToSortedSet("HQF.Tutorial.Redis:SA", "D", 5);
            client.AddItemToSortedSet("HQF.Tutorial.Redis:SA", "E", 3);
            client.AddItemToSortedSet("HQF.Tutorial.Redis:SA", "F", 4);

            //有序集合降序排列
            Console.WriteLine("\n有序集合降序排列");
            client.GetAllItemsFromSortedSetDesc("HQF.Tutorial.Redis:SA").ForEach(e => Console.Write(e + ","));
            Console.WriteLine("\n有序集合升序序排列");
            client.GetAllItemsFromSortedSet("HQF.Tutorial.Redis:SA").ForEach(e => Console.Write(e + ","));

            client.AddItemToSortedSet("HQF.Tutorial.Redis:SB", "C", 2);
            client.AddItemToSortedSet("HQF.Tutorial.Redis:SB", "F", 1);
            client.AddItemToSortedSet("HQF.Tutorial.Redis:SB", "D", 3);

            Console.WriteLine("\n获得某个值在有序集合中的排名,按分数的升序排列");
            Console.WriteLine(client.GetItemIndexInSortedSet("HQF.Tutorial.Redis:SB", "D"));

            Console.WriteLine("\n获得有序集合中某个值得分数");
            Console.WriteLine(client.GetItemScoreInSortedSet("HQF.Tutorial.Redis:SB", "D"));

            Console.WriteLine("\n获得有序集合中,某个排名范围的所有值");
            client.GetRangeFromSortedSet("HQF.Tutorial.Redis:SA", 0, 3).ForEach(e => Console.Write(e + ","));

                #endregion
            }
        }
        public void UpdateItem(Item item)
        {
            var conf = new RedisEndpoint() { Host = "xxxxxxxxxxxxxx.redis.cache.windows.net", Password = "******", Ssl = true, Port = 6380 };
            using (IRedisClient client = new RedisClient(conf))
            {
                IRedisTypedClient<Item> itemClient = client.As<Item>();
                IRedisList<Item> itemList = itemClient.Lists["urn:item:" + item.ProductID];

                var index = itemList.Select((Value, Index) => new { Value, Index })
                 .Single(p => p.Value.Id == item.Id).Index;

                var toUpdateItem = itemList.First(x => x.Id == item.Id);

                //var index = itemList.IndexOf(toUpdateItem);

                toUpdateItem.Name = item.Name;
                toUpdateItem.Price = item.Price;

                itemList.RemoveAt(index);
                if (itemList.Count - 1 < index)
                    itemList.Add(toUpdateItem);
                else itemList.Insert(index, toUpdateItem);

                client.RemoveItemFromSortedSet("urn:Rank", item.Name);
                client.AddItemToSortedSet("urn:Rank", item.Name, item.Price);

                //Publis top 5 Ranked Items
                IDictionary<string, double> Data = client.GetRangeWithScoresFromSortedSet("urn:Rank", 0, 4);
                List<Item> RankList = new List<Item>();
                int counter = 0;
                foreach (var itm in Data)
                {
                    counter++;
                    RankList.Add(new Item() { Name = itm.Key, Price = (int)itm.Value, Id = counter });
                }

                var itemJson = JsonConvert.SerializeObject(RankList);
                client.PublishMessage("Rank", itemJson);
                //---------------------------------------------
            }
        }