现在位置首页 / 项目实战 /正文

Redis学习笔记 List类型及C#调用(一)

作者: 春暖花开 | 2014年11月18日| 热度:℃ | 评论: |参与:

String类型的命令与C#客户端调用的笔记已经写完了,不知道对大家有没有帮助。

从本篇开始,学习并记录 List 类型的命令及应用。


Redis学习笔记  各篇幅目录,热乎乎出炉,欢迎点击


1、

 lpush key value [ value...]

   将一个或多个值 value 插入到列表 key 的表头
   key不存在,创建key并执行 lpush 操作。 如果操作的key 不是 list 类型,返回错误。
   返回值:列表的长度。
 
示例:

   lpush keylist "list1" "list2" "list3"  // "list3" "list2" "list1"
   lpush keylist "list4"
   lrange keylist 0 -1  // "list4" "list3" "list2" "list1"

 如图: 3-1-1

图 3-1-1


C#:

// 方法:
        public long LPush(string listId, byte[] value);  //追加单条
        public long LPush(string listId, byte[][] values);  //追加多条


//实现: 代码在 demo 的 lpush_lpushx_rpush_rpushx() 中

 using (RedisClient redisClient = new RedisClient("127.0.0.1", 6379, null, 1))
            {
                var key = "keylistlpush_C#";
                if (redisClient.ContainsKey(key)) redisClient.Del(key); //先删掉这个key
                byte[][] byteArrArr = new byte[][] { 
Encoding.UTF8.GetBytes("list1 from Client LPush"), 
Encoding.UTF8.GetBytes("list2 from Client LPush"), 
Encoding.UTF8.GetBytes("list3 from Client LPush") };
                redisClient.LPush(key, byteArrArr); //给 key 赋值,从现有值左侧追加。
                var returnByteArr = redisClient.LRange(key, 0, -1);
                /*值:  list3 from Client LPush 
                        list2 from Client LPush
                        list1 from Client LPush */
}



2、 

 lpushx key value

将一个value 添加到 list 的头部。
key 必须已经存在,并且是list 类型。
返回值: 返回添加后的list 长度。

示例:
 

   lpushx keylist_lpushx "value" //"keylist_lpushx" 不存在,所以添加失败。
    
    lpush keylist_lpushx "exist value" //创建key, 并赋值
    lpushx keylist_lpushx "lpushx value" //追加完毕
    lrange keylist_lpushx 0 -1  //

如图: 3-1-2

图: 3-1-2


C#:

//实现
        public long LPushX(string listId, byte[] value);
//方法
 using (RedisClient redisClient = new RedisClient("127.0.0.1", 6379, null, 1))
            {
                key = "keylistlpushx_C#";  //lpushx
                if (redisClient.ContainsKey(key)) redisClient.Del(key); //先删掉这个key
                redisClient.LPush(key, Encoding.UTF8.GetBytes("list1 from Client LPush"));  //先添加一条记录,作参照。
                redisClient.LPushX(key, Encoding.UTF8.GetBytes("C# client LpushX")); //给 key 赋值,从现有值左侧追加。
                returnByteArr = redisClient.LRange(key, 0, -1);
                /*值    C# client LpushX
                        list1 from Client LPush */
    }


3、 

 rpush key value [ value...]  //请参考 lpush,与之相反。

   将一个或多个值 value 插入到列表 key 的末尾
   key不存在,创建key并执行 lpush 操作。 如果操作的key 不是 list 类型,返回错误。
   返回值:列表的长度。

示例:

rpush keylistrpush "rpush value1" "rpush vlaue2"  //值:  rpush value1       rpush value2

如图:3-1-3

图:3-1-3


C#:

//方法:        
        public long RPush(string listId, byte[] value);        public long RPush(string listId, byte[][] values);
//实现:
 using (RedisClient redisClient = new RedisClient("127.0.0.1", 6379, null, 1))
            {
                key = "keylistrpush_C#";  //rpush
                if (redisClient.ContainsKey(key)) redisClient.Del(key); //先删掉这个key
                byteArrArr = new byte[][] { 
                Encoding.UTF8.GetBytes("list1 from Client [R]Push"), 
                Encoding.UTF8.GetBytes("list2 from Client RPush"), 
                Encoding.UTF8.GetBytes("list3 from Client RPush")  };
                redisClient.RPush(key, byteArrArr); //给 key 赋值,从现有值右侧追加。
                returnByteArr = redisClient.LRange(key, 0, -1);
    }


4、

 rpushx key value


