本文是我们学院课程的一部分,标题为Redis NoSQL键值存储 。
这是Redis的速成班。 您将学习如何安装Redis并启动服务器。 此外,您将在Redis命令行中乱七八糟。 接下来是更高级的主题,例如复制,分片和集群,同时还介绍了Redis与Spring Data的集成。 在这里查看 !
目录
- 1.简介 2.按键 3.琴弦 4.散列 5.清单 6.套装 7.排序集 8.发布/订阅 9.交易 10.脚本编写 11.连接 12.服务器
1.简介
命令是Redis的基本概念。 这是客户端与服务器通信的唯一方式。 Redis命令集非常丰富,以至于它们有几种类别。 每个类别对应于其操作的数据结构(或功能):
- 按键
- 弦乐
- 散列
- 清单
- 套装
- 排序集
- 发布/订阅
- 事务,脚本
此外,还有几个服务命令来管理服务器配置,连接和检查运行时行为
- 连接
- 服务器
在本教程中,我们将继续熟悉Redis命令行工具redis-cli
(在Windows上为redis-cli.exe
),我们在第一篇教程中对此进行了简要讨论。 在下一节中,我们将介绍所有Redis命令并尝试其中的大多数命令。 前面的快速说明,要查看某些命令的效果,应运行redis-cli
的两个实例(在Windows上为redis-cli.exe
)。
2.按键
尽管Redis具有丰富的功能,但它仍然是键/值存储。 Redis中存储的每个值都可以使用相应的键(有时是键)来检索。 本小节概述了键上的一般操作,而与键的值无关。
命令 | DEL键[键…] |
描述 | 删除一个键(或多个键)。 命令返回成功删除了多少个键。 |
例 | 假设密钥mykey 存在,该命令将其删除。 |
参考 | http://redis.io/commands/del |
表格1
命令 | DUMP键 |
描述 | 返回存储在指定键处的值的序列化版本。 |
例 | 假设存在密钥mykey 并mykey 分配了简单字符串“ value ”,该命令将返回其序列化表示形式。 |
参考 | http://redis.io/commands/dump |
表2
命令 | EXISTS键 |
描述 | 确定密钥是否存在。 如果键存在,则返回1,否则返回0。 |
例 | 假设键mykey1 存在而mykey2 不存在,该命令分别返回1和0 。 |
参考 | http://redis.io/commands/exists |
表3
命令 | EXPIRE关键秒 |
描述 | 设置密钥的生存时间(以秒为单位)。 一旦此时间间隔到期,密钥将被删除。 如果键存在,则命令返回1,否则返回0。 |
例 | 假设密钥mykey 存在,则其过期时间设置为1秒。 |
参考 | http://redis.io/commands/expire |
表4
命令 | EXPIREAT关键时间戳 |
描述 | 将密钥的到期时间设置为UNIX时间戳。 一旦达到到期时间,密钥将被删除。 如果键存在,则命令返回1,否则返回0。 |
例 | 请参阅EXPIRE 命令 |
参考 | http://redis.io/commands/expireat |
表5
命令 | 按键模式 |
描述 | 查找与给定模式匹配的所有键。 在实时服务器上执行此命令非常危险,因为它可以匹配整个键集 。 |
例 | 假定键mykey1 和mykey2 存在,命令将它们返回为与mykey *模式匹配的键。 |
参考 | http://redis.io/commands/keys |
表6
命令 | MIGRATE主机端口密钥destination-db超时 |
描述 | 将密钥从Redis实例原子转移到另一个实例。 |
例 | 假设密钥mykey 存在并且在localhost 和端口6378 上运行Redis服务器的另一个实例,则mykey 将以1000毫秒(1秒)的超时时间传输到数据库0 。 请注意,该mykey 将从当前Redis实例中删除。 如果mykey 不存在,则命令返回NOKEY 响应。 |
参考 | http://redis.io/commands/migrate |
表7
命令 | 移动键数据库 |
描述 | 将密钥移到另一个数据库。 如果键存在且已正确移动,则命令返回1,否则返回0。 |
例 | 假设密钥mykey 存在,它将被移至数据库2。请注意,该mykey 将从当前数据库中删除。 |
参考 | http://redis.io/commands/move |
表8
命令 | OBJECT REFCOUNT键 对象编码键 对象空闲时间键 |
描述 | 检查与键关联的Redis对象的内部:
|
例 | 假设存在密钥mykey ,该命令将提供一些固有细节,这些细节主要用于调试目的。 另请参见DEBUG OBJECT 命令。 |
参考 | http://redis.io/commands/object |
表9
命令 | 持久键 |
描述 | 从密钥中删除到期时间。 如果密钥存在并且设置了到期时间(生存时间),则命令返回1,否则返回0。 |
例 | 假设密钥mykey 存在并且设置了到期时间(请参见EXPIRE 命令),该命令将从中删除到期时间。 |
参考 | http://redis.io/commands/persist |
表10
命令 | PEXPIRE密钥毫秒 |
描述 | 设置密钥的生存时间(以毫秒为单位)。 一旦此时间间隔到期,密钥将被删除。 如果键存在,则命令返回1,否则返回0。 |
例 | 请参阅EXPIRE 命令 |
参考 | http://redis.io/commands/pexpire |
表11
命令 | PEXPIREAT密钥毫秒时间戳 |
描述 | 将密钥的到期时间设置为以毫秒为单位指定的UNIX时间戳。 一旦达到到期时间,密钥将被删除。 如果键存在,则命令返回1,否则返回0。 |
例 | 参见EXPIREAT 命令 |
参考 | http://redis.io/commands/pexpireat |
表12
命令 | PTTL键 |
描述 | 获取生存时间(以毫秒为单位)。 如果密钥不存在,则命令返回-2;如果密钥存在但未设置到期时间(生存时间),则命令返回-1。 |
例 | 假设密钥mykey 存在并且将到期时间(生存时间)设置为300秒(请参阅EXPIRE 命令),该命令将返回剩余生存时间。 |
参考 | http://redis.io/commands/pttl |
表13
命令 | 随机键 |
描述 | 从键空间返回一个随机键。 如果键空间中没有键,则命令不返回任何内容。 |
例 | 假设键mykey , mykey1 和mykey2 存在,命令将随机返回其中之一。 |
参考 | http://redis.io/commands/randomkey |
表14
命令 | 重命名键newkey |
描述 | 重命名密钥。 如果密钥key 不存在,则命令返回ERR no such key 。 请注意,如果密钥newkey 存在,则其值将替换为key key 值。 |
例 | 假设密钥mykey 存在,它将被重命名为mykey3 。 |
参考 | http://redis.io/commands/rename |
表15
命令 | RENAMENX键newkey |
描述 | 仅当新密钥不存在时,才重命名密钥。 如果密钥key 不存在,则命令返回ERR no such key 。 如果键已重命名,则命令返回1,否则返回0(如果键newkey 存在)。 |
例 | 假设键mykey 存在,而mykey4 不存在,它将被重命名为mykey4 。 |
参考 | http://redis.io/commands/renamenx |
表16
命令 | 恢复键ttl序列化值 |
描述 | 使用先前使用DUMP 获得的提供的序列化值创建密钥。 如果key key 存在,命令将返回ERR Target key name is busy 。 |
例 | 重用我们先前所见的DUMP 命令的序列化值,该命令将键mykey2 值分配为“ value ”。 |
参考 | http://redis.io/commands/restore |
表17
命令 | TTL键 |
描述 | 获取保留密钥的时间。 如果密钥不存在,则命令返回-2;如果密钥存在但未设置到期时间(生存时间),则命令返回-1。 |
例 | 请参阅PTTL 命令。 |
参考 | http://redis.io/commands/ttl |
表18
命令 | TYPE键 |
描述 | 确定存储在key处的类型。 如果密钥不存在,该命令将none 返回none 。 |
例 | 假设存在密钥mykey 并为其分配了值“ value ”,该命令将string 作为密钥类型返回。 |
参考 | http://redis.io/commands/type |
表19
命令 | 扫描光标[MATCH模式] [COUNT个计数] |
描述 | 递增迭代密钥空间。 游标设置为0时,迭代开始;服务器返回的游标为0时,迭代结束。 |
例 | 假设键mykey , mykey1 , mykey2 和mykey3 存在,命令将在键空间上返回光标。 |
参考 | http://redis.io/commands/scan |
表20
3.琴弦
字符串是最简单的类型,可以存储为特定键的值。 本小节将讨论特定于字符串数据类型的Redis命令。
命令 | APPEND键值 |
描述 | 将值附加到键。 如果键不存在,将创建它并为其分配值。 命令返回键的字符串值的新长度。 |
例 | 假设键mykey 存在并且具有值“ value ”,则将另一个字符串“ value ”附加到其后,生成最终值“ value value”(长度为10)。 |
参考 | http://redis.io/commands/append |
表21
命令 | BITCOUNT键[开始] [结束] |
描述 | 计算字符串中的设置位。 如果key不存在,则命令返回0。 |
例 | 假设键mykey 存在并且具有值“ value ”,该命令将返回21作为结果。 |
参考 | http://redis.io/commands/bitcount |
表22
命令 | BITOP和destkey键[key…] BITOP OR destkey键[key…] BITOP XOR destkey键[key…] BITOP NOT destkey键[key…] |
描述 | 在字符串之间执行按位运算。 命令返回存储在目标键中的字符串的大小,该大小等于最长的输入字符串的大小。 如果键key不存在,则命令返回0。 |
例 | 假设键mykey 和mykey1 以值“ value ”和“ eulav ”存在,则命令返回所得字符串的长度(5) 。 |
参考 | http://redis.io/commands/bitop |
表23
命令 | DECR键 |
描述 | 将键的整数值减一。 如果key的值不是整数,则命令返回ERR value is not an integer or out of range 。 如果key不存在,则命令假定其值为0并递减。 |
例 | 假设mykey 存在且值为100,该命令将其值减1,然后返回新值99。 |
参考 | http://redis.io/commands/decr |
表24
命令 | DECRBY键递减 |
描述 | 将键的整数值减给定数字。 如果key的值不是整数,则命令返回ERR value is not an integer or out of range 。 如果key不存在,则命令假定其值为0,然后递减。 |
例 | 参见DECR 命令 |
参考 | http://redis.io/commands/decrby |
表25
命令 | GET键 |
描述 | 获取键的值。 如果密钥不存在,则命令返回(nil) 。 |
例 | 假设mykey 存在并且值为“ value ”,则命令将其返回。 |
参考 | http://redis.io/commands/get |
表26
命令 | GETBIT键偏移 |
描述 | 返回键处存储的字符串值中偏移量的位值。 如果键key 不存在,则命令返回0。 |
例 | 假设mykey 存在并且具有值“ value ”,则该命令返回1的偏移量3 。 |
参考 | http://redis.io/commands/getbit |
表27
命令 | GETRANGE键开始结束 |
描述 | 获取存储在键处的字符串的子字符串。 命令返回“”(空字符串)如果key key 不存在。 请注意,索引从0开始。 |
例 | 假设mykey 存在并且具有值“ value ”,该命令返回范围(2,5]的子字符串“ lue ”。 |
参考 | http://redis.io/commands/getrange |
表28
命令 | GETSET键值 |
描述 | 设置键的字符串值并返回其旧值。 如果key key 不存在,该命令将返回(nil) 作为其旧值(但仍然会分配新值)。 |
例 | 假设存在mykey 并具有值“ value ”,该命令将返回旧值,同时给该键分配一个新值“ newvalue ”。 |
参考 | http://redis.io/commands/getset |
表29
命令 | INCR键 |
描述 | 将键的整数值加1。 如果key的值不是整数,则命令返回ERR value is not an integer or out of range 。 如果key不存在,则命令假定其值为0并递增。 |
例 | 参见DECR 命令 |
参考 | http://redis.io/commands/incr |
表30
命令 | INCRBY键增量 |
描述 | 将键的整数值增加给定的数量。 如果key的值不是整数,则命令返回ERR value is not an integer or out of range 。 如果key不存在,则命令假定其值为0,并按增量递增。 |
例 | 参见DECR 命令 |
参考 | http://redis.io/commands/incrby |
表31
命令 | INCRBYFLOAT键增量 |
描述 | 将键的浮点值增加给定的数量。 如果key的值不是float或integer,则命令返回ERR value is not a valid float 。 如果key不存在,则命令假定其值为0,并按增量递增。 |
例 | 参见DECR 命令 |
参考 | http://redis.io/commands/incrbyfloat |
表32
命令 | MGET键[键…] |
描述 | 获取所有给定键的值。 如果其中一个键不存在,则命令返回(nil)作为其值。 非常方便的命令,一次获取多个键的值。 |
例 | 假设键mykey1 和mykey2 存在,该命令将返回它们的值。 |
参考 | http://redis.io/commands/mget |
表33
命令 | MSET键值[键值…] |
描述 | 将多个键设置为多个值。 非常方便的命令,一次可以设置许多键。 如果存在任何键,则其值将被覆盖。 |
例 | |
参考 | http://redis.io/commands/mset |
表34
命令 | MSETNX键值[键值…] |
描述 | 仅当不存在任何键时,才将多个键设置为多个值。 |
例 | 请参阅MSET 命令 |
参考 | http://redis.io/commands/msetnx |
表35
命令 | PSETEX密钥毫秒值 |
描述 | 设置键的值和有效期限(以毫秒为单位)。 SET 和PEXPIRE 作为一个原子命令非常强大的组合。 |
例 | 请参阅SET 和PEXPIRE 命令 |
参考 | http://redis.io/commands/psetex |
表36
命令 | 设置键值[EX秒] [PX毫秒] [NX | XX] |
描述 | 设置键的字符串值。 其他选项允许控制命令行为:
|
例 | 假设mykey 不存在,该命令将其值设置为“ value ”。 |
参考 | http://redis.io/commands/setbit |
表37
命令 | SETBIT键偏移值 |
描述 | 设置或清除键处存储的字符串值中偏移量的位。 如果value不为0或1,则命令返回错误ERR bit is not an integer or out of range 。 |
例 | 假设mykey 存在并且值为“ value ”,该命令将偏移量2的位设置为1。 |
参考 | http://redis.io/commands/setbit |
表38
命令 | SETEX关键秒值 |
描述 | 设置密钥的值和有效期。 SET key value EX seconds 命令的变化。 |
例 | 见SET 命令 |
参考 | http://redis.io/commands/setex |
表39
命令 | SETNX键值 |
描述 | 仅在键不存在时设置键的值。 SET key value NX 命令的变化形式。 |
例 | 见SET 命令 |
参考 | http://redis.io/commands/setnx |
表40
命令 | SETRANGE键偏移值 |
描述 | 从指定的偏移量处开始覆盖键处的字符串的一部分。 如果键不存在,则其值将以0填充直到偏移量。 |
例 | 假设mykey 存在并且值为“ value ”,该命令将后三个字符替换为“ eul”,从而得到最终值“ vaeul”。 |
参考 | http://redis.io/commands/setrange |
表41
命令 | STRLEN键 |
描述 | 获取存储在键中的值的长度。 如果key不存在,则命令返回0。 |
例 | 假设mykey 存在并且具有值“ value ”,该命令将返回其值长度( 5 )。 |
参考 | http://redis.io/commands/strlen |
表42
4.散列
我们可能会认为哈希类似于传统的对象表示法:它是字段(或属性)及其值的容器。 其预期的关键值的所有命令是哈希开始具有“H”( HGET
, HSET
,...)。 如果key不包含哈希值,则所有Hxxx
命令WRONGTYPE Operation against a key holding the wrong kind of value
返回错误WRONGTYPE Operation against a key holding the wrong kind of value
。
命令 | HDEL关键字段[field…] |
描述 | 删除一个或多个哈希字段。 命令返回已删除的字段数。 |
例 | 假设密钥mykey 存在并且具有字段field1 ,该命令将从密钥中删除该字段。 |
参考 | http://redis.io/commands/hdel |
表43
命令 | HEXISTS关键字段 |
描述 | 确定哈希字段是否存在。 如果字段存在,则命令返回1,否则返回0。 |
例 | 假设键mykey 存在并且具有字段field1 ,该命令通过返回1来确认。 |
参考 | http://redis.io/commands/hexists |
表44
命令 | HGET关键字段 |
描述 | 获取哈希字段的值。 如果字段不存在,则命令返回(nil) 。 |
例 | 假设键mykey 存在并且具有值为“ value ”的字段field1 ,该命令将返回字符串“ value ”。 |
参考 |
表45
命令 | HGETALL键 |
描述 | 获取哈希中的所有字段和值。 命令返回每个字段名称,后跟其值。 |
例 | 假设键mykey 存在并且具有字段field1 , field2 ,该命令将返回其名称和值。 |
参考 | http://redis.io/commands/hgetall |
表46
命令 | HINCRBY关键字段增量 |
描述 | 将哈希字段的整数值增加给定数字。 |
例 | 参见DECR 命令 |
参考 | http://redis.io/commands/hincrby |
表47
命令 | HINCRBYFLOAT关键字段增量 |
描述 | 将哈希字段的浮点值增加给定的数量。 |
例 | 参见DECR |
参考 | http://redis.io/commands/hincrbyfloat |
表48
命令 | HKEYS键 |
描述 | 获取哈希中的所有字段。 它与HGETALL 非常相似,除了此命令仅返回字段名称(无值)。 |
例 | 请参阅HGETALL 命令 |
参考 | http://redis.io/commands/hkeys |
表49
命令 | HLEN键 |
描述 | 获取哈希中的字段数。 |
例 | 假设键mykey 存在并且具有字段field1 , field2 ,该命令将返回字段总数(2) 。 |
参考 | http://redis.io/commands/hlen |
表50
命令 | HMGET关键字段[field…] |
描述 | 获取所有给定哈希字段的值。 |
例 | 假设键mykey 存在且具有字段field1 , field2 , field2 ,则该命令仅返回字段field1 , field2 值。 |
参考 | http://redis.io/commands/hmget |
表51
命令 | HMSET键字段值[字段值…] |
描述 | 将多个哈希字段设置为多个值。 如果给定密钥已经存在一些字段,则将覆盖它们。 |
例 | 假设键mykey 不存在,该命令将其字段field1 为“ value1 ”,将field2 为“ value2 ”。 |
参考 | http://redis.io/commands/hset |
表52
命令 | HSET关键字段值 |
描述 | 设置哈希字段的字符串值。 |
例 | 参见HMSET 命令 |
参考 | http://redis.io/commands/hset |
表53
命令 | HSETNX关键字段值 |
描述 | 仅当哈希字段不存在时才设置它的值。 |
例 | 请参阅HSET 命令 |
参考 | http://redis.io/commands/hset |
表54
命令 | HVALS键 |
描述 | 获取哈希中的所有值。 |
例 | 假设键mykey 存在并且具有字段field1 , field2 ,其值分别为“ value1 ”,“ value2 ”,则该命令仅返回字段的值。 |
参考 | http://redis.io/commands/hvals |
表55
命令 | HSCAN键光标[MATCH模式] [COUNT个计数] |
描述 | 增量迭代哈希字段和关联的值。 |
例 | 见SCAN 命令 |
参考 | http://redis.io/commands/hscan |
表56
5.清单
列表是使用最广泛的数据类型,用于表示通用集合。 这很容易理解和操作。 某些列表操作具有阻止和非阻止形式。 如果给定键不包含列表值,则所有与列表相关的命令WRONGTYPE Operation against a key holding the wrong kind of value
返回错误WRONGTYPE Operation against a key holding the wrong kind of value
。
命令 | BLPOP键[键…]超时 |
描述 | 删除并获取列表中的第一个元素,或阻塞直到一个可用。 请注意, timeout 应以秒为单位指定。 |
例 | 假设键mykey 存在并保存值“ value2 ”的列表,则“ value1 ”命令返回列表中的第一个元素。 |
参考 | http://redis.io/commands/blpop |
表57
命令 | BRPOP键[键…]超时 |
描述 | 删除并获取列表或块中的最后一个元素,直到有一个可用。 请注意, timeout 应以秒为单位指定。 |
例 | 请参阅BLPOP 命令 |
参考 | http://redis.io/commands/brpop |
表58
命令 | BRPOPLPUSH源目的地超时 |
描述 | 从列表中弹出一个值,将其推到另一个列表中并返回它; 或阻止,直到一个可用。 请注意, timeout 应以秒为单位指定。 |
例 | 假设键mykey 存在并保存值“ value2 ”的列表,则“ value1 ”命令从中弹出“ value1 ”,并将其推入mykey1 键后面的列表中。 |
参考 | http://redis.io/commands/brpoplpush |
表格59
命令 | LINDEX键索引 |
描述 | 从列表中按其索引获取元素。 请注意,索引从0开始。 如果index超过列表的长度,则命令将返回(nil) 作为值。 |
例 | 假设键mykey 存在并保存值“ value2 ”的列表,则“ value1 ”命令将“ value 2 ”作为列表的第一个元素返回。 |
参考 | http://redis.io/commands/lindex |
表60
命令 | LINSERT键BEFORE | AFTER枢轴值之后 |
描述 | 在列表中的另一个元素之前或之后插入一个元素。 插入值后,该命令将返回列表中元素的总数。 |
例 | 假设密钥mykey 存在并保持值“ 值2”的列表,“VALUE1”命令“VALUE2”之后插入一个值“ 值3”。 |
参考 | http://redis.io/commands/linsert |
表61
命令 | LLEN键 |
描述 | 获取列表的长度。 |
例 | 假设键mykey 存在并保存值“ value2 ”的列表,则“ value1 ”命令返回列表(2)中元素的总数。 |
参考 | http://redis.io/commands/llen |
表62
命令 | LPOP密钥 |
描述 | 删除并获取列表中的第一个元素。 请注意,如果列表为空,则命令返回(nil) 作为值。 |
例 | 假设密钥mykey 存在并保持的值“VALUE2”,“VALUE1”命令弹出从列表中的第一个元素“ 值2”的列表。 |
参考 | http://redis.io/commands/lpop |
表63
命令 | LPUSH键值[值…] |
描述 | 将一个或多个值添加到列表中。 在添加值之后,该命令将返回列表中元素的总数。 如果给定的键不存在,它将被创建。 |
例 | 假设键mykey 不存在,该命令将其创建为列表持有者,并将其“ value1 ”,“ value2 ”放入其中。 因为它是前置操作,所以列表中元素的实际顺序将是“ value2 ”,“ value1 ”。 |
参考 | http://redis.io/commands/lpush |
表64
命令 | LPUSHX键值 |
描述 | 仅当列表存在时,才将值添加到列表中。 |
例 | 请参阅LPUSH 命令 |
参考 | http://redis.io/commands/lpushx |
表65
命令 | LRANGE键启动停止 |
描述 | 从列表中获取一系列元素。 |
例 | 假设键mykey 存在并保存值“ value3 ”,“ value2 ”,“ value1 ”的列表,该命令将返回元素“ value3 ”,“ value2 ”作为子列表。 |
参考 | http://redis.io/commands/lrange |
表66
命令 | LREM密钥计数值 |
描述 | 从列表中删除元素。 该命令返回已删除元素的总数。 count参数通过以下方式影响操作:
|
例 | 假设键mykey 存在并且包含值“ value3 ”,“ value2 ”,“ value1 ”的列表,该命令将从列表中删除元素“ value2 ”。 |
参考 | http://redis.io/commands/lrem |
表67
命令 | LSET键索引值 |
描述 | 通过元素索引来设置列表中元素的值。 |
例 | 假设键mykey 存在并且包含值“ value2 ”的列表,则“ value 1 ”命令将索引0的元素(第一个元素)设置为“ value 3 ”(有效地将“ value 2 ”替换为“ value 3 ”)。 |
参考 | http://redis.io/commands/lset |
表68
命令 | LTRIM键启动停止 |
描述 | 将列表修剪到指定范围。 |
例 | 假设键mykey 存在并且包含值“ value3 ”,“ value2 ”,“ value1 ”的列表,该命令会将列表修剪为2个元素(仅保留值“ value3 ”,“ value2 ”)。 |
参考 | http://redis.io/commands/ltrim |
表69
命令 | RPOP密钥 |
描述 | 删除并获取列表中的最后一个元素。 |
例 | 请参阅LPOP 命令 |
参考 | http://redis.io/commands/rpop |
表70
命令 | RPOPLPUSH源目的地 |
描述 | 删除列表中的最后一个元素,将其追加到另一个列表中并返回。 |
例 | 请参阅BRPOPLPUSH 命令 |
参考 | http://redis.io/commands/rpoplpush |
表71
命令 | RPUSH键值[值…] |
描述 | 将一个或多个值追加到列表。 追加值后,该命令将返回列表中的元素总数。 |
例 | 请参阅LPUSH 命令 |
参考 | http://redis.io/commands/rpush |
表72
命令 | RPUSHX键值 |
描述 | 仅当列表存在时,才将值追加到列表。 |
例 | 请参阅LPUSH 命令 |
参考 | http://redis.io/commands/rpushx |
表73
命令 | 排序键[BY模式] [LIMIT偏移计数] [GET模式[GET模式…]] [ASC | DESC] [ALPHA] [存储目的地] |
描述 | 对列表,集合或排序集中的元素进行排序。 |
例 | 这是一个功能非常强大的命令,带有丰富的选项集。 在最简单的用法中,假设键mykey 存在并保存值“ value3 ”,“ value2 ”,“ value1 ”的列表,该命令将按字母顺序对元素进行排序并返回排序后的列表(“ value1 ”,“ value2 ”,“ value3 ”)。 |
参考 | http://redis.io/commands/sort |
表74
6.套装
集是与列表非常相似的数据结构,不同之处在于集不允许重复的元素。 因此,几个特定的操作对集合有更多的意义:并集,交集和减法。 所有期望将键的值设为集合的命令SDIFF
“ S ”( SADD
, SDIFF
…) SDIFF
。 如果给定键不具有设置值,则所有与设置相关的命令都将WRONGTYPE Operation against a key holding the wrong kind of value
返回错误WRONGTYPE Operation against a key holding the wrong kind of value
。
命令 | SADD主要成员[成员…] |
描述 | 将一个或多个成员添加到集合中。 该命令返回添加到集合中的元素数。 |
例 | 假设密钥mykey 不存在,该命令将其创建为集合持有人并将成员1放入其中。 |
参考 | http://redis.io/commands/sadd |
表75
命令 | SCARD键 |
描述 | 获取集合中的成员数。 |
例 | 假设键mykey 存在并且拥有一组成员1、2、3,则该命令返回该集合中的成员总数(3) |
参考 | http://redis.io/commands/scard |
表76
命令 | SDIFF键[键…] |
描述 | 减去多组。 该命令返回由第一个集合和所有连续集合之间的差异引起的集合成员。 |
例 | 假设键mykey 存在并拥有一组成员1、2、3,并且mykey1 存在并拥有一组成员2、3、4,则命令返回1 ( mykey1 不存在的唯一成员)。 |
参考 | http://redis.io/commands/sdiff |
表77
命令 | SDIFFSTORE目标键[键…] |
描述 | 减去多个集合并将结果集合存储在键中。 |
例 | 请参阅SDIFF 命令 |
参考 | http://redis.io/commands/sdiffstore |
表78
命令 | SINTER键[键…] |
描述 | 与多个集合相交。 |
例 | 假设键mykey 存在并拥有一组成员1、2、3,而mykey1 存在并拥有一组成员2、3、4,则命令返回2、3 ( mykey 和mykey1 存在的成员)。 |
参考 | http://redis.io/commands/sinter |
表79
命令 | SINTERSTORE目标键[键…] |
描述 | 与多个集相交并将结果集存储在键中。 |
例 | 请参阅SINTER 命令 |
参考 | http://redis.io/commands/sinterstore |
表80
命令 | SISMEMBER关键成员 |
描述 | 确定给定值是否为集合的成员。 |
例 | 假设存在密钥mykey 并拥有一组成员1、2、3 ,则该命令为成员2返回1 (存在),为成员5返回0 (不存在)。 |
参考 | http://redis.io/commands/sismember |
表81
命令 | SMEMBERS密钥 |
描述 | 获取集合中的所有成员。 |
例 | 假设键mykey 存在并且拥有一组成员1、2、3 ,则该命令将返回这些成员。 |
参考 | http://redis.io/commands/smembers |
表82
命令 | SMOVE源目标成员 |
描述 | 将成员从一组移动到另一组。 如果成员已移动,则命令返回1 ,否则返回0。 |
例 | 假设键mykey 存在并拥有一组成员1、2、3 ,则命令将1移动到另一组,并由键mykey1 支持。 |
参考 | http://redis.io/commands/smove |
表83
命令 | SPOP密钥 |
描述 | 从集合中删除并返回一个随机成员。 |
例 | 请参阅LPOP 命令 |
参考 | http://redis.io/commands/spop |
表84
命令 | SRANDMEMBER键[count] |
描述 | 从集合中获取一个或多个随机成员。 |
例 | 假设键mykey 存在并且拥有一组成员1、2、3 ,则该命令将随机返回成员1、3 。 |
参考 | http://redis.io/commands/srandmember |
表85
命令 | SREM关键成员[成员…] |
描述 | 从集合中删除一个或多个成员。 |
例 | 请参阅LREM 命令 |
参考 | http://redis.io/commands/srem |
表86
命令 | SUNION键[键…] |
描述 | 添加多个集合。 |
例 | 假设键mykey 存在并拥有一组成员1、2、3,而mykey1 存在并拥有一组成员2、3、4,则命令返回1、2、3、4 (所有成员均来自mykey 和mykey1 )。 |
参考 | http://redis.io/commands/sunion |
表87
命令 | SUNIONSTORE目标键[键…] |
描述 | 添加多个集合并将结果集合存储在密钥中。 |
例 | 请参阅SUNION 命令 |
参考 | http://redis.io/commands/sunionstore |
表88
命令 | SSCAN键光标[MATCH模式] [COUNT个计数] |
描述 | 增量迭代set元素。 |
例 | 见SCAN 命令 |
参考 | http://redis.io/commands/sscan |
表89
7.排序集
集和排序集之间的区别在于,排序集不仅存储成员,而且还存储其分数(分数定义了排序集中的成员的排序顺序)。 所有期望将键的值设置为排序集的命令ZADD
' Z '( ZADD
, ZCARD
…) ZCARD
。 如果给定键不包含排序的集合值,则所有与排序的集合相关的命令都将WRONGTYPE Operation against a key holding the wrong kind of value
返回错误WRONGTYPE Operation against a key holding the wrong kind of value
。
命令 | ZADD关键分数成员[分数成员…] |
描述 | 将一个或多个成员添加到排序集中,或更新其分数(如果已存在)。 该命令返回添加到集合中的元素数。 |
例 | 假设键mykey 不存在,该命令将其创建为已排序的集合持有人,并将分数为1的成员value1放入其中。 |
参考 | http://redis.io/commands/zadd |
表90
命令 | ZCARD钥匙 |
描述 | 获取排序集中的成员数。 |
例 | 请参阅SCARD 命令 |
参考 | http://redis.io/commands/zcard |
表91
命令 | ZCOUNT键最小最大 |
描述 | 用给定值内的分数对排序集中的成员进行计数。 |
例 | 假设密钥mykey 存在和保存一组成员“VALUE1”,“VALUE2”,“ 值3”带有得分1,5,10分别命令返回数量的成员(1)用4和6之间的分数。 |
参考 | http://redis.io/commands/zcount |
表92
命令 | ZINCRBY键增量成员 |
描述 | 增加排序集中成员的分数。 该命令返回该成员的新分数。 |
例 | 假设键mykey 存在并且拥有一组具有分数的成员“ value1 ”,“ value2 ”,“ value3 ” 1,5,10分别指令增量得分构件“VALUE2”的由5和返回它的新得分(10)。 |
参考 | http://redis.io/commands/zincrby |
表93
命令 | ZINTERSTORE目标数字键键[key…] [WEIGHTS weight [weight…]] [AGGREGATE SUM | MIN | MAX] |
描述 | 与多个排序集相交并将结果排序后的集存储在新键中。 |
例 | 请参阅SINTER 命令 |
参考 | http://redis.io/commands/zinterstore |
表94
命令 | ZRANGE键启动停止[WITHSCORES] |
描述 | 按索引返回排序集中的成员范围。 索引从0开始。 |
例 | 假设键mykey 存在并且拥有一组具有分数的成员“ value1 ”,“ value2 ”,“ value3 ” 1、5、10分别返回前两个成员(索引为0和1 )。 |
参考 | http://redis.io/commands/zrange |
表95
命令 | ZRANGEBYSCORE键最小值最大值[WITHSCORES] [LIMIT偏移计数] |
描述 | 按分数返回排序集中的成员范围。 |
例 | 假设键mykey 存在并且拥有一组具有分数的成员“ value1 ”,“ value2 ”,“ value3 ” 1,5,10分别命令返回构件“VALUE2”作为一个与图4和6之间的分数。 |
参考 | http://redis.io/commands/zrangebyscore |
表96
命令 | ZRANK关键成员 |
描述 | 确定排序集中的成员的索引。 请注意,索引从0开始。 |
例 | 假设键mykey 存在并且拥有一组具有分数的成员“ value1 ”,“ value2 ”,“ value3 ” 1,5,10分别命令返回1作为成员“VALUE2”的索引。 |
参考 | http://redis.io/commands/zrank |
表97
命令 | ZREM关键成员[成员…] |
描述 | 从排序集中删除一个或多个成员。 |
例 | 请参阅SREM 命令 |
参考 | http://redis.io/commands/zrem |
表98
命令 | ZREMRANGEBYRANK键启动停止 |
描述 | 删除给定索引内排序集中的所有成员。 索引从0开始。该命令返回成功删除的成员数。 |
例 | 假设键mykey 存在并且拥有一组具有分数的成员“ value1 ”,“ value2 ”,“ value3 ” 1,5,10分别命令返回(2)及排除第一两个成员(具有索引0和1)。 |
参考 | http://redis.io/commands/zremrangebyrank |
表99
命令 | ZREMRANGEBYSCORE键min max |
描述 | 在给定分数内删除排序集中的所有成员。 该命令返回成功删除的成员数。 |
例 | 假设键mykey 存在并且拥有一组具有分数的成员“ value1 ”,“ value2 ”,“ value3 ” 1,5,10分别该命令将返回(1)及排除构件“VALUE2”(与图4和6之间的分数)。 |
参考 | http://redis.io/commands/zremrangebyscore |
表100
命令 | ZREVRANGE键启动停止[WITHSCORES] |
描述 | 按索引返回排序集中的一组成员,其得分从高到低排序。 |
例 | 请参阅ZRANGE 命令 |
参考 | http://redis.io/commands/zrevrank |
表101
命令 | ZREVRANGEBYSCORE键max最小值[WITHSCORES] [LIMIT偏移量] |
描述 | 按分数返回排序集中的成员范围,分数从高到低排序。 |
例 | 请参阅ZRANGEBYSCORE 命令 |
参考 | http://redis.io/commands/zrevrangebyscore |
表102
命令 | ZREVRANK关键成员 |
描述 | 确定成员在排序集中的索引,其得分从高到低排序。 |
例 | 请参阅ZRANK 命令 |
参考 | http://redis.io/commands/zrevrank |
表103
命令 | ZSCORE关键成员 |
描述 | Gets the score associated with the given member in a sorted set. |
例 | Assuming the key mykey exists and holds a set of members “ value1 ”, “ value2 ”, “ value3 ” with scores 1, 5, 10 respectively, the command returns (5) as a score for a member “ value2 ”. |
参考 | http://redis.io/commands/zscore |
Table 104
命令 | ZUNIONSTORE destination numkeys key [key …] [WEIGHTS weight [weight …]] [AGGREGATE SUM|MIN|MAX] |
描述 | Adds multiple sorted sets and stores the resulting sorted set in a new key. |
例 | See SUNION command |
参考 | http://redis.io/commands/zunionstore |
Table 105
命令 | ZSCAN key cursor [MATCH pattern] [COUNT count] |
描述 | Incrementally iterates sorted sets elements and associated scores. |
例 | See SCAN command |
参考 | http://redis.io/commands/zscan |
Table 106
8. Publish / Subscribe
Redis supports out-of-box publish / subscribe messaging style using its powerful data structures as a queue. If you need very simple, fast and easy to use pub/sub messaging solution, Redis is definitely a candidate to consider. For this section we need two running instances of redis-cli
, one will be publisher
(producer) and another will be subscriber
(consumer).
命令 | PSUBSCRIBE pattern [pattern …] |
描述 | Listens for messages published to channels matching the given patterns. |
例 | The following example subscribes the client to listen for any messages from all channels. |
参考 | http://redis.io/commands/psubscribe |
Table 107
命令 | PUBSUB subcommand [argument [argument …]] |
描述 | Inspects the state of the Pub/Sub subsystem. It is an introspection command and is composed of subcommands that are documented separately. |
例 | The following example inspects current active channels. |
参考 | http://redis.io/commands/pubsub |
Table 108
命令 | PUBLISH channel message |
描述 | Posts a message to a channel. |
例 | The following example publishes a message to channel mychannel . And subscriber (see PSUBSCRIBE command) receives it. |
参考 | http://redis.io/commands/publish |
Table 109
命令 | PUNSUBSCRIBE [pattern [pattern …]] |
描述 | Stops listening for messages posted to channels matching the given. 模式 |
参考 | http://redis.io/commands/punsubscribe |
Table 110
命令 | SUBSCRIBE channel [channel …] |
描述 | Listens for messages published to the given channels. |
例 | See PSUBSCRIBE |
参考 | http://redis.io/commands/subscribe |
Table 111
命令 | UNSUBSCRIBE [channel [channel …]] |
描述 | Stops listening for messages posted to the given channels. |
参考 | http://redis.io/commands/unsubscribe |
Table 112
9. Transactions
Redis supports the powerful notion of transactions. It's not exactly the same as we used to (for example, when dealing with relational databases) but still very useful feature. The way transactions work in Redis could be described by this flow:
-
WATCH
is used to provide a check-and-set (CAS) behavior to transactions: watched keys are monitored in order to detect changes against them. If at least one watched key is modified before theEXEC
command, the whole transaction aborts and fails. -
MULTI
starts the transaction - At this point the user can issue multiple commands which will be queued
-
EXEC
executes all commands -
DISCARD
aborts the transaction
Very important to notice that Redis commands can fail during a transaction, but still Redis will execute the rest of the transaction instead of rolling back. For more comprehensive details please refer to http://redis.io/topics/transactions .
命令 | DISCARD |
描述 | Discards all commands issued after MULTI. |
参考 | http://redis.io/commands/discard |
Table 113
命令 | EXEC |
描述 | Executes all commands issued after MULTI. |
参考 | http://redis.io/commands/exec |
Table 114
命令 | MULTI |
描述 | Marks the start of a transaction block. |
参考 | http://redis.io/commands/multi |
Table 115
命令 | UNWATCH |
描述 | Forgets about all watched keys. |
参考 | http://redis.io/commands/unwatch |
Table 116
命令 | WATCH key [key …] |
描述 | Watches the given keys to determine execution of the MULTI/EXEC block. |
参考 | http://redis.io/commands/watch |
Table 117
10. Scripting
Redis support server-side scripting using Lua
programming language ( http://www.lua.org/ ). This section just goes through the set of commands related to scripts manipulation. It's quite a large topic worth a whole tutorial.
命令 | EVAL script numkeys key [key …] arg [arg …] |
描述 | Executes a Lua script server side. |
参考 | http://redis.io/commands/eval |
Table 118
命令 | EVALSHA sha1 numkeys key [key …] arg [arg …] |
描述 | Executes a Lua script server side. |
参考 | http://redis.io/commands/evalsha |
Table 119
命令 | SCRIPT EXISTS script [script …] |
描述 | Checks existence of scripts in the script cache. |
参考 | http://redis.io/commands/script-exists |
Table 120
命令 | SCRIPT FLUSH |
描述 | Removes all the scripts from the script cache. |
参考 | http://redis.io/commands/script-flush |
Table 121
命令 | SCRIPT KILL |
描述 | Kills the script currently in execution. |
参考 | http://redis.io/commands/script-kill |
Table 122
命令 | SCRIPT LOAD script |
描述 | Loads the specified Lua script into the script cache. |
参考 | http://redis.io/commands/script-load |
Table 123
11. Connection
This small set of command allows to manage some connection (session) specific parameters like authentication and database to work on.
命令 | AUTH password |
描述 | Authenticates to the server. |
参考 | http://redis.io/commands/auth |
Table 124
命令 | ECHO message |
描述 | Echoes the given string. |
参考 | http://redis.io/commands/echo |
Table 125
命令 | PING |
描述 | Pings the server. On success, command returns PONG . |
参考 | http://redis.io/commands/ping |
Table 126
命令 | QUIT |
描述 | Closes the connection. |
参考 | http://redis.io/commands/quit |
Table 127
命令 | SELECT index |
描述 | Changes the selected database for the current connection. |
参考 | http://redis.io/commands/select |
Table 128
12. Server
This class of commands is related to Redis server internals and manages persistence, replication, configuration and connections. Some commands will be used later on in following parts of the tutorial.
命令 | BGREWRITEAOF |
描述 | Asynchronously rewrites the append-only file. |
参考 | http://redis.io/commands/bgrewriteaof |
Table 129
命令 | BGSAVE |
描述 | Asynchronously saves the dataset to disk. |
参考 | http://redis.io/commands/bgsave |
Table 130
命令 | CLIENT KILL ip:port |
描述 | Kills the connection of a client. The IP address and port could be obtained from CLIENT LIST command. |
参考 | http://redis.io/commands/client-kill |
Table 131
命令 | CLIENT LIST |
描述 | Gets the list of client connections. |
例 | Example of command's result for 2 connected clients (the output is clipped a bit). |
参考 | http://redis.io/commands/client-list |
Table 132
命令 | CLIENT GETNAME |
描述 | Gets the current connection name. |
例 | The command returns the name of current connection, myconn (previously set by CLIENT SETNAME command). |
参考 | http://redis.io/commands/client-getname |
Table 133
命令 | CLIENT SETNAME connection-name |
描述 | Sets the current connection name. |
例 | The command sets the name of current connection to myconn . |
参考 | http://redis.io/commands/client-setname |
Table 134
命令 | CONFIG GET parameter |
描述 | Gets the value of a configuration parameter. |
参考 | http://redis.io/commands/config-get |
Table 135
命令 | CONFIG REWRITE |
描述 | Rewrites the configuration file with the in memory configuration. |
参考 | http://redis.io/commands/config-rewrite |
Table 136
命令 | CONFIG SET parameter value |
描述 | Sets a configuration parameter to the given value. |
参考 | http://redis.io/commands/config-set |
Table 137
命令 | CONFIG RESETSTAT |
描述 | Resets the stats returned by INFO. |
参考 | http://redis.io/commands/config-resetstat |
Table 138
命令 | DBSIZE |
描述 | Returns the number of keys in the selected database. |
参考 | http://redis.io/commands/dbsize |
Table 139
命令 | DEBUG OBJECT key |
描述 | Gets debugging information about a key. This command includes the results of OBJECT command. |
参考 | http://redis.io/commands/debug-object |
Table 140
命令 | DEBUG SEGFAULT |
描述 | Makes the server crash. |
参考 | http://redis.io/commands/debug-segfault |
Table 141
命令 | FLUSHALL |
描述 | Removes all keys from all databases. |
参考 | http://redis.io/commands/flushall |
Table 142
命令 | FLUSHDB |
描述 | Removes all keys from the current database. |
参考 | http://redis.io/commands/flushdb |
Table 143
命令 | INFO [section] |
描述 | Gets information and statistics about the server. |
参考 | http://redis.io/commands/info |
Table 144
命令 | LASTSAVE |
描述 | Gets the UNIX time stamp of the last successful save to disk. |
参考 | http://redis.io/commands/lastsave |
Table 145
命令 | MONITOR |
描述 | Listens for all requests received by the server in real time. |
参考 | http://redis.io/commands/monitor |
Table 146
命令 | SAVE |
描述 | Synchronously saves the dataset to disk |
参考 | http://redis.io/commands/save |
Table 147
命令 | SHUTDOWN [NOSAVE] [SAVE] |
描述 | Synchronously saves the dataset to disk and then shuts down the server. |
参考 | http://redis.io/commands/shutdown |
Table 148
命令 | SLAVEOF host port |
描述 | Makes the server a slave of another instance, or promotes it as master. We will see this command in action later on in the tutorial. |
参考 | http://redis.io/commands/slaveof |
Table 149
命令 | SLOWLOG subcommand [argument] |
描述 | Manages the Redis slow queries log. |
参考 | http://redis.io/commands/slowlog |
Table 150
命令 | SYNC |
描述 | Internal command used for replication. |
参考 | http://redis.io/commands/sync |
Table 151
命令 | TIME |
描述 | Return the current server time. |
参考 | http://redis.io/commands/time |
Table 152
翻译自: https://www.javacodegeeks.com/2015/09/redis-commands-using-redis-command-line.html