NoSQL----Redis 2.4--List

List:

头元素和尾元素:头元素指的是列表左端/前端第一个元素;尾元素指的是列表右端/后端第一个元素。

举个例子,列表list包含三个元素:x, y, z,其中x是头元素,而z则是尾元素。

空列表:指不包含任何元素的列表,Redis将不存在的key也视为空列表。

1、lpush(left push)方法:

LPUSH key value [value ...]

将一个或多个值value插入到列表key的表头。

如果有多个value值,那么各个value值按从左到右的顺序依次插入到表头:比如对一个空列表(mylist)执行LPUSH mylist a b c,则结果列表为c b a,

等同于执行命令

LPUSH mylist a

LPUSH mylist b

LPUSH mylist c

如果key不存在,一个空列表会被创建并执行LPUSH操作。

当key存在但不是列表类型时,返回一个错误。


例如:
# 加入单个元素

redis> LPUSH languages python
(integer) 1

# 加入重复元素

redis> LPUSH languages python
(integer) 2

redis> LRANGE languages 0 -1 # 列表允许重复元素
1) "python"
2) "python"

# 加入多个元素

redis> LPUSH mylist a b c
(integer) 3

redis> LRANGE mylist 0 -1
1) "c"
2) "b"
3) "a"

2、lpushx(left pushx)方法:

LPUSHX key value

将值value插入到列表key的表头,当且仅当key存在并且是一个列表。

和LPUSH命令相反,当key不存在时,LPUSHX命令什么也不做。

例如:
# 情况1:对空列表执行LPUSHX

redis> LLEN greet    # greet是一个空列表
(integer) 0

redis> LPUSHX greet "hello"  # 尝试LPUSHX,失败,因为列表为空
(integer) 0

# 情况2:对非空列表执行LPUSHX

redis> LPUSH greet "hello"   # 先用LPUSH创建一个有一个元素的列表
(integer) 1

redis> LPUSHX greet "good morning"   # 这次LPUSHX执行成功
(integer) 2

redis> LRANGE greet 0 -1
1) "good morning"
2) "hello"

3、rpush(right push)方法:

RPUSH key value [value ...]

将一个或多个值value插入到列表key的表尾。

如果有多个value值,那么各个value值按从左到右的顺序依次插入到表尾:

比如对一个空列表(mylist)执行RPUSH mylist a b c,则结果列表为a b c,

等同于执行命令

RPUSH mylist a、

RPUSH mylist b、

RPUSH mylist c。

如果key不存在,一个空列表会被创建并执行RPUSH操作。

当key存在但不是列表类型时,返回一个错误。


备注:在Redis 2.4版本以前的RPUSH命令,都只接受单个value值。

# 添加单个元素

redis> RPUSH languages c
(integer) 1

# 添加重复元素

redis> RPUSH languages c
(integer) 2

redis> LRANGE languages 0 -1 # 列表允许重复元素
1) "c"
2) "c"

# 添加多个元素

redis> RPUSH mylist a b c
(integer) 3

redis> LRANGE mylist 0 -1
1) "a"
2) "b"
3) "c"

4、rpushx(right pushx)方法:

RPUSHX key value

将值value插入到列表key的表尾,当且仅当key存在并且是一个列表。

和RPUSH命令相反,当key不存在时,RPUSHX命令什么也不做。


例如:
# 情况1:key不存在

redis> LLEN greet
(integer) 0

redis> RPUSHX greet "hello"  # 对不存在的key进行RPUSHX,PUSH失败。
(integer) 0

# 情况2:key存在且是一个非空列表

redis> RPUSH greet "hi"  # 先用RPUSH插入一个元素
(integer) 1

redis> RPUSHX greet "hello"  # greet现在是一个列表类型,RPUSHX操作成功。
(integer) 2

redis> LRANGE greet 0 -1
1) "hi"
2) "hello"

5、lpop(left pop)方法:

LPOP key

移除并返回列表key的头元素。

redis> LLEN course
(integer) 0

redis> RPUSH course algorithm001
(integer) 1
redis> RPUSH course c++101
(integer) 2

redis> LPOP course  # 移除头元素
"algorithm001"

6、rpop(right pop)方法:

RPOP key

移除并返回列表key的尾元素。

redis> RPUSH mylist "one"
(integer) 1
redis> RPUSH mylist "two"
(integer) 2
redis> RPUSH mylist "three"
(integer) 3

redis> RPOP mylist  # 返回被弹出的元素
"three"

redis> LRANGE mylist 0 -1   # 列表剩下的元素
1) "one"
2) "two"

7、llen方法:

LLEN key

返回列表key的长度。

如果key不存在,则key被解释为一个空列表,返回0.

如果key不是列表类型,返回一个错误。

# 情况1:空列表

redis> LLEN job
(integer) 0

# 情况2:非空列表
redis> LPUSH job "cook food"
(integer) 1
redis> LPUSH job "have lunch"
(integer) 2

redis> LLEN job
(integer) 2

8、lrange方法:

LRANGE key start end

返回列表key中指定区间内的元素,区间以偏移量start和end指定。

下标(index)参数start和end都以0为底,也就是说,以0表示列表的第一个元素,以1表示列表的第二个元素,以此类推。

你也可以使用负数下标,以-1表示列表的最后一个元素,-2表示列表的倒数第二个元素,以此类推。

超出范围的下标

超出范围的下标值不会引起错误。

如果start下标比列表的最大下标end(LLEN list减去1)还要大,或者start > stopLRANGE返回一个空列表。

如果stop下标比end下标还要大,Redis将stop的值设置为end


