예제 #1
0
        public void TestSortedSet()
        {
            ConnectionMultiplexer redis = ConnectionMultiplexer.Connect(RedisServer.GetConnectionString());

            Assert.NotNull(redis);

            IDatabase db = redis.GetDatabase();

            Assert.NotNull(db);

            RedisKey key = "sortedset-test";

            RedisValue[] members = new RedisValue[] { "W00001", "W00002", "W00003", "W00004" };
            double[]     scores  = new double[] { 1, 3, 2, 4 };

            //
            // 멤버 모두 삭제
            //
            db.SortedSetRemove(key, members);

            //
            // 단일 멤버 추가, 스코어 변경 테스트
            //

            // 단일 멤버 추가
            bool result = db.SortedSetAdd(key, members[0], scores[0]);

            Assert.True(result);

            // 단일 멤버 스코어 변경 (이때 메서드의 리턴값은 false)
            scores[0] = 5;
            result    = db.SortedSetAdd(key, members[0], scores[0]);
            Assert.False(result);

            // 멤버 스코어 값 확인
            double?actualScore = db.SortedSetScore(key, members[0]);

            Assert.True(actualScore != null);
            Assert.Equal(scores[0], actualScore);

            //
            // 다중 멤버 추가
            //
            for (int i = 1; i < members.Length; i++)
            {
                result = db.SortedSetAdd(key, members[i], scores[i]);
                Assert.True(result);
            }

            //
            // Rank로 검색
            //
            {
                RedisValue[] values = db.SortedSetRangeByRank(key);
                Assert.Equal(4, values.Length);
                Assert.Equal(members[2], values[0]);
                Assert.Equal(members[1], values[1]);
                Assert.Equal(members[3], values[2]);
                Assert.Equal(members[0], values[3]);
            }

            //
            // Score로 검색
            //
            {
                RedisValue[] values = db.SortedSetRangeByScore(key, scores[3]);
                Assert.Equal(2, values.Length);
                Assert.Equal(members[3], values[0]);
                Assert.Equal(members[0], values[1]);
            }
        }