Redis list 存储的操作方法

前俩篇,介绍了string与hashes,本章介绍list的操作方法

首先我们使用redis-cli进入redis

[[email protected] ~]# redis-cli 
127.0.0.1:6379>

1、添加或插入

a>lpush

方法:lpush key value

描述:从头压入一个元素

127.0.0.1:6379> lpush list1 one
(integer) 1
127.0.0.1:6379> lpush list1 two
(integer) 2
127.0.0.1:6379> lpush list1 three
(integer) 3
127.0.0.1:6379> lrange list1 0 -1
1) "three"
2) "two"
3) "one"

b>lpushx

方法:pushx key value

描述:只有当key存在,才会从表头插入一个元素,否则不会插入

127.0.0.1:6379> lrange list1 0 -1
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> lpushx list1 hello
(integer) 4
127.0.0.1:6379> lrange list1 0 -1
1) "hello"
2) "three"
3) "two"
4) "one"

d>rpush

方法:rpush key value

描述:从尾压入一个元素

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

e>rpushx

方法:rpush key value

描述:只有当key存在,才会从尾插入一个元素,否则不会插入

127.0.0.1:6379> lrange list4 0 -1
1) "one"
2) "two"
3) "three"
127.0.0.1:6379> rpushx list4 hello
(integer) 4
127.0.0.1:6379> lrange list4 0 -1
1) "one"
2) "two"
3) "three"
4) "hello"

f>linsert

方法:linsert before|after pivot value

描述:before插入pivot前,after插入pivot后

127.0.0.1:6379> lrange list5 0 -1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> linsert list5 before 3 hello            \\使用before插入3的前面hello
(integer) 6
127.0.0.1:6379> lrange list5 0 -1
1) "1"
2) "2"
3) "hello"
4) "3"
5) "4"
6) "5"

127.0.0.1:6379> linsert list5 after 3 hello        \\使用after插入3的后面hello

(integer) 7

127.0.0.1:6379> lrange list5 0 -1

1) "1"

2) "2"

3) "hello"

4) "3"

5) "hello"

6) "4"

7) "5"

2、查看

a>lindex

方法: lindex key index

描述: 以index下标查看key的value

127.0.0.1:6379> lrange list5 0 -1
1) "1"
2) "2"
3) "hello"
4) "3"
5) "hello"
6) "4"
7) "5"
127.0.0.1:6379> lindex list5 0
"1"
127.0.0.1:6379> lindex list5 1
"2"
127.0.0.1:6379> lindex list5 2
"hello"
127.0.0.1:6379> lindex list5 3
"3"
127.0.0.1:6379> lindex list5 4
"hello"
127.0.0.1:6379> lindex list5 5
"4"
127.0.0.1:6379> lindex list5 6
"5"
127.0.0.1:6379> lindex list5 7
(nil)

b>lrange

方法:lrange key start end

127.0.0.1:6379> lrange list5 0 -1
1) "1"
2) "2"
3) "hello"
4) "3"
5) "hello"
6) "4"
7) "5"
127.0.0.1:6379> lrange list5 0 4
1) "1"
2) "2"
3) "hello"
4) "3"
5) "hello"
127.0.0.1:6379> lrange list5 0 3
1) "1"
2) "2"
3) "hello"
4) "3"

c>llen

方法:llen key

描述:查看key元素的个数

127.0.0.1:6379> llen list9
(integer) 5
127.0.0.1:6379> lrange list9 0 -1
1) "0"
2) "1"
3) "2"
4) "3"
5) "4"
127.0.0.1:6379> llen list8
(integer) 0
127.0.0.1:6379> lrange list8 0 -1
(empty list or set)

3、修改

a>lset

方法:lset key index value

描述:如果key的index下标有值则修改,否则报错

127.0.0.1:6379> lrange list5 0 -1
1) "1"
2) "2"
3) "hello"
4) "3"
5) "hello"
6) "4"
7) "5"
127.0.0.1:6379> lset list5 3 three
OK
127.0.0.1:6379> lrange list5 0 -1
1) "1"
2) "2"
3) "hello"
4) "three"
5) "hello"
6) "4"
7) "5"
127.0.0.1:6379> lset list5 10 three
(error) ERR index out of range
127.0.0.1:6379> lrange list5 0 -1
1) "1"
2) "2"
3) "hello"
4) "three"
5) "hello"
6) "4"
7) "5"

4、删除

a>ltrim

方法:ltrim key start end

描述:保留指定key下标start end 范围的value

