Redis's List is different from C#'s List,but similar with C#'s LinkedList.Sometimes I confuse with them.I expect

that you won't mix them and have a clear mind of them.

  There are 17 commands we can use in List.

  

  Push and pop are the base opreation of the linkediist,either as Redis's List.When we want to store the

list, lpush and rpush can help us to save the data.Both of them can save one or more values to the key.Now

I add element 11 to the key named list-1,then add element 12 and 13 to this key.Here're the commands and result.

lpush list-
lpush list-

  The code demonstrated above push the element from left to the right.As all we know,linkedlist has anonther

way to push the elements.rpush is the another way.For example,I push the same elements to the key named list-2.

Taking the following code and result.

rpush list-
rpush list-

  By using those two commands to store the data,we don't know the Difference between them apparently.But when

you select all of the elements,you will find out something.Using lrange can make us know the elements in the list.

lrange list-  -

lrange list-  - 

  The next picture explain the result clearly.You can combine the linkedlist's feature to think about the result.

  We also can insert an element before or after another element.Redis provides a command for us.For an instance,

I insert 90 before 12 on list-1 ,and insert 80 after 12.You will get the following result.

linsert list- before
linsert list- after

  Sometimes we may want to know how many elements in the list?Just as the length of a string.We use llen to

get the length of the list.

llen list- 

  We also can get the elements by their own index in the list.
lindex list- 

  We also can modify the elements by their index.
lset list-  

  The next time I will show you how to remove the elements from the list.There are three commands can help

us to remove elements.

  lpop will remove the leftmost element from the list.And the client will return the removed element.

lpop list-

  rpop will remove the rightmost element from the list.And the client will return the removed element as well.

rpop list-

  lrem will remove the count occurrences of elements equal to value.If count > 0,it will remove elements moving

from head to tail.If count < 0,it will remove elements moving from tail to head.If count = 0,it will remove all elements

equal to value.

lrem list-  
 
  The following code demonastrates the basic usage of List in StackExchange.Redis.
              //lpush
db.ListLeftPush("list-1", );
var list_1 = new RedisValue[] { ,};
db.ListLeftPush("list-1", list_1);
Console.WriteLine("after lpush:");
foreach (var item in db.ListRange("list-1"))
{
Console.Write(item+" ");
}
Console.WriteLine("");
//rpush
db.ListRightPush("list-2", );
var list_2 = new RedisValue[] { , };
db.ListRightPush("list-2", list_1);
Console.WriteLine("after rpush:");
foreach (var item in db.ListRange("list-2"))
{
Console.Write(item + " ");
}
Console.WriteLine("");
//linsert
db.ListInsertBefore("list-1",,);
Console.WriteLine("after linsert 90 before 12:");
foreach (var item in db.ListRange("list-1"))
{
Console.Write(item + " ");
}
db.ListInsertAfter("list-1", , );
Console.WriteLine("\nafter linsert 80 after 12:");
foreach (var item in db.ListRange("list-1"))
{
Console.Write(item + " ");
}
Console.WriteLine("");
//llen
Console.WriteLine(string.Format("the length of list-1 is {0}",db.ListLength("list-1")));
//lindex
Console.WriteLine(string.Format("the element in the second index is {0}", db.ListGetByIndex("list-1",)));
//lset
db.ListSetByIndex("list-1", , );
Console.WriteLine("after lset 66 from index 2:");
foreach (var item in db.ListRange("list-1"))
{
Console.Write(item + " ");
}
Console.WriteLine("");
//lpop
Console.WriteLine(string.Format("lpop element {0}", db.ListLeftPop("list-1")) );
//rpop
Console.WriteLine(string.Format("rpop element {0}", db.ListRightPop("list-1")));
//lrem
db.ListRemove("list-1", ,);
Console.WriteLine("after remove:");
foreach (var item in db.ListRange("list-1"))
{
Console.Write(item + " ");
}
  When you debug the codes,the results are as follow.

  

  The next post of this series is the basic opreation of publish and subscribe in Redis.Thanks for your reading

