一  lists类型及操作

List是一个链表结构,主要功能是push,pop,获取一个范围的所有值等等,操作中key理解为链表的名字。 Redis的list类型其实就是一个每个子元素都是sring类型的双向链表。我们可以通过push,pop操作从链表的头部或者尾部添加删除元素,这样 list既可以作为栈,有可以作为队列。

二 lists类型的使用

1. lpush

在key对应list的头部添加字符串。

redis 127.0.0.1:> lpush mylist1 world
(integer)
redis 127.0.0.1:> lpush mylist1 hello
(integer)
redis 127.0.0.1:> lrange mylist1 -
) "hello"
) "world"

2. rpush

在key对应list的尾部添加字符串。

redis 127.0.0.1:6379> rpush mylist2 bbb
(integer) 1
redis 127.0.0.1:6379> rpush mylist2 aaa
(integer) 2
redis 127.0.0.1:6379> lrange mylist2 0 -1
1) "bbb"
2) "aaa"

3. linsert

在key对应的list的特定位置前或后添加字符串。

redis 127.0.0.1:6379> rpush mylist3 world
(integer) 1
redis 127.0.0.1:6379> linsert mylist3 before world hello
(integer) 2
redis 127.0.0.1:6379> lrange mylist3 0 -1
1) "hello"
2) "world"

4. lset

设置list中指定下标的元素值。

redis 127.0.0.1:> rpush mylist5 world
(integer)
redis 127.0.0.1:> lset mylist5 hello
OK
redis 127.0.0.1:> lrange mylist5 -
) "hello"

5 lrem

从key对应list中删除n个和value相同的元素。( n < 0 从未删除, n =0 全部删除)

redis 127.0.0.1:> rpush mylist6 hello
(integer)
redis 127.0.0.1:> rpush mylist6 hello
(integer)
redis 127.0.0.1:> lrem mylist6 hello
(integer)

6 ltrim

保留指定key 的范围内的数据。

redis 127.0.0.1:6379> rpush mylist8 one
(integer) 1
redis 127.0.0.1:6379> rpush mylist8 two
(integer) 2
redis 127.0.0.1:6379> ltrim mylist8 1 -1
OK
redis 127.0.0.1:6379> lrange mylist8 0 -1
1) "two"

7 lpop

从list的头部删除元素,并返回删除元素。

redis 127.0.0.1:6379> rpush mylist11 one
(integer) 1
redis 127.0.0.1:6379> rpush mylist11 two
(integer) 2
redis 127.0.0.1:6379> rpush mylist11 three
(integer) 3
redis 127.0.0.1:6379> lpop mylist11
"one"
redis 127.0.0.1:6379> lrange mylist11 0 -1
1) "two"
2) "three"

8.rpoplpush

从第一个list的尾部移出元素并添加到第二个list的头部。

redis 127.0.0.1:> rpush mylist12 one
(integer)
redis 127.0.0.1:> rpush mylist12 two
(integer)
redis 127.0.0.1:> rpush mylist13 aaa
(integer)
redis 127.0.0.1:> rpush mylist13 bbb
(integer)
redis 127.0.0.1:> rpush mylist13 ccc
(integer)
redis 127.0.0.1:> rpoplpush mylist12 mylist13
"two"
redis 127.0.0.1:> lrange mylist12 -
) "one"
redis 127.0.0.1:> lrange mylist13 -
) "two"
) "aaa"
) "bbb"
) "ccc"

9 lindex

返回名称为key的list中index位置的元素。

redis 127.0.0.1:6379> lrange mylist13 0 -1
1) "two"
2) "aaa"
3) "bbb"
4) "ccc"
redis 127.0.0.1:6379> lindex mylist13 0
"two"
redis 127.0.0.1:6379> lindex mylist13 1
"aaa"
redis 127.0.0.1:6379> lindex mylist13 2
"bbb"

10 llen

返回key对应list的长度。

redis 127.0.0.1:6379> llen mylist13
(integer) 4
redis 127.0.0.1:6379> lrange mylist13 0 -1
1) "two"
2) "aaa"
3) "bbb"
4) "ccc"

