四、Redis基础命令--列表

1、列表类型内部是使用双向链表(double linked list)实现的,所以想两端添加元素特快,时间复杂度是O(1),获取越接近两端的元素速度越快。不过代价是通过索引访问元素的速度会比较慢。

2、每个键最多能容纳的字段数量与列表相同都是 2^32 - 1 个元素。内部用来存储字段数量的变量类型应该是Integer,因为一个整形是4个字节,每个字节8位,刚好32位,最大数字就是 2^32-1 个(包括0)。

2.1、索引是从0开始

3、LPUSH key value 在队列的左边添加元素,返回队列元素的长度。

127.0.0.1:6379> lpush list 123

(integer) 3

127.0.0.1:6379> lpush list 123

(integer) 4

一次性添加多个元素

127.0.0.1:6379> LPUSH list 11 12 13

4、LRANGE key start end 返回队列中[start ,end] 之间的元素,和素组一样从0开始,包含end位。

如果start > end 则返回空列表

127.0.0.1:6379> LRANGE list 3  2

(empty list or set)

如果end > LLEN key 则返回所有列表

127.0.0.1:6379> LLEN list

(integer) 4

127.0.0.1:6379> LRANGE list 0 8

1) "4"

2) "3"

3) "2"

4) "1"

如果end=-1  LRANGE key 0 -1 返回所有列表

127.0.0.1:6379> LRANGE list 0 -1

1) "4"

2) "3"

3) "2"

4) "1"

倒序取数据,start end 都小于0

127.0.0.1:6379> LRANGE list 0 -1

1) "7"

2) "6"

3) "5"

4) "4"

5) "3"

6) "2"

7) "1"

127.0.0.1:6379> LRANGE list -1 -1

1) "1"

127.0.0.1:6379> LRANGE list -2 -1

1) "2"

2) "1"

5、LLEN key 获取列表的长度

127.0.0.1:6379> LLEN list

(integer) 4

6、RPUSH key value 在队列的右边添加元素,返回元素长度

127.0.0.1:6379> RPUSH list -1

(integer) 5

127.0.0.1:6379> LRANGE list 0 -1

1) "4"

2) "3"

3) "2"

4) "1"

5) "-1"

7、LPOP/RPOP 弹出左/右边的元素

127.0.0.1:6379> LPOP list

"4"

127.0.0.1:6379> LRANGE list 0 -1

1) "3"

2) "2"

3) "1"

4) "-1"

127.0.0.1:6379> RPOP list

"-1"

127.0.0.1:6379> LRANGE list 0 -1

1) "3"

2) "2"

3) "1"

8、LREM key count value 删除 count 个值为value的元素

当count > 0 从左边删除count个值value的元素

当count<0  从右边删除 |count|  个值value的元素

当count = 0 删除所有值为 value 的元素

127.0.0.1:6379> LRANGE list 0 -1

1) "1"

2) "1"

3) "1"

4) "1"

5) "1"

6) "3"

7) "2"

127.0.0.1:6379> LREM list 0 1

(integer) 5

127.0.0.1:6379> LRANGE list 0 -1

1) "3"

2) "2"

9、LSET key index value 在索引index处添加值value

127.0.0.1:6379> LRANGE list 0 -1

1) "13"

2) "12"

3) "11"

4) "7"

5) "6"

6) "5"

7) "4"

8) "3"

9) "2"

10) "1"

127.0.0.1:6379> LSET list  3 8 9 10 不能同时设置多个值

(error) ERR wrong number of arguments for ‘lset‘ command

127.0.0.1:6379> LSET list  3 8

OK

127.0.0.1:6379> LRANGE list 0 -1

1) "13"

2) "12"

3) "11"

4) "8"

5) "6"

6) "5"

7) "4"

8) "3"

9) "2"

10) "1"

10、LINDEX list 0根据索引获取值

127.0.0.1:6379> LINDEX list 0

"13"

12、LTRIM key start end 移掉除(start,end)之外的数据。保留[start,end]数据,包括start,end

127.0.0.1:6379> LRANGE list 0 -1

1) "5"

2) "4"

3) "3"

4) "2"

5) "1"

127.0.0.1:6379> LTRIM list 1 3

OK

127.0.0.1:6379> LRANGE list 0 -1

1) "4"

2) "3"

3) "2"

13、LINSET key BEFORE | AFTER pivot value 插入数据

127.0.0.1:6379> LRANGE list 0 -1

1) "4"

2) "3"

3) "2"

127.0.0.1:6379> LINSERT list before 4 5

(integer) 4

127.0.0.1:6379> LRANGE list 0 -1

1) "5"

2) "4"

3) "3"

4) "2"

127.0.0.1:6379> LINSERT list after 2 0

(integer) 5

127.0.0.1:6379> LRANGE list 0 -1

1) "5"

2) "4"

3) "3"

4) "2"

5) "0"

如果有多个相同的pivot,则从左边数第一个开始

127.0.0.1:6379> LRANGE list 0 -1

1) "4"

2) "5"

3) "4"

4) "3"

5) "2"

6) "0"

127.0.0.1:6379> LINSERT list after 4 3

(integer) 7

127.0.0.1:6379> LRANGE list 0 -1

1) "4"

2) "3"

3) "5"

4) "4"

5) "3"

