`
bigboy
  • 浏览: 167882 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Redis lists操作

阅读更多

list 是一个链表结构,主要功能是push、pop、获取一个范围的所有值等等,操作中key理

解为链表的名字。 

 

Redis的list 类型其实就是一个每个子元素都是string类型的双向链表。链表的最大长度是(2

的32次方)。我们可以通过push,pop操作从链表的头部或者尾部添加删除元素。这使得list

既可以用作栈,也可以用作队列。 

 

有意思的是list 的pop操作还有阻塞版本的,当我们[lr]pop一个list 对象时,如果list 是空,

或者不存在,会立即返回nil。但是阻塞版本的b[lr]pop可以则可以阻塞,当然可以加超时时

间,超时后也会返回nil。为什么要阻塞版本的pop呢,主要是为了避免轮询。举个简单的

例子如果我们用list 来实现一个工作队列。执行任务的thread可以调用阻塞版本的pop去获

取任务这样就可以避免轮询去检查是否有任务存在。当任务来时候工作线程可以立即返回,

也可以避免轮询带来的延迟。

redis 127.0.0.1:6379> lpush mylist "world" 从头部往list中添加数据

(integer) 1

redis 127.0.0.1:6379> lpush mylist "hello"

(integer) 2

redis 127.0.0.1:6379> lrange mylist 0 -1 获取list中的全部数据

1) "hello"

2) "world"

redis 127.0.0.1:6379> rpush mylist2 "hello" 从尾部往list中添加数据

(integer) 1

redis 127.0.0.1:6379> rpush mylist2 "world"

(integer) 2

redis 127.0.0.1:6379> lrange mylist2 0 -1

1) "hello"

2) "world"

redis 127.0.0.1:6379> rpush mylist3 hello

(integer) 1

redis 127.0.0.1:6379> rpush mylist3 world

(integer) 2

redis 127.0.0.1:6379> linsert mylist3 before world there 往list中指定位置插入数据

(integer) 3

redis 127.0.0.1:6379> lrange mylist3 0 -1

1) "hello"

2) "there"

3) "world"

redis 127.0.0.1:6379> rpush mylist4 one

(integer) 1

redis 127.0.0.1:6379> rpush mylist4 two

(integer) 2

redis 127.0.0.1:6379> rpush mylist4 three

(integer) 3

redis 127.0.0.1:6379> lset mylist4 0 four 根据下标索引往list中插入数据

OK

redis 127.0.0.1:6379> lset mylist4 -2 five

OK

redis 127.0.0.1:6379> lrange mylist4 0 -1

1) "four"

2) "five"

3) "three"

redis 127.0.0.1:6379> rpush mylist5 hello

(integer) 1

redis 127.0.0.1:6379> rpush mylist5 hello

(integer) 2

redis 127.0.0.1:6379> rpush mylist5 foo

(integer) 3

redis 127.0.0.1:6379> rpush mylist5 hello

(integer) 4

redis 127.0.0.1:6379> lrem mylist5 2 hello 删除list中重复个数的数据,当个数大于0从头部删除,小于0从尾部删除,等于0删除全部,返回删除的个数

(integer) 2

redis 127.0.0.1:6379> lrange mylist5 0 -1

1) "foo"

2) "hello"

redis 127.0.0.1:6379> rpush mylist6 hello

(integer) 1

redis 127.0.0.1:6379> rpush mylist6 hello

(integer) 2

redis 127.0.0.1:6379> rpush mylist6 foo

(integer) 3

redis 127.0.0.1:6379> rpush mylist hello

(integer) 3

redis 127.0.0.1:6379> lrem mylist6 -1 hello

(integer) 1

redis 127.0.0.1:6379> lrange mylist6 0 -1

1) "hello"

2) "foo"

redis 127.0.0.1:6379> lrem mylist6 0 hello

(integer) 1

redis 127.0.0.1:6379> lrange mylist6 0 -1

1) "foo"

redis 127.0.0.1:6379> rpush mylist7 one

(integer) 1

redis 127.0.0.1:6379> rpush mylist7 two

(integer) 2

redis 127.0.0.1:6379> rpush mylist7 three

(integer) 3

redis 127.0.0.1:6379> rpush mylist7 four

(integer) 4

redis 127.0.0.1:6379> ltrim mylist7 1 -1  更具指定下标截取list中部分的数据

OK

redis 127.0.0.1:6379> lrange mylist7 0 -1

1) "two"

2) "three"

3) "four"

redis 127.0.0.1:6379> lrange mylist 0 -1

1) "hello"

2) "world"

3) "hello"

redis 127.0.0.1:6379> lpop mylist 从头部删除一个数据

"hello"

redis 127.0.0.1:6379> lrange mylist 0 -1

1) "world"

2) "hello"

redis 127.0.0.1:6379> lpop mylist

"world"

redis 127.0.0.1:6379> lrange mylist 0 -1

1) "hello"

redis 127.0.0.1:6379> lpush mylist peng

(integer) 2

redis 127.0.0.1:6379> lpush mylist di

(integer) 3

redis 127.0.0.1:6379> lrange mylist 0 -1

1) "di"

2) "peng"

3) "hello"

redis 127.0.0.1:6379> rpop mylist 从尾部删除一个数据

"hello"

redis 127.0.0.1:6379> lrange mylist 0 -1

1) "di"

2) "peng"

redis 127.0.0.1:6379> lrange mylist1 0 -1

(empty list or set)

redis 127.0.0.1:6379> lrange mylist2 0 -1

1) "hello"

2) "world"

redis 127.0.0.1:6379> rpoplpush mylist mylist2 将list1中的数据从尾部删除,头部新增到list2中

"peng"

redis 127.0.0.1:6379> lrange mylist2 0 -1

1) "peng"

2) "hello"

3) "world"

redis 127.0.0.1:6379> lrange mylist 0 -1

1) "di"

redis 127.0.0.1:6379> lindex mylist5 0 获得指定下标的值

"foo"

redis 127.0.0.1:6379> llen mylist5 获得list的长度

(integer) 2

分享到:
评论

相关推荐

    redis桌面链接工具redis-desktop

    支持多种数据类型的操作,包括字符串(Strings)、哈希表(Hashes)、列表(Lists)、集合(Sets)、有序集合(Sorted Sets)等 执行Lua脚本以及监控Redis的性能 导出和导入Redis的数据 多数据库切换与浏览 实时更新...

    Redis Essentials

    We start off by explaining the basics of Redis followed by the various data types such as Strings, hashes, lists, and more. Next, Common pitfalls for various scenarios are described, followed by ...

    Redis-7.0.12-Windows-x64

    丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多...

    redis安装包3.0

    丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多...

    分布式缓存技术Redis在C#中的使用

    Redis的键值可以包括字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)和 有序集合(sorted sets)等数据类型。 对于这些数据类型,你可以执行原子操作。例如:对字符串进行附加操作(append);递增...

    redis-2.2.2 (源码)

    redis是一个key-value存储系统。和Memcached类似,它支持...redis的几种使用方式 Strings、Hashs、Lists、Sets、Sorted Sets、Pub/Sub、Transactions redis是NoSQL的一个代表作. 在少量数据存储,高速读写访问有优势.

    redis6.0.9.rar

    它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。...

    redis可视化工具、免费.中文

    redis可视化工具、中文版、完全...丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

    redis获取命令字典的方法及全部的group命令.txt

    Redis命令十分丰富,包括的命令组有Cluster、Connection、Geo、Hashes、HyperLogLog、Keys、Lists、Pub/Sub、Scripting、Server、Sets、Sorted Sets、Strings、Transactions一共14个redis命令组两百多个redis命令。...

    redis-5.0.5.tar.gz

    丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。...

    redis-2.4.7

    Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志...Redis支持诸如列表、集合或有序集合的交集、并集、查集等高级原子操作;同时,如果键值的类型是普通数字,Redis则提供自增等原子操作。

    windows版redis4

    它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。...

    java大数据内容_8Redis、Thrift、Hadoop2

    1 Redis安装、命令行及开发 ...Redis的键值可以包括字符串(strings)类型,同时它还包括哈希(hashes)、列表(lists)、集合(sets)和有序集合(sorted sets)等数据类型。对于这些数据类型,你可以执行原子操作。

    redis-3.0.1 和 RedisDesktopManager win-64 版本

    它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。...

    redis-6.0.3-win64.7z

    It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes with radius queries and streams. Redis has built-in ...

    Redis在C#中的使用

    Redis的键值可以包括字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)和 有序集合(sorted sets)等数据类型。 对于这些数据类型,你可以执行原子操作。例如:对字符串进行附加操作(append);递增...

    redis基础资料

    Redis的键值可以包括字符串(strings)类型,同时它还包括哈希(hashes)、列表(lists)、集合(sets)和 有序集合(sorted sets)等数据类型。 对于这些数据类型,你可以执行原子操作。例如:对字符串进行附加操作...

    Redis基础.md

    # Redis基础 ## 数据类型 ### strings * `set key value`和`get key`,注意set操作会覆盖已有的key/value,若不希望覆盖可使用`set key value nx` * `mset key1 value1 key2 value2 ...`和`mget key1 key2 ...`...

    linux下redis-4.0.14.zip下载

    Redis 安装1、Redis的数据类型: 字符串、列表(lists)、集合(sets)、有序集合(sorts sets)、哈希表(hashs)2、Redis和memcache相比的独特之处: (1)redis可以用来做存储(storge)、而memcache是来做缓存...

    redis可视化工具安装包.7z

    丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多...

Global site tag (gtag.js) - Google Analytics