zoukankan      html  css  js  c++  java
  • 基于.Net Core的Redis:基本数据类型及其应用场景与命令行操作

    参考自:https://blog.csdn.net/only_yu_yy/article/details/78873735

    https://blog.csdn.net/fenghuoliuxing990124/article/details/84983694


    1、使用的Redis客户端为:ServiceStack.Redis
    打开“程序包管理器控制台”,输入并执行“Install-Package ServiceStack.Redis”即可。

    2、Redis基本数据类型:String
    String类型是最常用的数据类型,在Redis中以KKey/Value存储。

     1 using ServiceStack.Redis;
     2 using System;
     3 using System.Collections.Generic;
     4 using System.Text;
     5 
     6 namespace RedisDemo
     7 {
     8     class StringDemo
     9     {
    10         public static void Start()
    11         {
    12             var redisMangement = new RedisManagerPool("127.0.0.1:6379");
    13             var client = redisMangement.GetClient();
    14 
    15             //---字符串---
    16             //set key value
    17             //summary: Set the string value of a key
    18             client.Set<int>("pwd", 111);
    19             //get key
    20             //summary: Get the value of a key
    21             int pwd = client.Get<int>("pwd");
    22             Console.WriteLine(pwd);
    23 
    24             //---对象---
    25             var todos = client.As<Todo>();
    26             Todo todo = new Todo
    27             {
    28                 Id = todos.GetNextSequence(),
    29                 Content = "String Demo",
    30                 Order = 1
    31             };
    32             client.Set<Todo>("todo", todo);
    33             var getTodo = client.Get<Todo>("todo");
    34             Console.WriteLine(getTodo.Content);
    35         }
    36     }
    37 }
    View Code

    String的应用场景

    计数器:许多运用都会使用redis作为计数的基础工具,他可以实现快速计数、查询缓存的功能。

    比如:优酷视频的播放:incr video:videoId:playTimes

    或者:文章浏览量:incr article:aricleId:clickTimes

    或者粉丝数量:取关 decr author:authorId:fansNumber

     3、Redis基本数据类型:Hash
    Hash在Redis采用 (HashId,Key,Value)进行存储,一个HashId 可以包含多个key,一个key对应着一个value。

     1 using ServiceStack.Redis;
     2 using System;
     3 using System.Collections.Generic;
     4 using System.Text;
     5 
     6 namespace RedisDemo
     7 {
     8     class HashDemo
     9     {
    10         public static void Start()
    11         {
    12             var redisMangement = new RedisManagerPool("127.0.0.1:6379");
    13             var client = redisMangement.GetClient();
    14 
    15             //HSET key field value
    16             //summary: Set the string value of a hash field
    17             client.SetEntryInHash("test", "name", "ermao");
    18             client.SetEntryInHash("test", "age", "26");
    19 
    20             //---获取test哈希下的所有key---
    21             //HKEYS key
    22             //summary: Get all the fields in a hash
    23             List<string> hashKeys = client.GetHashKeys("test");
    24             Console.WriteLine("keys in test");
    25             foreach (var item in hashKeys)
    26             {
    27                 Console.WriteLine(item);
    28             }
    29 
    30             //---获取test哈希下的所有值---
    31             //HVALS key
    32             //summary: Get all the values in a hash
    33             List<string> hashValues = client.GetHashValues("test");
    34             Console.WriteLine("values in test");
    35             foreach (var item in hashValues)
    36             {
    37                 Console.WriteLine(item);
    38             }
    39 
    40             //---获取test哈希下,第一个Key对应的值---
    41             //HGET key field
    42             //summary: Get the value of a hash field
    43             string value = client.GetValueFromHash("test", hashKeys[0]);
    44             Console.WriteLine($"test下的key{hashKeys[0]}对应的值{value}");
    45         }
    46     }
    47 }
    View Code

    Hash的应用场景

    商品详情页

    4、Redis基本数据类型:List
    list是一个链表结构,key可以理解为链表的名字,然后往这个名字所对应的链表里加值。,list可以以队列 / 栈的形式进行工作。

     1 using ServiceStack.Redis;
     2 using System;
     3 using System.Collections.Generic;
     4 using System.Text;
     5 
     6 namespace RedisDemo
     7 {
     8     class ListDemo
     9     {
    10         public static void Start()
    11         {
    12             var redisMangement = new RedisManagerPool("127.0.0.1:6379");
    13             var client = redisMangement.GetClient();
    14 
    15             //---队列的使用(先进先出)---
    16             client.EnqueueItemOnList("name", "zhangsan");
    17             client.EnqueueItemOnList("name", "lisi");
    18             long count = client.GetListCount("name");
    19             for (int i = 0; i < count; i++)
    20             {
    21                 Console.WriteLine(client.DequeueItemFromList("name"));
    22             }
    23 
    24             //---栈的使用(先进后出)---
    25             client.PushItemToList("course", "Math");
    26             client.PushItemToList("course", "English");
    27             long count2 = client.GetListCount("course");
    28             for (int i = 0; i < count2; i++)
    29             {
    30                 Console.WriteLine(client.PopItemFromList("course"));
    31             }
    32         }
    33     }
    34 }
    View Code

    List的应用场景

    点赞:
    创建一条微博内容:set user:1:post:91 “hello redis”;
    点赞:
    lpush post:91:good “kobe.png”
    lpush post:91:good “jordan.png”
    lpush post:91:good “James.png”
    查看有多少人点赞:llen post:91:good
    查看有哪些人点赞:lrange post:91:good 0 -1

     5、Redis基本数据类型:Set
    它是去重、无序集合。set是通过hash table实现的,添加,删除和查找,对集合我们可以取并集,交集,差集。

     1 using ServiceStack.Redis;
     2 using System;
     3 using System.Collections.Generic;
     4 using System.Text;
     5 
     6 namespace RedisDemo
     7 {
     8     class SetDemo
     9     {
    10         public static void Start()
    11         {
    12             var redisMangement = new RedisManagerPool("127.0.0.1:6379");
    13             var client = redisMangement.GetClient();
    14 
    15             //SADD key member [member ...]
    16             //summary: Add one or more members to a set
    17             client.AddItemToSet("s1", "abc");
    18             client.AddItemToSet("s1", "qwer");
    19             client.AddItemToSet("s1", "asdf");
    20             client.AddItemToSet("s1", "hjkl");
    21             client.AddItemToSet("s1", "zxc");
    22             //SMEMBERS key
    23             //summary: Get all the members in a set
    24             HashSet<string> hashSet = client.GetAllItemsFromSet("s1");
    25             foreach (var item in hashSet)
    26             {
    27                 Console.WriteLine(item);
    28             }
    29 
    30             client.AddItemToSet("s2", "qwer");
    31             client.AddItemToSet("s2", "wasd");
    32 
    33             //SUNION key [key ...]
    34             //summary: Add multiple sets
    35             HashSet<string> hashSetUnion = client.GetUnionFromSets(new string[] { "s1", "s2" });
    36             Console.WriteLine("---并集---");
    37             foreach (var item in hashSetUnion)
    38             {
    39                 Console.WriteLine(item);
    40             }
    41 
    42             //SINTER key [key ...]
    43             //summary: Intersect multiple sets
    44             HashSet<string> hashSetInter = client.GetIntersectFromSets(new string[] { "s1", "s2" });
    45             Console.WriteLine("---交集---");
    46             foreach (var item in hashSetInter)
    47             {
    48                 Console.WriteLine(item);
    49             }
    50 
    51             //SDIFF key [key ...]
    52             //summary: Subtract multiple sets
    53             HashSet<string> hashSetDifference = client.GetDifferencesFromSet("s1", new string[] { "s2" });
    54             Console.WriteLine("---差集---");
    55             foreach (var item in hashSetDifference)
    56             {
    57                 Console.WriteLine(item);
    58             }
    59         }
    60     }
    61 }
    View Code

    Set的应用场景

    随机事件(如:抽奖)、共同好友、推荐好友等

    6、Redis基本数据类型:SortedSet
    set是一种非常方便的结构,但是数据无序,redis提供了一个sorted set,每一个添加的值都有一个对应的分数,放进去的值按照该分数升序存在一个集合中,可以通过这个分数进行相关排序的操作。

     1 using ServiceStack.Redis;
     2 using System;
     3 using System.Collections.Generic;
     4 using System.Text;
     5 
     6 namespace RedisDemo
     7 {
     8     class SortedSetDemo
     9     {
    10         public static void Start()
    11         {
    12             var redisMangement = new RedisManagerPool("127.0.0.1:6379");
    13             var client = redisMangement.GetClient();
    14 
    15             //ZADD key [NX|XX] [CH] [INCR] score member [score member ...]
    16             //summary: Add one or more members to a sorted set, or update its score if it already exists
    17             client.AddItemToSortedSet("grade", "Chinese", 82);
    18             client.AddItemToSortedSet("grade", "Math", 96);
    19             client.AddItemToSortedSet("grade", "English", 91);
    20             client.AddItemToSortedSet("grade", "History", 97);
    21             //ZREVRANGE key start stop [WITHSCORES]
    22             //summary: Return a range of members in a sorted set, by index, with scores ordered from high to low
    23             List<string> sortedList = client.GetAllItemsFromSortedSetDesc("grade");
    24             foreach (var item in sortedList)
    25             {
    26                 Console.WriteLine(item);
    27             }
    28         }
    29     }
    30 }
    View Code

    SortedSet的应用场景

    排行榜(如:微博热搜排行榜)

  • 相关阅读:
    实现系统托盘
    MDI窗体应用
    C#窗体的常用设置
    什么是UWP应用
    关于用js写缓动 动画
    关于tab栏切换的解析
    函数
    for循环
    if语句
    js
  • 原文地址:https://www.cnblogs.com/Er-mao/p/13371025.html
Copyright © 2011-2022 走看看