127.0.0.1:6379> lrange list5 0 -1
1) "1"
2) "2"
3) "hello"
4) "three"
5) "hello"
6) "4"
7) "5"
127.0.0.1:6379> ltrim list5 2 6
OK
127.0.0.1:6379> lrange list5 0 -1
1) "hello"
2) "three"
3) "hello"
4) "4"
5) "5"

b>lrem

方法:lrem key count value

描述:删除指定count的value元素,并返回count,如果value的count为0,从表头开始删除所有等于value,如果count<0则从尾开始删除count个数

127.0.0.1:6379> lpush list6 6 6 6 6 6 7 6 6 6 6 6 6 
(integer) 12
127.0.0.1:6379> lrange list6 0 -1
 1) "6"
 2) "6"
 3) "6"
 4) "6"
 5) "6"
 6) "6"
 7) "7"
 8) "6"
 9) "6"
10) "6"
11) "6"
12) "6"
127.0.0.1:6379> lrem list6 3 6            \\删除3个value等于6的,该删除是从表头开始
(integer) 3
127.0.0.1:6379> lrange list6 0 -1
1) "6"
2) "6"
3) "6"
4) "7"
5) "6"
6) "6"
7) "6"
8) "6"
9) "6"
127.0.0.1:6379> lrem list6 -3 6            \\删除3个value等于6的,该删除是从表尾开始
(integer) 3
127.0.0.1:6379> lrange list6 0 -1
1) "6"
2) "6"
3) "6"
4) "7"
5) "6"
6) "6"

c>rpop

方法:rpop key

描述:从尾移除并返回值

127.0.0.1:6379> lrange list6 0 -1
1) "6"
2) "6"
3) "6"
4) "7"
5) "6"
6) "6"
127.0.0.1:6379> rpop list6
"6"
127.0.0.1:6379> lrange list6 0 -1
1) "6"
2) "6"
3) "6"
4) "7"
5) "6"

d>lpop

方法:lpop key

描述:从头移除并返回值

127.0.0.1:6379> lpop list6
"6"
127.0.0.1:6379> lrange list6 0 -1
1) "6"
2) "6"
3) "7"
4) "6"

e>rpoplpush

方法:rpoplpush key1 key2

描述:从key1尾移除一个value压入到key2头

127.0.0.1:6379> rpush list8 1 2
(integer) 2
127.0.0.1:6379> rpush list9 3 4
(integer) 2
127.0.0.1:6379> lrange list8 0 -1
1) "1"
2) "2"
127.0.0.1:6379> lrange list9 0 -1
1) "3"
2) "4"
127.0.0.1:6379> rpoplpush list8 list9
"2"
127.0.0.1:6379> lrange list8 0 -1
1) "1"
127.0.0.1:6379> lrange list9 0 -1
1) "2"
2) "3"
3) "4"

f>blpop

方法:blpop key [key...] timeout

描述:从key头取出,第一个元素,如果没有值则执行timeout设定的阻塞时长,期间如果有值则立马取出

127.0.0.1:6379> lpush list8 1 2
(integer) 2
127.0.0.1:6379> blpop list8 20
1) "list8"
2) "2"
127.0.0.1:6379> blpop list8 20
1) "list8"
2) "1"
127.0.0.1:6379> blpop list8 20            \\在另外一台执行127.0.0.1:6379> lpush list8 3 在20秒的timeout期间,有元素压入,则立马取出并显示值
1) "list8"
2) "3"
(2.69s)

g>brpop

方法:blpop key [key...] timeout

描述:从key尾取出,第一个元素,如果没有值则执行timeout设定的阻塞时长,期间如果有值则立马取出

127.0.0.1:6379> lrange list8 0 -1
1) "2"
2) "1"
127.0.0.1:6379> brpop list8 20
1) "list8"
2) "1"
127.0.0.1:6379> brpop list8 20
1) "list8"
2) "2"
127.0.0.1:6379> brpop list8 20         \\在另外一台执行127.0.0.1:6379> rpush list8 3 在20秒的timeout期间,有元素压入,则立马取出并显示值
1) "list8"
2) "3"
(3.34s)

h>brpoplpush

方法:brpoplpush key1 key2 timeout

描述:从key1尾移除一个value压入到key2,如果没有执行timeout设定的阻塞时长,期间如果有值则立马取出。