将一个value 添加到 list 的尾部。
key 必须已经存在,并且是list 类型。
返回值: 返回添加后的list 长度。


 示例:

    rpushx keylist_rpushx "value noexist"  //  不存在,所以添加失败。
 
    rpush keylist_rpushx "exist value" //创建key, 并赋值
    rpushx keylist_rpushx "rpushx value" //追加完毕
    lrange keylist_rpushx 0 -1  //

如图:3-1-4

图:3-1-4


  C#:

  //方法:
     public long RPushX(string listId, byte[] value);

 

//实现:
 using (RedisClient redisClient = new RedisClient("127.0.0.1", 6379, null, 1))
            {
                key = "keylistrpushx_C#";  //rpushx
                if (redisClient.ContainsKey(key)) redisClient.Del(key); //先删掉这个key
                redisClient.RPush(key, Encoding.UTF8.GetBytes("list1 from Client RPush"));  //先添加一条记录,作参照。
                redisClient.RPushX(key, Encoding.UTF8.GetBytes("C# client RpushX")); //给 key 赋值,从现有值右侧追加。
                returnByteArr = redisClient.LRange(key, 0, -1);
                /*值    list1 from Client RPush
                        "C# client RpushX */
    }


5、

lindex key index

返回下标为 index 的元素。 index 从0开始。 -1表示最后一个,-2 表示倒数第二个。
key不是列表类型,返回一个错误。
返回值:下标为 index 的元素 or <nil>

示例:

lpush keylistlindex "World" "Hello"  
lindex keylistlindex 0 //Hello
lindex keylistlindex 1 //World
lindex keylistlindex -1 //World
lindex keylistlindex 100 //<nil>

如图: 3-1-5

图: 3-1-5


C#:

//方法:
        public byte[] LIndex(string listId, int listIndex);
//实现:
  using (RedisClient redisClient = new RedisClient("127.0.0.1", 6379, null, 1))
            {
                //lindex
                string key = "keylistLindex_C#";
                if (redisClient.ContainsKey(key)) redisClient.Del(key); //先删掉这个key
                redisClient.RPush(key, new byte[][] { 
                    Encoding.UTF8.GetBytes("Hello"), 
                    Encoding.UTF8.GetBytes("World") });
                string str0 = Encoding.UTF8.GetString(redisClient.LIndex(key, 0));  //Hello
                string str1 = Encoding.UTF8.GetString(redisClient.LIndex(key, 1));  //World
}


6、

 linsert key BEFORE|AFTER pivot value

将值 value 插入到列表 key 当中,位于值 pivot 之前或之后。
当 pivot 不存在于列表 key 时,不执行任何操作。
当 key 不存在时, key 被视为空列表,不执行任何操作。
如果 key 不是列表类型,返回一个错误。
有重复值,以第一个值为基准。

示例:

   rpush keylistlinsert "AAA" "BBB" "CCC" "DDD" "CCC" //创建key ,并填充值
   linsert keylistlinsert before "CCC" "XXX"  //在值为第一个“CCC”的前面追加“XXX”
   lrange keylistlinsert 0 -1  //显示

如图:3-1-6 

图:3-1-6


C#:

//方法
        public void LInsert(string listId, bool insertBefore, byte[] pivot, byte[] value);
//实现
  using (RedisClient redisClient = new RedisClient("127.0.0.1", 6379, null, 1))
            {
                key = "keylistLinsert_C#";
                if (redisClient.ContainsKey(key)) redisClient.Del(key); //先删掉这个key
                redisClient.RPush(key, new byte[][] { 
                    Encoding.UTF8.GetBytes("AAA"), 
                    Encoding.UTF8.GetBytes("BBB"),
                    Encoding.UTF8.GetBytes("CCC"),
                    Encoding.UTF8.GetBytes("DDD"),
                    Encoding.UTF8.GetBytes("CCC")
                });
                redisClient.LInsert(key, true, Encoding.UTF8.GetBytes("CCC"), Encoding.UTF8.GetBytes("XXX"));
  }

-------------------------------

完成C# Demo下载 :http://pan.baidu.com/s/1sjEzbEP


点击阅读本文所属分类的更多文章: 项目实战 。和高手一起交流:346717337

未注明转发、原文均为本站原创。分享本文请注明 原文链接

给您更多信息和帮助

在这里您可以找到更多:

技术交流群:346717337 Jquery插件交流

投稿:suchso@vip.qq.com

承接:企业网站门户/微网站/微商城/CMS系统/微信公众号运营/业务咨询

echarts教程系列
本月最热文章

微信扫一扫,徜徉悠嘻网,您的休闲乐园

微信公众号:快乐每一天

随机文章
标签

技术交流群:346717337

投稿:suchso@vip.qq.com

专业专注:企业网站门户/微网站/微商城/CMS系统/微信公众号运营/付费问题咨询