在Redis中,List类型是按照插入顺序排序的字符串链表。和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新的元素。在插入时,如果该键并不存在,Redis将为该键创建一个新的链表。与此相反,如果链表中所有的元素均被移除,那么该键也将会被从数据库中删除。List中可以包含的最大元素数量是4294967295。
      从元素插入和删除的效率视角来看,如果我们是在链表的两头插入或删除元素,这将会是非常高效的操作,即使链表中已经存储了百万条记录,该操作也可以在常量时间内完成。然而需要说明的是,如果元素插入或删除操作是作用于链表中间,那将会是非常低效的。相信对于有良好数据结构基础的开发者而言,这一点并不难理解。

1、LPUSH key value1 [value2]

在列表头(左)加上一个或多个值的列表

127.0.0.1:> lpush mylist a b c
(integer)
127.0.0.1:> lrange mylist -
) "c"
) "b"
) "a"

LPUSH 就是在左边插入,插入 a b c 就是先 a -> b a -> c b a 。

2、RPUSH key value1 [value2]

在列表尾(右)加上一个或多个值的列表

127.0.0.1:> rpush mylist a b c
(integer)
127.0.0.1:> lrange mylist -
) "a"
) "b"
) "c"

RPUSH 就是在右边插入,插入 a b c 就是先 a -> a b -> a b c

3、LPOP key

获取并取出列表中的第一个元素(左边第一个)

127.0.0.1:> rpush mylist a b c
(integer)
127.0.0.1:> lrange mylist -
) "a"
) "b"
) "c"
127.0.0.1:> lpop mylist
"a"
127.0.0.1:> lpop mylist
"b"
127.0.0.1:> lpop mylist
"c"

4、RPOP key

取出并获取列表中的最后一个元素(右边第一个)

127.0.0.1:> rpush mylist a b c
(integer)
127.0.0.1:> lrange mylist -
) "a"
) "b"
) "c"
127.0.0.1:> rpop mylist
"c"
127.0.0.1:> rpop mylist
"b"
127.0.0.1:> rpop mylist
"a"

5、LLEN key

获取列表的长度

127.0.0.1:6379> lrange mylist 0 -1
1) "a"
2) "b"
3) "c"
127.0.0.1:6379> llen mylist
(integer) 3
127.0.0.1:6379> rpush mylist d
(integer) 4
127.0.0.1:6379> llen mylist
(integer) 4

6、LRANGE key start stop 

从一个列表获取元素,其中start/stop都是下标,并且都可以是负数,比如-1表示倒数第一个,-2表示倒数第二个。

127.0.0.1:> rpush mylist a b c
(integer)
127.0.0.1:> lrange mylist -
) "a"
) "b"
) "c"

7、LTRIM key start stop

修剪列表到指定的范围内

127.0.0.1:6379> lrange mylist 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
127.0.0.1:6379> ltrim mylist 1 -1
OK
127.0.0.1:6379> lrange mylist 0 -1
1) "b"
2) "c"
3) "d"

这里的 start/stop 也是下标,也可以是负数。

8、LREM key count value

根据参数 COUNT 的值,移除列表中与参数 VALUE 相等的元素。

COUNT 的值可以是以下几种:

  • count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。
  • count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。
  • count = 0 : 移除表中所有与 VALUE 相等的值。
127.0.0.1:6379> lrange mylist 0 -1
1) "a"
2) "b"
3) "c"
4) "a"
5) "a"
6) "d"
7) "e"
127.0.0.1:6379> lrem mylist 2 a
(integer) 2
127.0.0.1:6379> lrange mylist 0 -1
1) "b"
2) "c"
3) "a"
4) "d"
5) "e"

上面的命令指示:在 mylist 列表,从左到右扫描,移除两个与 'a' 相等的值。

6、LINSERT key BEFORE|AFTER pivot value

在列表中的其他元素之后或之前插入一个元素

127.0.0.1:6379> rpush list1 foo
(integer) 1
127.0.0.1:6379> rpush list1 bar
(integer) 2
127.0.0.1:6379> linsert list1 before bar yes
(integer) 3
127.0.0.1:6379> lrange list1 0 -1
1) "foo"
2) "yes"
3) "bar"

8、LINDEX key index

从一个列表其索引获取对应的元素

127.0.0.1:6379> lrange mylist 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
127.0.0.1:6379> lindex mylist 0
"a"
127.0.0.1:6379> lindex mylist 3
"d"

9、LSET key index value

在列表中的索引设置一个元素的值

127.0.0.1:6379> lrange mylist 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
127.0.0.1:6379> lset mylist 0 aa
OK
127.0.0.1:6379> lrange mylist 0 -1
1) "aa"
2) "b"
3) "c"
4) "d"

====================== 我是罪恶的分割线 ======================

RPOPLPUSH source destination

删除最后一个元素的列表,将其附加到另一个列表并返回它

BRPOPLPUSH source destination timeout

从列表中弹出一个值,它推到另一个列表并返回它;或阻塞,直到有可用