127.0.0.1:6379> rpush list8 1 2
(integer) 2
127.0.0.1:6379> rpush list9 3 4
(integer) 2
127.0.0.1:6379> lrange list8 0 -1
1) "1"
2) "2"
127.0.0.1:6379> lrange list9 0 -1
1) "3"
2) "4"
127.0.0.1:6379> brpoplpush list8 list9 20
"2"
127.0.0.1:6379> brpoplpush list8 list9 20
"1"
127.0.0.1:6379> brpoplpush list8 list9 20            \\在另外一台执行127.0.0.1:6379> rpush list8 0 在20秒的timeout期间,有元素压入,则立马取出并显示值
"0"
(2.70s)

至此Redis list就介绍完毕la

欢迎大家关注 459479177QQ群

时间: 2024-10-11 01:48:24

Redis list 存储的操作方法的相关文章

Redis hashes存储的操作方法

上篇我们讲到string的操作方法,其实hashes与其类似,只不过命令格式不同而已. 使用redis-cli进入redis: [[email protected] ~]# redis-cli 127.0.0.1:6379> 1.添加 a>hset 方法:hset key filed value 描述:与set一样,不存在增加,否则更新返回1表示新的filed,0表示filed已存在并用new value覆盖old value 127.0.0.1:6379> hset user:0001

Redis String存储的操作方法

通过上篇No SQL Redis安装,我们的Redis服务就已经跑起来来了,接下来我们来进行String的操作, [[email protected] ~]# netstat -tunlp| grep redis tcp        0      0 0.0.0.0:6379                0.0.0.0:*                   LISTEN      13135/redis-server   tcp        0      0 :::6379       

Redis数据存储解决方案

1.背景1.1 Redis简介 官方网站:http://redis.io/,Redis是REmote DIctionary Server的缩写. Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作由VMware主持.它跟 memcached 类似,不过数据可以持久化,而且支持的数据类型很丰富.它在保持键值数据库简单快捷特点的同时,又吸收了部分关系数据库的优点.从而

Ubuntu上使用Redis数据库存储SessionID并实现Session共享

p { margin-bottom: 0.1in; direction: ltr; color: #00000a; line-height: 120%; text-align: left; orphans: 2; widows: 2 } p.western { font-family: "Liberation Serif", serif; font-size: 12pt } p.cjk { font-family: "Noto Sans CJK SC Regular"

Redis数据存储优化机制(转)

原文:Redis学习笔记4--Redis数据存储优化机制 1.zipmap优化hash: 前面谈到将一个对象存储在hash类型中会占用更少的内存,并且可以更方便的存取整个对象.省内存的原因是新建一个hash对象时开始是用zipmap来存储的.这个zipmap其实并不是hash table,但是zipmap相比正常的hash实现可以节省不少hash本身需要的一些元数据存储开销.尽管zipmap的添加,删除,查找都是O(n),但是由于一般对象的field数量都不太多.所以使用zipmap也是很快的,

Redis内存存储结构分析

五竹,20110418 Redis: A persistent key-value database with built-in net interface written in ANSI-C for Posix systems 1 Redis 内存存储结构 本文是基于 Redis-v2.2.4 版本进行分析. 1.1 Redis 内存存储总体结构 Redis 是支持多key-value数据库(表)的,并用 RedisDb 来表示一个key-value数据库(表). redisServer 中有

在Redis中存储了str的值是中文“我们”,而Shell下用get获取到的str的值为:\xe6\x88\x91\xe4\xbb\xac

问题描述:本地虚拟机Linux环境下,安装了redis,使用shell进行操作.我在redis中存储了是str的值是中文"我们",但当我在shell下get获取到的str的值是:\xe6\x88\x91\xe4\xbb\xac. 如图: 解决方法:只需要你在启动redis-cli时在其后面加上--raw参数即可启动后 再显示就正常了. 如图:

flask中的CBV , flask-session在redis中存储session , WTForms数据验证 , 偏函数 , 对象里的一些小知识

flask中的CBV , flask-session在redis中存储session , WTForms数据验证 , 偏函数 , 对象里的一些小知识 flask中的CBV写法 后端代码 # 导入views from flask import Flask, render_template, views, request app = Flask(__name__) # CBV写法 class Login(views.MethodView):       # 定义一个类,不用装饰器,继承了Method

Redis系列-存储篇sorted set主要操作命令

Redis系列-存储篇sorted set主要操作函数小结 redis支持有序集合,即sorted set.sorted set在set的基础上,增加了排序属性,是set的升级版.这里简要谈谈sorted set的常用函数: 1)insert a)zadd 语法:zadd?key score member?[[score member] [score member] ...] 解释:增加一个或多个member[根据score排序]到有序集key中,如果member已经存在,只更新score.返回