zoukankan      html  css  js  c++  java
  • Redis .Net 基本类型使用之南

    前言

    最近需要使用redis,看了一些文档,也在博客园里面看了很多文章,这里就记录下Redis常用类型的操作。

    String

    string是redis基本类型,一般通过Get,Set 命令进行操作,这里我用ServiceStack.Redis 进行操作:

    using (redis)
    {
        //setValue 插入数据
        redis.SetValue("hello", "world");
        string s = redis.GetValue("hello");
    
        redis.SetValue("Id", 1.ToString());
        long id = redis.IncrementValue("Id");
        id = redis.IncrementValueBy("Id", 100);
    
        redis.ExpireEntryIn("hello", new TimeSpan(0, 2, 0));
    
    
    }

     List

    list就是我们提到的链表

    using (redis)
    {
        string listId = "listId";
    
        for (int i = 0; i < 5; i++)
        {
            redis.AddItemToList(listId, i.ToString());
        }
    
        string s = redis.GetItemFromList(listId, 0);
        List<string> all = redis.GetAllItemsFromList(listId);
        long count = redis.GetListCount(listId);
    
        s = redis.PopItemFromList(listId);
        s = redis.RemoveStartFromList(listId);
        s = redis.RemoveEndFromList(listId);
                    
                    
    
    }

    Set

    set也是数据容器,和list不一样,set里面的元素不能重复

    using (redis)
    {
        string setId1 = "setId1";
        string setId2 = "setId2";
        for (int i = 0; i < 5; i++)
        {
            redis.AddItemToSet(setId1, i.ToString());
        }
    
        for (int i = 0; i < 5; i++)
        {
            redis.AddItemToSet(setId2, (i + 2).ToString());
        }
    
        long count = redis.GetSetCount(setId1);
        string s = redis.GetRandomItemFromSet(setId1);
        HashSet<string> allIds = redis.GetAllItemsFromSet(setId1);
    
        HashSet<string> unionIds = redis.GetUnionFromSets(setId1, setId2);
        redis.StoreIntersectFromSets("intersectId", setId1, setId2);
        redis.StoreDifferencesFromSet("diffentsecId", setId1, setId2);
    
        allIds = redis.GetAllItemsFromSet("intersectId");
        allIds = redis.GetAllItemsFromSet("diffentsecId");
    
        redis.RemoveItemFromSet(setId1, "1");
        s = redis.PopItemFromSet(setId1);
    
    }

    SortSet

    SortSet和set一样,但sortset顾名思义就是有排序的set

    using (redis)
    {
        string sortSetId = "sortSetId";
    
        for (int i = 0; i < 10; i++)
        {
            redis.AddItemToSortedSet(sortSetId, i.ToString(), i);
        }
    
        bool contains = redis.SortedSetContainsItem(sortSetId, "1");
        long count = redis.GetSortedSetCount(sortSetId);
        count = redis.GetSortedSetCount(sortSetId, 0, 4);
    
        List<string> ids = redis.GetAllItemsFromSortedSet(sortSetId);
        ids = redis.GetAllItemsFromSortedSetDesc(sortSetId);
        ids = redis.GetRangeFromSortedSet(sortSetId, 0, 1);
        ids = redis.GetRangeFromSortedSetByHighestScore(sortSetId, 0, 3);
        ids = redis.GetRangeFromSortedSetByLowestScore(sortSetId, 0, 3);
    
        double score = redis.GetItemScoreInSortedSet(sortSetId, "1");
    
        IDictionary<string, double> valueWithScores = redis.GetRangeWithScoresFromSortedSet(sortSetId, 0, 10);
        valueWithScores = redis.GetRangeWithScoresFromSortedSetByHighestScore(sortSetId, 0, 10);
        valueWithScores = redis.GetRangeWithScoresFromSortedSetByLowestScore(sortSetId, 0, 10);
    
        bool isSucc = redis.RemoveItemFromSortedSet(sortSetId, "1");
    
        count = redis.RemoveRangeFromSortedSet(sortSetId, 0, 2);
        count = redis.RemoveRangeFromSortedSetByScore(sortSetId, 3, 5);
    
        string s = redis.PopItemWithHighestScoreFromSortedSet(sortSetId);
        s = redis.PopItemWithLowestScoreFromSortedSet(sortSetId);
    
    }

    Hash

    hash一般用来存储我们的对象模型

    using (redis)
    {
        string hashId = "hashId";
    
        bool isSucc = redis.SetEntryInHash(hashId, "Hello", "world");
        for (int i = 0; i < 10; i++)
        {
            redis.SetEntryInHash(hashId, i.ToString(), i.ToString());
        }
    
        long count = redis.GetHashCount(hashId);
        List<string> ids = redis.GetHashKeys(hashId);
        ids = redis.GetHashValues(hashId);
    
        isSucc = redis.HashContainsEntry(hashId, "Hello");
        string s = redis.GetValueFromHash(hashId, "Hello");
        ids = redis.GetValuesFromHash(hashId, "1", "2", "3");
    
        isSucc = redis.RemoveEntryFromHash(hashId, "Hello");
        long afterInc = redis.IncrementValueInHash(hashId, "1", 2);
    
        var newStringMap = new Dictionary<string, string> {
            {"1","e"}, {"2","f"}, {"3","g"}};
    
        redis.SetRangeInHash(hashId, newStringMap);
    }

    总计

    string,list, set, sortset, hash是redis的五种类型,这里只是简单的记录其基本操作

  • 相关阅读:
    [POI2014]FarmCraft
    [POI2014]Solar Panels
    Luogu P2824 [HEOI2016/TJOI2016]排序
    CF903G Yet Another Maxflow Problem
    CF901C Bipartite Segments
    CF749E Inversions After Shuffle
    ARC068C Snuke Line
    BZOJ3747 [POI2015]Kinoman
    SA-IS
    简单字符串
  • 原文地址:https://www.cnblogs.com/julyluo/p/6709798.html
Copyright © 2011-2022 走看看