Basic Tutorials of Redis(6) - List的更多相关文章

  1. Basic Tutorials of Redis(9) -First Edition RedisHelper

    After learning the basic opreation of Redis,we should take some time to summarize the usage. And I w ...

  2. Basic Tutorials of Redis(2) - String

    This post is mainly about how to use the commands to handle the Strings of Redis.And I will show you ...

  3. Basic Tutorials of Redis(8) -Transaction

    Data play an important part in our project,how can we ensure correctness of the data and prevent the ...

  4. Basic Tutorials of Redis(7) -Publish and Subscribe

    This post is mainly about the publishment and subscription in Redis.I think you may subscribe some o ...

  5. Basic Tutorials of Redis(5) - Sorted Set

    The last post is mainly about the unsorted set,in this post I will show you the sorted set playing a ...

  6. Basic Tutorials of Redis(4) -Set

    This post will introduce you to some usages of Set in Redis.The Set is a unordered set,it means that ...

  7. Basic Tutorials of Redis(3) -Hash

    When you first saw the name of Hash,what do you think?HashSet,HashTable or other data structs of C#? ...

  8. Basic Tutorials of Redis(1) - Install And Configure Redis

    Nowaday, Redis became more and more popular , many projects use it in the cache module and the store ...

  9. 【转】Redis入门

    Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的Web应用程序的完美解决方案. Redis从它的许多竞争继承来的三个主要特点: Redis数据库完全在内存中,使用磁盘仅用 ...

随机推荐

  1. javascript中的事件冒泡和事件捕获

    1.事件冒泡 IE 的事件流叫做事件冒泡(event bubbling),即事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播到较为不具体的节点(文档).以下面的HTML ...

  2. const extern static 终极指南

    const extern static 终极指南 不管是从事哪种语言的开发工作,const extern static 这三个关键字的用法和原理都是我们必须明白的.本文将对此做出非常详细的讲解. co ...

  3. LoadRunner函数百科叒叒叒更新了!

    首先要沉痛通知每周四固定栏目[学霸君]由于小编外派公干,本周暂停. 那么这周就由云层君来顶替了,当然要要说下自己做的内容啦,DuangDuang! <LoadRunner函数百科>更新通知 ...

  4. .NET中AOP方便之神SheepAspect

    SheepAspect 简介以及代码示列: SheepAspect是一个AOP框架为.NET平台,深受AspectJ.它静织目标组件作为一个编译后的任务(编译时把AOP代码植入). 多有特性时,可根据 ...

  5. 张小龙宣布微信小程序1月9日发布,并回答了大家最关心的8个问题

    2016 年 12 月 28 日,张小龙在微信公开课 PRO 版的会场上,宣布了微信小程序的正式发布时间. 微信小程序将于 2017 年 1 月 9 号正式上线. 同时他解释称,小程序就像PC时代的网 ...

  6. 如何使用dos命令查看MySQL当前使用的数据库?

    1.dos命令安装mysqld --stall.启动net start mysql.进入MySQL数据库mysql -uroot -p后,输入select database(); 如图:

  7. Vim使用

    模式 ESC\Ctrl+c:退出编辑模式 ZZ\wq:命令模式下保存退出 编辑 i:进入编辑模式 I:转到行首非空字符开始编辑 s:删除当前字符进入编辑模式 a:从当前字符后开始编辑 A:从当前行末非 ...

  8. 使用Jenkins配置Git+Maven的自动化构建

    Jenkins是一个开源的持续集成工具,应用Jenkins搭建持续集成环境,可以进行自动构建.自动编译和部署,非常方便. 在服务器比较少的情况下,Jenkins的优势并不明显,但是随着项目发展,服务器 ...

  9. Struts的拦截器

    Struts的拦截器 1.什么是拦截器 Struts的拦截器和Servlet过滤器类似,在执行Action的execute方法之前,Struts会首先执行Struts.xml中引用的拦截器,在执行完所 ...

  10. 【Web动画】CSS3 3D 行星运转 && 浏览器渲染原理

    承接上一篇:[CSS3进阶]酷炫的3D旋转透视 . 最近入坑 Web 动画,所以把自己的学习过程记录一下分享给大家. CSS3 3D 行星运转 demo 页面请戳:Demo.(建议使用Chrome打开 ...