redis> RPUSH fp-language lisp   # 插入一个值到列表fp-language
(integer) 1
redis> LRANGE fp-language 0 0
1) "lisp"

redis> RPUSH fp-language scheme
(integer) 2
redis> LRANGE fp-language 0 1
1) "lisp"
2) "scheme"

9、linsert方法:

时间: 2024-11-01 12:55:58

NoSQL----Redis 2.4--List的相关文章

九爷带你了解 带你了解 Nosql Redis ttserver Flare memcache比较

Nosql Redis ttserver Flare memcache比较 随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速.而传统的关系数据库在应付 web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,例如: 1.High performance - 对数据库高并发读写的需求 web2.0网站要根据用户个性化信息来实时生成动态页面和提供动态信息,所以基本上无法使用动

[NOSQL] Redis介绍

Redis概述 Redis是Salvatore Sanfilippo在2009年为其初创公司LLOOGG开发的,目前仍是独立项目,但VMWare赞劣了项目(作者是其雇员).它采用C语言实现,因此性能很好.采用BSD许可证,使用键值存储,和Amazon Dynamo,Cassandra,Riak,Voldemort,Memcache类似.支持丰富的数据类型,比如数组,链表,集合等,非常适合需要表达时间线的web服务,例如微博. Redis支持的数据类型有: 字符串 链表 集合 有序集合 散列表 R

(转)NoSQL——Redis在win7下安装配置的学习一

NoSQL——Redis在win7下安装配置的学习一 有些也是从网上看来的 1.下载安装 Redis它没有windows的官方版本,但是又非官方的版本,到官网上去下载相应的版本,我的电脑是win7下的64位系统,下载的是2.4.5版本的 http://code.google.com/p/servicestack/wiki/RedisWindowsDownload#Download_32bit_Cygwin_builds_for_Windows 然后直接解压就可以了. 我直接剪切64bit文件夹到

NoSQL&Redis

1.介绍NoSQL NoSQL(Not Only SQL):不仅仅是SQL,是一项全新的数据库理念,泛指非关系型数据库,原来我们所使用的MySQL.Oracle.Microsoft SQL Server等都是关系行数据库.那么我们为什么需要NoSQL呢?随着互联网web2.0网站兴起,非关系型数据库发展迅速,传统的关系型数据库应付 web2.0 网站,特别是超大规模和高并发的 SNS 类型的 web2.0 动态网站已经力不从心,尤其是对数据库高并发读写的需求.对海量数据库的高效率存储和访问的需求

NoSQL -- redis 安装 主从 配置详解 常用命令

Redis 也是key-value存储系统,官方站点 http://redis.io,但相对于memcache,有如下优势: 1.支持更多地value类型(string.hash.lists.sets.sorted sets等): 2.支持数据持久化,预防服务重启后需要重新存储: redis 有两种文件格式:全量数据(RDB=redis database).增量请求(aof=append only file). 前者是将内存中的数据写进磁盘,便于下次读取文件时直接进行加载,快照形式: 后者是将r

NOSQL:redis mongodb

redis 1 概念及其基本操作:http://blog.nosqlfan.com/html/3139.html 2 安装配置及其操作:http://blog.fens.me/linux-redis-install/ 3 服务器详细配置(包括集群的配置)及其C语言客户端操作:http://blog.csdn.net/hj19870806/article/details/8724907  rmongodb 1 概念及其基本操作:

NoSQL - redis 备份

redis持久化 – 两种方式 redis提供了两种持久化的方式,分别是RDB(Redis DataBase)和AOF(Append Only File). 官方建议:两种方式都打开,同时进行备份.耐久性不高的可以选快照 RDB. RDB:就是在不同的时间点,将redis存储的数据生成快照并存储到磁盘等介质上: 优点:备份文件体积小,恢复速度快,fork子进程不影响父进程io: 缺点:故障时丢失数据会多点,数据集庞大时,因fork进程慢,导致客户端响应延迟: 配置:save 600 1,默认为d

[你必须知道的NOSQL系列]专题二:Redis快速入门

一.前言 在前一篇博文介绍了MongoDB基本操作,本来打算这篇博文继续介绍MongoDB的相关内容的,例如索引,主从备份等内容的,但是发现这些内容都可以通过官方文档都可以看到,并且都非常详细,所以这里就不想继续介绍了,需要用到的朋友到官方文档进行查阅:http://docs.mongodb.org/manual/tutorial/remove-indexes/.本专题将介绍另一个NoSQL——Redis的相关内容. 二.Redis介绍 关于Redis大家肯定多多少少都有所了解,Redis一般都

NoSQL之Redis高级实用命令详解--安全和主从复制

Android IOS JavaScript HTML5 CSS jQuery Python PHP NodeJS Java Spring MySQL MongoDB Redis NOSQL Vim C++ C# JSON Ruby Linux Nginx Docker 所有分类  >  数据库相关  >  NoSQL数据库 NoSQL之Redis高级实用命令详解--安全和主从复制 NoSQL Redis   2014-01-09 22:52:47 发布 您的评价:       0.0   收

Redis命令拾遗一(字符串类型)

文章归博客园和作者“蜗牛”共同所有 .转载和爬虫请注明原文Redis系列链接 http://www.cnblogs.com/tdws/tag/NoSql/ Redis有五种基本数据类型.他们分别是字符串,散列,列表,集合,有序集合.实际上,后四种,在我们表面上理解看来,是以不同的形式来组织字符串键值. 你可以用其存储任何你所希望的一块整体数据,是整体数据哟.如果是文章的标题,标签,内容,评论这样的数据,虽然你可以将其对象序列化为Json存储,但是不建议使用字符串.因为作为一个整体存储,当你想获得