深入浅出Redis04使用Redis数据库(lists类型)的更多相关文章

  1. 深入浅出Redis02 使用Redis数据库(String类型)

    一 String类型 首先使用启动服务器进程 : redis-server.exe 1. Set 设置Key对应的值为String 类型的value. 例子:向 Redis数据库中插入一条数据类型为S ...

  2. 深入浅出Redis03 使用Redis数据库(hashes类型)

    一 hashes类型及操作 Redis hash是一个string类型的field和value的映射表.它的添加,删除操作都是0(1)(平均).hash特别适合用于存储对象,相较于对将对象的每个字段存 ...

  3. 使用Redis数据库(String类型)

    一 String类型 首先使用启动服务器进程 : redis-server.exe 1. Set 设置Key对应的值为String 类型的value. 例子:向 Redis数据库中插入一条数据类型为S ...

  4. redis的lists类型

    List是一个链表结构 , 主要功能是push . pop .获取一个范围的所有值等等 , 操作中key理解为链表的名字 . redis 的 list类型其实就是一个每个子元素都是string类型的双 ...

  5. 03_NoSQL数据库之Redis数据库:list类型

     lists类型及操作 List是一个链表结构,主要功能室push,pop.获取一个范围的所有值等等,操作中key理解为链表的名字.Redis的list类型其实就是一个每个元素都是string类型 ...

  6. Redis数据库

    Redis是k-v型数据库的典范,设计思想及数据结构实现都值得学习. 1.数据类型 value支持五种数据类型:1.字符串(strings)2.字符串列表(lists)3.字符串集合(sets)4.有 ...

  7. Redis 数据库入门指南

    Redis 是一个开源数据库,它使用内存数据结构存储,可作为数据库.缓存和消息代理使用.Redis 支持丰富的数据结构,有:字符串(Strings).哈希(Hashs).列表(Lists).集合(Se ...

  8. 超强、超详细Redis数据库入门教程

    这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下 [本教程目录] 1.redis是什么2.redis的作者何许人也3.谁在使用red ...

  9. Redis数据库入门教程

    [使用redis客户端] 我们直接看一个例子: 复制代码 代码如下: //这样来启动redis客户端了 $ ./redis-cli //用set指令来设置key.value 127.0.0.1:637 ...

随机推荐

  1. 构建Docker+Jenkins持续集成环境

    docker和Jenkins不是什么新东西了,两者结合也不是什么稀奇的事情,也已经有很多Jenkins和docker相结合的文章,此文仅为自己的一点心得实践,如有不对的地方,欢迎大家纠正. 先贴上大致 ...

  2. 一、IOS运行原理

    1.首先执行main函数 2.执行UIPaalicationMain函数 3.UIApplication函数内部 1>创建一个UIApplication实例.这个UIApplication对象是 ...

  3. BPM到底能做什么?K2为你解读

    和平镇,镇如其名,几百年来一直很和平,夜不闭户路不拾遗.可是这一年来,镇上金光寺的和尚却开始不断离奇死亡…… 衙门里新调来的李捕头正好负责这个案子,经过了几个月的不眠不休,现场侦查和缜密推理之后,一切 ...

  4. 记录使用gogs,drone搭建自动部署测试环境

    使用gogs,drone,docker搭建自动部署测试环境 Gogs是一个使用go语言开发的自助git服务,支持所有平台 Docker是使用go开发的开源容器引擎 Drone是一个基于容器技术的持续集 ...

  5. C++ List的用法(整理)

    转自http://blog.csdn.net/lskyne/article/details/10418823 Lists将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和 ...

  6. 深入理解abstract class和interface(转)

    原文地址 深入理解abstract class和interface java提高篇(四)-----抽象类与接口

  7. CSS 实现加载动画之一-菊花旋转

    最近打算整理几个动画样式,最常见的就是我们用到的加载动画.加载动画的效果处理的好,会给页面带来画龙点睛的作用,而使用户愿意去等待.而页面中最常用的做法是把动画做成gif格式,当做背景图或是img标签来 ...

  8. caffe windows学习:第一个测试程序

    caffe windows编译成功后,就可以开始进行测试了.如果还没有编译成功的,请参考:caffe windows 学习第一步:编译和安装(vs2012+win 64) 一般第一个测试都是建议对手写 ...

  9. GDB深入研究——20135308芦畅

    GDB深入研究 一.GDB代码调试 (一)GDB调试实例 在终端中编译一个示例C语言小程序,保存到文件 gdb-sample.c 中,用GCC编译之 #include <stdio.h> ...

  10. iOS开发UI篇—popoverController简单介绍(ipad)

    一.简单介绍 1.什么是UIPopoverController 是iPad开发中常见的一种控制器(在iPhone上不允许使用) 跟其他控制器不一样的是,它直接继承自NSObject,并非继承自UIVi ...