BLPOP key1 [key2] timeout

取出并获取列表中的第一个元素,或阻塞,直到有可用

BRPOP key1 [key2] timeout

取出并获取列表中的最后一个元素,或阻塞,直到有可用

LPUSHX key value

在前面加上一个值列表,仅当列表中存在

4.Redis常用命令:List的更多相关文章

  1. Redis常用命令

    Redis常用命令Redis提供了丰富的命令对数据库和各种数据类型进行操作,这些命令可以再Linux终端使用.1.键值相关命令2.服务器相关命令 一.键值相关命令 1.get get 键值 当 key ...

  2. 第2讲 Redis常用命令与高级应用

    目录 一.redis数据类型 5. sorted sets类型和操作 二.Redis常用命令 1.键值相关命令 2.服务器相关命令 三. redis高级应用 1. 给redis服务器设置密码 2.持久 ...

  3. Redis常用命令手册:服务器相关命令

    Redis提供了丰富的命令(command)对数据库和各种数据类型进行操作,这些command可以在Linux终端使用.在编程时,比如各类语言包,这些命令都有对应的方法.下面将Redis提供的命令做一 ...

  4. redis redis常用命令及内存分析总结(附RedisClient工具简介

    redis常用命令及内存分析总结(附RedisClient工具简介 by:授客 QQ:1033553122 redis-cli工具 查看帮助 连接redis数据库 常用命令 exists key se ...

  5. Redis常用命令与高级应用

    附: 127.0.0.1:6379> set xiaofei 小飞 OK 127.0.0.1:6379> get xiaofei "\xe5\xb0\x8f\xe9\xa3\x9 ...

  6. Redis快速起步及Redis常用命令大全

    本系列教程内容提要 Java工程师之Redis实战系列教程教程是一个学习教程,是关于Java工程师的Redis知识的实战系列教程,本系列教程均以解决特定问题为目标,使用Redis快速解决在实际生产中的 ...

  7. redis配置密码 redis常用命令

    redis配置密码 1.通过配置文件进行配置yum方式安装的redis配置文件通常在/etc/redis.conf中,打开配置文件找到 [plain] view plain copy   #requi ...

  8. redis常用命令及持久化机制

    redis  常用命令 查找redis服务文件 find / -name  redis-server 查找配置文件 find / -name redis.conf 启动服务时候,要指定配置文件 启动r ...

  9. Redis 常用命令 大全

    Redis 常用命令 发现几个很好的 Redis 常用命令汇总大全网页,分享给小伙伴们~ 1.Redis 命令参考 http://redisdoc.com/string/index.html 2.W3 ...

  10. No-sql之redis常用命令

    转自:http://blog.csdn.net/nicewuranran/article/details/51793760 No-SQL之Redis 介绍 Redis是一种基于内存存储的key-val ...

随机推荐

  1. 剑指offer编程题Java实现——面试题6重建二叉树

    题目: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2, ...

  2. Activiti工作流(二)之常用操作

    前面介绍了Activiti工作流的基本操作,但是在实际应用过程中,往往不满足项目需求,因此还需要了解一些其他的功能比如:连线.排他网关.并行网管.流程变量.个人任务及组任务的三种发布方式. 下面将介绍 ...

  3. GitHub客户端Desktop的安装和使用总结

    前言 这段时间想把我写的东西上传到GitHub上,所以开始收集资料学习,走了很多弯路( msysgit和极慢的FQ网速让我欲仙欲死),最后找到了比较好用的工具GitHub Desktop.在此做出自己 ...

  4. 【openstack N版】——可视化服务horizon

    一. openstack可视化服务horizon 1.1dashboard介绍 仪表盘依赖于功能核心服务,包括身份,图像服务,计算和网络两种(neutron)或传统网络(nova-neutron)与独 ...

  5. ASP.NET MVC 使用Uploadify实现多文件异步无刷新上传

    软件技术开发,合作请联系QQ:858-048-581 这里我通过使用uploadify组件来实现异步无刷新多文件上传功能. 1.首先下载组件包uploadify,我这里使用的版本是3.1 2.下载后解 ...

  6. gstunnel---一个网络安全管道

    项目简介: gstunnel 是 基于go 语言开发的一个安全网络管道,支持tcp协议. gstunnel分为client和server两部分. gstunnel 基于aes进行数据加密. 流程示意: ...

  7. angular : direative : scope | 指令scope里的符号@,=

    先看看以下的代码 <body ng-app="app" ng-controller="ctrl"> <dir myname="nam ...

  8. Redis 安装与初体验

    一.Redis简介 Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(s ...

  9. UI设计学习路线图

    文章转载自「开发者圆桌」一个关于开发者入门.进阶.踩坑的微信公众号 这里整理的UI设计学习路线图包含初中高三个部分,你可以通过百度云盘下载观看对应的视频 链接: http://pan.baidu.co ...

  10. 1755: [Usaco2005 qua]Bank Interest

    1755: [Usaco2005 qua]Bank Interest Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 187  Solved: 162[Su ...