Redis常用命令
原子性增长:
> set counter 100 OK > incr counter (integer) 101 > incr counter (integer) 102 > incrby counter 50 (integer) 152
在一个命令中一次设置或者检索多个键有利于减少延迟。为此有了MSET和MGET命令:
> mset a 10 b 20 c 30 OK > mget a b c 1) "10" 2) "20" 3) "30"
DEL命令删除键及其关联的值
> set mykey hello OK > exists mykey (integer) 1 > del mykey (integer) 1 > exists mykey (integer) 0
设置key的保存期expire
> set key some-value OK > expire key 5 (integer) 1 > get key (immediately) "some-value" > get key (after some time) (nil)
TTL命令检查键的生存剩余时间
> set key 100 ex 10 OK > ttl key (integer) 9
Redis列表
LPUSH命令从左边(头部)添加一个元素到列表,RPUSH命令从右边(尾部)添加一个元素的列表。LRANGE命令从列表中提取一个范围内的元素。
> rpush mylist A (integer) 1 > rpush mylist B (integer) 2 > lpush mylist first (integer) 3 > lrange mylist 0 -1 1) "first" 2) "A" 3) "B"
注意LRANGE命令使用两个索引下标,分别是返回的范围的开始和结束元素。两个索引坐标可以是负数,表示从后往前数,所以-1表示最后一个元素,-2表示倒数第二个元素,等等。
如你所见,RPUSH添加元素到列表的右边,LPUSH添加元素到列表的左边。
两个命令都是可变参数命令,也就是说,你可以在一个命令调用中自由的添加多个元素到列表中:
> rpush mylist 1 2 3 4 5 "foo bar" (integer) 9 > lrange mylist 0 -1 1) "first" 2) "A" 3) "B" 4) "1" 5) "2" 6) "3" 7) "4" 8) "5" 9) "foo bar"
定义在Redis列表上的一个重要操作是弹出元素。弹出元素指的是从列表中检索元素,并同时将其从列表中清楚的操作。你可以从左边或者右边弹出元素,类似于你可以从列表的两端添加元素。
> rpush mylist a b c (integer) 3 > rpop mylist "c" > rpop mylist "b" > rpop mylist "a"
Lpush、rpush、lpop、rpop灵活运用就能使redis-list变成队列或者盏
列表的阻塞操作(blocking)
列表有一个特别的特性使得其适合实现队列,通常作为进程间通信系统的积木:阻塞操作。
假设你想往一个进程的列表中添加项,用另一个进程来处理这些项。这就是通常的生产者消费者模式,可以使用以下简单方式实现:
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
<!--[if !supportLists]-->· <!--[endif]-->生产者调用LPUSH添加项到列表中。
<!--[if !supportLists]-->· <!--[endif]-->消费者调用RPOP从列表提取/处理项。
然而有时候列表是空的,没有需要处理的,RPOP就返回NULL。所以消费者被强制等待一段时间并重试RPOP命令。这称为轮询 (polling),由于其具有一些缺点,所以不合适在这种情况下:
1.强制Redis和客户端处理无用的命令(当列表为空时的所有请求都没有执行实际的工作,只会返回NULL)。
2.由于工作者受到一个NULL后会等待一段时间,这会延迟对项的处理。
于是Redis实现了BRPOP和BLPOP两个命令,它们是当列表为空时RPOP和LPOP的会阻塞版本:仅当一个新元素被添加到列表时,或者到达了用户的指定超时时间,才返回给调用者。
这个是我们在工作者中调用BRPOP的例子:
> brpop tasks 5 1) "tasks" 2) "do_something"
上面的意思是”等待tasks列表中的元素,如果5秒后还没有可用元素就返回”。
注意,你可以使用0作为超时让其一直等待元素,你也可以指定多个列表而不仅仅只是一个,同时等待多个列表,当第一个列表收到元素后就能得到通知。
关于BRPOP的一些注意事项。
1.客户端按顺序服务:第一个被阻塞等待列表的客户端,将第一个收到其他客户端添加的元素,等等。
2.与RPOP的返回值不同:返回的是一个数组,其中包括键的名字,因为BRPOP和BLPOP可以阻塞等待多个列表的元素。
3.如果超时时间到达,返回NULL。
还有更多你需要知道的关于列表和阻塞选项,建议你阅读下面的页面:
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
<!--[if !supportLists]-->· <!--[endif]-->使用RPOLPUSH构建更安全的队列和旋转队列。
<!--[if !supportLists]-->· <!--[endif]-->BRPOPLPUSH命令是其阻塞变种命令。
当所有元素弹出后,键就不存在了。
相当适合用来做资源池来管理资源
Redis集合(Sets)
Redis集合是无序的字符串集合(collections)。SADD命令添加元素到集合。还可以对集合执行很多其他的操作,例如,测试元素是否存在,对多个集合执行交集、并集和差集,等等。
> sadd myset 1 2 3 (integer) 3 > smembers myset 1. 3 2. 1 3. 2 > sismember myset 3 (integer) 1 > sismember myset 30 (integer) 0
字典分数(Lexicographical scores)
最近的Redis2.8版本引入了一个新的特性,假定集合中的元素都具有相同的分数,允许按字典顺序获取范围(元素按照C语言中的memcmp函数进行比较,因此可以保证没有整理,每个Redis实例会有相同的输出)。
操作字典顺序范围的主要命令是ZRANGEBYLEX,ZREVRANGEBYLEX,ZREMRANGEBYLEX和ZLEXCOUNT。例如,我们再次添加我们的著名黑客清单。但是这次为每个元素使用0分数:
> zadd hackers 0 "Alan Kay" 0 "Sophie Wilson" 0 "Richard Stallman" 0 "Anita Borg" 0 "Yukihiro Matsumoto" 0 "Hedy Lamarr" 0 "Claude Shannon" 0 "Linus Torvalds" 0 "Alan Turing"
根据有序集合的排序规则,他们已经按照字典顺序排好了:
> zrange hackers 0 -1 1) "Alan Kay" 2) "Alan Turing" 3) "Anita Borg" 4) "Claude Shannon" 5) "Hedy Lamarr" 6) "Linus Torvalds" 7) "Richard Stallman" 8) "Sophie Wilson" 9) "Yukihiro Matsumoto"
使用ZRANGEBYLEX我们可以查询字典顺序范围:
> zrangebylex hackers [B [P 1) "Claude Shannon" 2) "Hedy Lamarr" 3) "Linus Torvalds"
NoSql特性
相关推荐
本文档从redis基础知识,复制模式,集群模式等介绍redis基础知识,介绍了数据槽,分片,key等知识。
本文将深入探讨Redis的相关知识,包括其安装流程以及如何使用Java进行调用。 一、Redis简介 Redis是一个开源(BSD许可)的,内存中的数据结构存储系统,可以作为数据库、缓存和消息代理使用。它支持多种数据结构,...
Redis底层知识分享,参考书籍:Redis5.0.0源码和《Redis原理与设计》
#### 28、Redis事务相关的命令有哪几个? - `MULTI`:开启一个事务块。 - `EXEC`:执行所有事务块内的命令。 - `DISCARD`:取消当前事务块。 - `WATCH`:监视一个或多个键。 #### 29、Rediskey的过期时间和永久...
### Redis相关知识讲解及相关配置 #### 一、Redis简介与特点 Redis(Remote Dictionary Server)是一种开源的键值存储系统,被广泛应用于高速缓存、消息队列等场景。其支持多种数据结构如字符串(strings)、哈希...
以下是对Redis相关知识点的详细解释: 1. **Redis的基本概念** - **键(Key)**:Redis中的数据是以键值对的形式存在的,键是唯一的标识符。 - **值(Value)**:值可以是字符串、列表、集合、哈希表或有序集合等...
以下是对Redis相关知识点的详细讲解: 一、Redis基本概念 1. 数据结构:Redis支持多种数据类型,如字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)。每种数据类型都有其独特的应用场景。...
在本文中,我们将详细探讨Redis 5.0版本的相关知识点,包括其新特性、安装过程、配置优化以及常见操作。 首先,Redis 5.0引入了一个重要的新特性——Stream数据结构。Stream是Redis提供的一个复杂且灵活的日志数据...
Redis部分知识点11
Redis核心知识点总结
Redis 基础知识 Redis 是一个基于 key-value 键值的持久化数据库存储系统。它支持的数据存储类型更丰富,并且持久化存储,还支持主从同步,这点类似于 MySQL。Redis 的应用场景非常广泛,以下是 Redis 的基础知识点...
redis整合知识点新手编制
对《Redis设计与实现》一书中的知识点进行全面的整理,让大家对Redis的整体架构以及其知识点有更为全面的认知
redis知识思维导图r
### Redis面试常考知识点 #### 一、Redis简介与特性 **Redis**(Remote Dictionary Server)是一种开源的、基于内存的、支持多种数据结构的键值(Key-Value)存储系统。由于它主要依赖内存进行数据存储,因此读写...
Redis技术栈 xmind格式 很适合新手上手看一下。 笔者自己总结
### Redis基础知识详解 #### 一、NoSQL概述 ##### 1.1 什么是NoSQL? NoSQL,全称为Not Only SQL,是指一类非关系型数据库管理系统。与传统的SQL(Structured Query Language)数据库不同,NoSQL数据库更加注重...
学习 Redis 可以帮助你构建更快、更可靠、更可扩展的应用程序,同时也为你的职业生涯增加价值。 1.Redis 是一个高性能的键值存储系统,它可以用作数据库、缓存或消息传递系统,从而提高应用程序的响应速度和处理能力...
学习 Redis 可以帮助你构建更快、更可靠、更可扩展的应用程序,同时也为你的职业生涯增加价值。 1.Redis 是一个高性能的键值存储系统,它可以用作数据库、缓存或消息传递系统,从而提高应用程序的响应速度和处理能力...