6) "2"

7) "0"

BEFORE 也是从左边第一个开始

127.0.0.1:6379> LINSERT list Before 3 9

(integer) 8

127.0.0.1:6379> LRANGE list 0 -1

1) "4"

2) "9"

3) "3"

4) "5"

5) "4"

6) "3"

7) "2"

8) "0"

14、RPOPLPUSH source destination --列表类型,将元素从一个列表转移到另一个列表

从source右边弹出一个元素,再LPUSH到destination进去

RPOPLPUSH source destination

内部实现:

def rpoplpush( source , destination)

value = RPOP source

LPUSH destination value

return value

15、汇总

A、列表可以作为栈使用,LPUSH/LPOP 或者 RPUSH/RPOP

B、作为list使用,LPUSH/RPOP 或者 RPUSH/LPOP

时间: 2025-01-05 18:38:51

四、Redis基础命令--列表的相关文章

七、Redis 基础命令---任务队列

1.优势:松耦合 易于扩展 ,消费者可以扩展多个,分布在不同的服务器中 2.LPUSH RPOP 3.BRPOP命令和RPOP相似,唯一区别:当列表中没有元素时,BRPOP命令会一直阻塞住链接,知道有新元素加入 4.BRPOP key timeout timeout 等于0 表示不限制等待时间(单位是秒),如果没有元素会一直阻塞下去.如:BRPOP list 0 5.BRPOP key 1 阻塞1秒,取出数据.返回值是一个数组,第一个元素是键名,第二个元素是 值value.如果没有数据,返回ni

一、Redis 基础命令---总括

1.redis命令不区分大写和小写.可是KEY区分大写和小写. 2.redis-cli -h 127.0.0.1 -p 6379 依据IP/PORT链接服务端 3.redis-server --port 6380  --port參数设置服务端端口号 4.參数设置 A.redis-server redis.conf    启动时载入配置文件设置參数 B.redis-server redis.conf --loglevel waring  通过启动參数覆盖配置文件里同名的參数值 C.执行时更新參数值

windows下使用redis,Redis入门使用,Redis基础命令

一.Redis的使用 REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统. Redis 优势 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s . 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作. 原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作

Redis 基础命令

redis的常用命令主要分为两个方面.一个是键值相关命令.一个是服务器相关命令 1.键值相关命令 keys * 取出当前所有的key exists name 查看n是否有name这个key del name 删除key name expire confirm 100 设置confirm这个key100秒过期 ttl confirm 获取confirm 这个key的有效时长 select 0 选择到0数据库 redis默认的数据库是0~15一共16个数据库 move confirm 1 将当前数据

redis 基础命令系列

推荐博客: Redis在linux上的安装: http://www.open-open.com/lib/view/open1426468117367.html Redis的三种启动方式: http://futeng.iteye.com/blog/2071867 Redis学习手册(目录): http://www.cnblogs.com/stephen-liu74/archive/2012/04/16/2370212.html Redis 命令参考: http://redisdoc.com/#re

五、Redis 基础命令---无序集合

1.集合中的每个元素都是唯一的,没有顺序的. 2.集合与列表的对比 集合 列表 存储内容 最多 2^32-1个字符串 最多 2^32-1个字符串 有序性 无序 有序 唯一性 唯一 不唯一 3.集合内部使用的是值为空的散列表实现,所以向集合中插入.删除.判断元素是否存在操作的时间复杂度都是O(1) 4.SADD key member1 member2...添加元素,可以同时添加多个 127.0.0.1:6379> SADD setA 1 2 3 4 (integer) 4 5.SMEMBERS k

六、Redis 基础命令--有序集合

1.有序集合是由散列表和跳跃表实现的,所以即使元素再多,获取中间的元素速度也很快. 2.有序集合为集合中的每个元素都关联了一个分数. 3.有序集合与列表的对比 相同点: 都是有序的,都可以获取某一个范围的元素 不同点: 1.列表是采用双向链表实现的,所以获取接近两端的数据很快,获取中间数据会很慢. 2.有序集合则采用的是散列表和跳跃表(百度好理解) 3.列表中不能调整某个元素的位置,但是集合可以,通过更改分数. 4.有序集合更耗费内存 4.ZADD 添加元素,返回新添加的个数 (不含已经有的)

八、Redis 基础命令---管理--持久化--RDB

1.Redis 支持两种方式的持久化,一种是RDB , 一种是AOF .可用单独使用也可以二者结合使用. 2.RDB A.RDB方式是Redis默认采用的持久化方式,通过快照(snapshotting)完成的.当符合一定条件时Redis会自动将内存中的所有数据进行快照并存储在整个硬盘上.进行快照的条件:时间和改动的键的个数.当在指定的时间内被更改的键的个数大于指定的数值时就会进行快照. B.配置文件中已经预先设置了3个条件: save 900 1 save 300 10 save 60 1000

Redis基础命令

redis本身不区分命令的大小写,这里一律用小写,以下是部分简单的命令. 1.keys (...)获取所有的键信息,如果数据量大了,会影响性能,输出的时候只会输出键名,前面有序号前缀,参数支持正则. 127.0.0.1:6379> keys f* 1) "fo" 2) "f" 127.0.0.1:6379> keys * 1) "test" 2) "fo" 3) "f" 2.exists (..