`
huangz
  • 浏览: 322232 次
  • 性别: Icon_minigender_1
  • 来自: 广东-清远
社区版块
存档分类
最新评论

【进行中】Redis命令参考(Commands Reference)中文翻译【List部分】

阅读更多

注意:此文档已经过期,请移步到 http://huangz.iteye.com/blog/1123512 查看最新翻译。

 

BLPOP key [key ...] timeout

    BLPOP是一个阻塞列表的弹出原语。
    它是LPOP的阻塞版本,当给定列表内没有任何元素可供弹出的时候,连接将被BLPOP命令阻塞。
    当给定多个key参数时,按传入key的先后检查列表,弹出第一个非空列表的头部元素。

        复杂度:
            O(1)

        返回值:
            假如在指定时间内没有任何元素被弹出,则返回一个nil和等待时长。
            反之,返回一个含有两个元素的列表,第一个是被弹出元素所属的key,第二个是被弹出元素的值。

    非阻塞行为

    当BLPOP被调用时,如果给定key内至少有一个非空列表,那么弹出遇到的第一个非空列表的头部元素,并和被弹出元素所属的列表的名字一起,组成结果>返回给调用者。

    (多个)给定key按被传入的先后顺序被检查。
    假设现在job不存在,command和request都持有非空列表。考虑以下命令:

    BLPOP job command request

    BLPOP保证返回的元素来自command,因为它是第一个按“查找job -> 查找command -> 查找request”这样的顺序,第一个找到的非空列表。

 

redis> DEL job command request  # 确保key都被删除
(integer) 0
redis> LPUSH command "update system..."  # 为command列表增加一个值
(integer) 1
redis> LPUSH request "visit page"  # 为request列表增加一个值
(integer) 1

redis> BLPOP job command request 0  # job列表为空,被跳过,紧接着command列表的第一个元素被弹出。
1) "command"
2) "update system..."

 

    阻塞行为

    如果所有给定key都不存在或包含空列表,那么BLPOP将阻塞连接,直到另一个客户端对给定key的其中一个列表执行LPUSH或RPUSH操作,或操作超时为止。

    如果在规定时间内新数据出现在其中一个key列表内,或者等待超时,都会导致返回。

    超时参数接受一个数字作为值。超时参数设为0表示阻塞时间可以无限期延长(block indefinitely) 。

    相同的key被多个客户端同时阻塞

    相同的key可以被多个客户端同时阻塞。不同的客户端被放到一个队列中,按“先阻塞先服务”的顺序同key进行BLPOP操作。

 

redis> EXISTS job  # 确保两个key都不存在
(integer) 0
redis> EXISTS command
(integer) 0
redis> BLPOP job command 300  #因为key一开始不存在,所以操作会被阻塞,直到另一客户端对job或者command列表进行PUSH操作。
1) "job"  # 这里被push的是job
2) "do my home work"  # 被弹出的内容
(26.26s)  # 等待的秒数


redis> BLPOP job command 5  # 等待超时的情况
(nil)
(5.66s)

 

    在MULTI/EXEC事务中的BLPOP

    BLPOP可以用于流水线(批量地发送多个命令并阅读多个回复),但它不能用在MULTI/EXEC块当中。这要求整个服务器按顺序被阻塞以保证块执行时的原子
性,该行为阻止了其他客户端执行push操作。

    一个被包含在MULTI/EXEC命令内的BLPOP操作,行为表现得就像操作超时一样,仅仅返回一个nil值。如果你是科幻迷,你可以想象MULTI/EXEC命令内时间>以无限的速度在流逝。

 

redis> MULTI
OK
redis> BLPOP job 30
QUEUED
redis> EXEC
1) (nil)  # 操作没有等待,立即被返回了
 

 

LLEN key

    返回key所储存列表的长度。
    如果key不存在,则key被解释为一个空列表,返回0.
    如果key储存的不是列表,返回一个错误。

        复杂度:
            O(1)

        返回值:
            key中列表的长度。

redis> LLEN job  # 空列表
(integer) 0

redis> LPUSH job "cook food"
(integer) 1
redis> LPUSH job "have lunch"
(integer) 2

redis> LLEN job
(integer) 2
 


LREM key count value

    按照count参数的要求,移除列表中与value参数相等的值。
   
    count参数可以是以下几种:
        count > 0 : 从表头开始向表尾搜索,移除与value参数相等的值。
        count < 0 : 从表尾开始向表头搜索,移除与value参数相等的值。
        count = 0 : 移除表中所有与value相等的值。

        复杂度:
            O(N),N为列表的长度。

        返回值:
            被移除值的数量。

 

# 先创建一个表,内容排列是
# morning hello morning helllo morning

redis> LPUSH greet "morning"
(integer) 1
redis> LPUSH greet "hello"
(integer) 2
redis> LPUSH greet "morning"
(integer) 3
redis> LPUSH greet "hello"
(integer) 4
redis> LPUSH greet "morning"
(integer) 5
redis> LRANGE greet 0 4
1) "morning"
2) "hello"
3) "morning"
4) "hello"
5) "morning"

redis> LREM greet 2 morning  # 移除从表头到表尾,最先发现的两个morning
(integer) 2  # 两个元素被移除

redis> LLEN greet 
(integer) 3

redis> LRANGE greet 0 2
1) "hello"
2) "hello"
3) "morning"

redis> LREM greet -1 morning  # 移除从表尾到表头,第一个morning
(integer) 1

redis> LLEN greet
(integer) 2

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

redis> LREM greet 0 hello  # 移除表中所有hello
(integer) 2  # 两个hello被移除

redis> LLEN greet
(integer) 0

 


RPUSH key value

    将值插入到表尾。
    如果key不存在,一个空列表会被自动创建再执行RPUSH操作。
    当key存在当不是列表类型时,返回一个错误。

        复杂度:
            O(1)

        返回值:
            执行RPUSH操作后,表的长度。

 

redis> LLEN fp-language
(integer) 0
redis> RPUSH fp-language lisp
(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"
 


BRPOP key [key ...] timeout


    RPOP操作的阻塞版本,作用和BLPOP相似,唯一不同是BRPOP弹出第一个非空列表的表尾元素,而BLPOP弹出第>一个非空列表的表头元素。(具体参考BLPOP命令)。

        复杂度:
            O(1)

        返回值:
            假如在指定时间内没有任何元素被弹出,则返回一个nil和等待时长。
            反之,返回一个含有两个元素的列表,第一个是被弹出元素所属的key,第二>个是被弹出元素的值。 

 

 

redis> LLEN course
(integer) 0

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

redis> BRPOP course 30
1) "course"
2) "c++101"

 

 

LPOP key

    移除并返回列表中第一个元素。

        复杂度:
            O(1)

        返回值:
            列表中第一个值。
            当key不存在时,返回nil。

 

redis> LLEN course
(integer) 0

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

redis> LPOP course
"algorithm001"
 


LSET key index value

    将列表中index下标的值设为value。
    更多信息参考LINDEX操作。
    当index参数超出范围时,返回一个错误。

        复杂度:
            O(N),N为列表的长度。
            对头元素和尾元素进行LSET操作,复杂度为O(1)。

        返回值:
            操作成功返回ok,否则返回错误信息。

redis> LPUSH job "cook food"
(integer) 1

redis> LRANGE job 0 0
1) "cook food"

redis> LSET job 0 "play game"
OK

redis> LRANGE job  0 0
1) "play game"
 


RPUSHX key value

    将值value插入到表尾,当且仅当key存在并且是一个列表。     
    和RPUSH操作相反,当key不存在时,RPUSHX操作什么也不做。
   
        复杂度:
            O(1)

        返回值:
            RPUSHX操作之后,表的长度。

redis> LLEN greet
(integer) 0
redis> RPUSHX greet "hello"  # 对不存在的key进行RPUSHX,PUSH失败。
(integer) 0
redis> RPUSH greet "hi"  # 先用RPUSH插入一个元素
(integer) 1
redis> RPUSHX greet "hello"  # greet现在是一个列表类型,RPUSHX操作成功。
(integer) 2
 

 

 

 

 

######防止编辑器吃掉空白行

分享到:
评论

相关推荐

    Redis 命令参考手册中文完整版chm

    以上只是Redis命令参考手册中的一部分内容,完整的CHM文档包含了更详尽的命令介绍、参数解析和使用示例,对于深入理解和使用Redis有着极大的帮助。无论你是初学者还是经验丰富的开发者,这份中文版的Redis命令参考...

    Redis命令参考手册

    Redis是一个开源的高性能键值对数据库,它支持多种...这份Redis命令参考手册是每个使用Redis的开发者不可或缺的工具,通过它可以快速找到所需执行的命令及其具体用法,是Redis数据库管理和开发过程中的重要参考文档。

    Redis命令参考手册完整版(PDF)

    本PDF手册详尽地介绍了Redis的所有命令及其用法,对于深入理解和使用Redis至关重要。以下将根据标题和描述,结合Redis的基础知识,展开详细介绍。 1. **Redis基本概念** - **键(Key)**:Redis中的数据存储是以键值...

    Redis命令参考手册完整版.pdf

    "Redis命令参考手册完整版.pdf"是学习和使用Redis的重要资源,包含了Redis所有命令的详细说明。 1. **基础命令**: - `SET`:设置键的值,例如`SET key value`,创建或更新键值对。 - `GET`:获取键的值,例如`...

    Redis命令参考简体中文版(全)

    Redis命令参考简体中文版 共十个部分的所有命令均已翻译完毕 源地址见: http://redis.readthedocs.org/en/latest/ 感谢huangz1990的翻译。本人只是打包成了chm

    Redis命令参考手册完整版

    Redis 命令参考手册完整版 Redis 是一个开源的、基于内存的数据存储系统,可以作为数据库、消息队列、缓存等使用。在 Redis 中,命令是最基本的操作单元,掌握 Redis 命令是使用 Redis 的基础。本文将对 Redis 命令...

    Redis 命令参考手册完整版

    命令参考手册是了解和使用Redis功能的关键途径,能够帮助开发者快速掌握Redis的使用方法。 1. DEL命令:DEL命令用于删除给定的一个或多个key。对于字符串类型的key,删除操作的时间复杂度为O(1),而对于列表、集合...

    Redis命令参考手册完整版.txt

    ### Redis命令参考手册知识点概述 #### 一、DEL 命令详解 - **命令格式**:`DEL key [key ...]` - **功能描述**: - 用于删除一个或多个给定的键。 - 如果键不存在,则不会有任何错误提示,而是简单地忽略这些键...

    Redis命令参考手册完整版.zip

    这份"Redis命令参考手册完整版"包含了Redis所有核心功能的详细文档,是学习和使用Redis的重要参考资料。 Redis支持丰富的数据类型,如字符串(Strings)、哈希(Hashes)、列表(Lists)、集合(Sets)以及有序集合(Sorted ...

    redis命令参考手册完整版

    根据给定的文件信息,以下是对“redis命令参考手册完整版”中提到的关键知识点的详细解析: ### 一、DEL 命令 **格式**:`DEL key [key ...]` - **功能**:DEL命令用于删除指定的一个或多个key。如果key不存在,...

    Redis命令参考手册完整版.rar

    这份"Redis命令参考手册完整版"包含了Redis的所有核心命令及其详细解释,是学习和使用Redis的重要参考资料。 首先,Redis支持的数据类型包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted ...

    redis命令参考_中文版_html版

    本资源是Redis命令的中文参考文档的HTML版本,适用于版本2.8。了解和掌握Redis命令对于使用和管理Redis数据库至关重要。下面将详细阐述Redis的核心概念和常用命令。 1. **Redis的数据类型**: - **String(字符串...

    redis命令参考_中文版_pdf版

    这份"redis命令参考_中文版_pdf版"是针对Redis 2.8版本的详细指南,它涵盖了Redis的各种操作命令,对于学习和使用Redis来说是非常宝贵的资源。 在Redis中,命令是操作数据的主要方式,以下是一些核心命令的简介: ...

    redis命令参考_中文版

    redis命令参考CHM是由来源于gitHub的html文档制作而成,而且本文档是中文版,对英语不是很熟悉的开发者很适合使用。

    Redis命令参考中文版(chm)

    Redis命令参考中文版(chm) 原资料地址 http://redis.readthedocs.org/en/latest/ 我只是把它打包成了chm格式的

    redis命令参考手册

    Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal...

Global site tag (gtag.js) - Google Analytics