结合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")}");//出栈(栈:先进后出)
            }
posted @ 2020-11-16 22:35  大琨  阅读(242)  评论(0)    收藏  举报