天道酬勤

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的五种类型,这里只是简单的记录其基本操作

 

posted @   JulyLuo  阅读(1053)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示