• 结合redis 的List数据结构特性扩展 栈与队列


     1        RedisClient client = new RedisClient("IP",6379);
     2         //用于清空整个 Redis 服务器的数据(删除所有数据库的所有 key )。
     3             client.FlushAll();
     4         //向redis添加数据
     5     
     6        /*
     7             * list是一个链表结构,主要功能是push,pop,获取一个范围的所有的值等,操作中key理解为链表名字。
     8             * Redis的list类型其实就是一个每个子元素都是string类型的双向链表。我们可以通过push,pop操作从链表的头部或者尾部添加删除元素,
     9             * 这样list既可以作为栈,又可以作为队列。Redis list的实现为一个双向链表,即可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销,
    10             * Redis内部的很多实现,包括发送缓冲队列等也都是用的这个数据结构
    11             */
    12             //队列
    13             //入队
    14             client.EnqueueItemOnList("QueueListId", "1.小米");
    15             client.EnqueueItemOnList("QueueListId", "2.小喵");
    16             client.EnqueueItemOnList("QueueListId", "3.小王");
    17             client.EnqueueItemOnList("QueueListId", "4.小李");
    18             int q = client.GetListCount("QueueListId");
    19             for (int i = 0; i < q; i++)
    20             {
    21                 Console.WriteLine($"QueueListId出队值=:{client.DequeueItemFromList("QueueListId")}");//出队(队列:先进先出)
    22             }
    23             //24             //入栈
    25             client.PushItemToList("StackListId", "1");
    26             client.PushItemToList("StackListId", "2");
    27             client.PushItemToList("StackListId", "3");
    28             client.PushItemToList("StackListId", "4");
    29             int p = client.GetListCount("StackListId");
    30             for (int i = 0; i < p; i++)
    31             {
    32                 Console.WriteLine($"StackListId出栈值=:{client.PopItemFromList("StackListId")}");//出栈(栈:先进后出)
    33             }
     RedisClient client = new RedisClient("172.20.10.9",6379);
    //用于清空整个 Redis 服务器的数据(删除所有数据库的所有 key )。
                client.FlushAll();
    //向redis添加数据
        
    /*
                * list是一个链表结构,主要功能是push,pop,获取一个范围的所有的值等,操作中key理解为链表名字。
                * Redis的list类型其实就是一个每个子元素都是string类型的双向链表。我们可以通过push,pop操作从链表的头部或者尾部添加删除元素,
                * 这样list既可以作为栈,又可以作为队列。Redis list的实现为一个双向链表,即可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销,
                * Redis内部的很多实现,包括发送缓冲队列等也都是用的这个数据结构
                */
                //队列
                //入队
                client.EnqueueItemOnList("QueueListId", "1.张三");
                client.EnqueueItemOnList("QueueListId", "2.李四");
                client.EnqueueItemOnList("QueueListId", "3.张三");
                client.EnqueueItemOnList("QueueListId", "4.张三");
                int q = client.GetListCount("QueueListId");
                for (int i = 0; i < q; i++)
                {
                    Console.WriteLine($"QueueListId出队值:{client.DequeueItemFromList("QueueListId")}");//出队(队列:先进先出)
                }
                //栈
                //入栈
                client.PushItemToList("StackListId", "1");
                client.PushItemToList("StackListId", "2");
                client.PushItemToList("StackListId", "3");
                client.PushItemToList("StackListId", "4");
                int p = client.GetListCount("StackListId");
                for (int i = 0; i < p; i++)
                {
                    Console.WriteLine($"StackListId出栈值:{client.PopItemFromList("StackListId")}");//出栈(栈:先进后出)
                }
    怕什么真理无穷,进一寸有一寸的欢喜!
  • 相关阅读:
    UNIT THREE
    UNIT TWO
    UNIT ONE
    实验九 根据材料编程
    实验五 编写、调试具有多个段的程序
    实验 四 [bx]和loop的使用
    实验二 用机器指令和汇编指令编程
    实验三 编程、编译、连接、跟踪
    实验一 查看CPU和内存,用机器指令和汇编指令编程
    汇编语言第5~8章知识总结
  • 原文地址:https://www.cnblogs.com/wyk96/p/13991667.html
Copyright © 2020-2023  润新知