String
对key的操作命令
keys * //查看当前库所有key
exists key //判断某个key是否存在
type key //查看key是什么类型
del key //删除指定的key数据
expire key 10 //10秒钟:为给定的key设置过期时间
ttl key //查看还有多少秒过期,-1表示永不过期,-2表示已过期。
select 1 //选择1号库
dbsize //查看当前数据库的key的数量
flushdb //清空当前库
flushall //通杀全部库
set操作
set <key> <value> //添加键值对
*NX: 当数据库中key不存在时,可以将key-value添加数据库
*XX: 当数据库中key存在时,可以将key-value添加数据库,与NX参数互斥
*EX: key的超时秒数
*PX: key的超时毫秒数,与EX互斥
mset <key1><value1><key2><value2>... //同时设置一个或多个key-value键值对
msetnx <key1><value1><key2><value2>.... //同时设置一个或多个key-value对,当且仅当所有给定key都不存在。
setex <key><过期时间><value> //设置键值的同时,设置过期时间,单位秒。
get操作
get <key> //查询对应键值
mget <key1><key2><key3>.... //同时获取一个或多个 value
其他:
get k1
append <key> <value> //将给定的<value>追加到原值的末尾
strlen <key> //获得值的长度
incr <key> //将key中存储的数字值增1.只能对数字值操作,如果为空,新增值为1
decr <key> //将key中存储的数字值减1,只能对数字值操作,如果为空,新增值为-1
incrby / decrby <key> <步长> //将key中存储的数字值增减,自定义步长。
setrange <key> <起始位置> <value> //用覆写所存储的字符串值,从<起始位置>开始(索引从0开始)
getrange <key><起始位置><结束位置> //获得值的范围,类似java中的substring,前包,后包
getset <key><value> //以新换旧,设置了新值同时获得旧值。
Hash
HGET
命令语法:HGET key field
命令用途:返回哈希表键 key 中给定域 field 的值。
时间复杂度:O(1)
HSET
命令语法:HSET key field value
命令用途:将哈希表键 key 中的域 field 的值设为 value 。
时间复杂度:O(1)
HSETNX
命令语法:HSETNX key field value
命令用途:当且仅当键 key 中的域 field 不存在时,将域 field 的值设为 value 。
时间复杂度:O(1)
HLEN
命令语法:HLEN key
命令用途:返回哈希表键 key 中域的数量。
时间复杂度:O(1)
HINCRBY
命令语法:HINCRBY key field increment
命令用途:将哈希表键 key 中的域 field中储存的数字值增加 increment 。
时间复杂度:O(1)
HINCRBYFLOAT
命令语法:HINCRBYFLOAT key field increment
命令用途:为键 key 中的域 field 中储存的值加上浮点数增量 increment 。
时间复杂度:O(1)
HMGET
命令语法:HMGET key field1 [field2 ...]
命令用途:返回哈希表键 key 中,一个或多个给定域的值。
时间复杂度:O(N), N 为给定域的数量。
HMSET
命令语法:HMSET key field1 value1 [field2 value2 ...]
命令用途:同时为哈希表键 key 设置一个或多个 key-value 键值对。
时间复杂度:O(N), N 为 field-value 对的数量。
HKEYS
命令语法:HKEYS key
命令用途:返回哈希表键 key 中的所有域。
时间复杂度:O(N), N 为哈希表中域的数量。
HVALS
命令语法:HVALS key
命令用途:返回哈希表键 key 中所有域的值。
时间复杂度:O(N), N 为哈希表中域的数量。
HGETALL
命令语法:HGETALL key
命令用途:返回哈希表键 key 中,所有的域和值。
时间复杂度:O(N), N 为哈希表中域的数量。
HEXISTS
命令语法:HEXISTS key field
命令用途:检验哈希表键 key 中,给定域 field 是否存在。
时间复杂度:O(1)
HDEL
命令语法:HDEL key field1 [field2 ...]
命令用途:删除哈希表键 key 中的一个或多个域
时间复杂度:O(N), N 为要删除的域的数量。
HSCAN
命令语法:HSCAN key cursor [MATCH pattern] [COUNT count]
命令用途:迭代哈希表键 key 中的键值对。
命令参数:
MATCH pattern:只返回和给定模式 pattern 相匹配的域。
COUNT count:每次迭代从数据集返回 count 个元素。
时间复杂度: O(N) , N 为返回元素的数量。
hscan book 0 match *:price count 2 // 该命令通常会无视 COUNT 选项指定的值
List
BLPOP
BLPOP key1 timeout
移出并获取列表的第一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
BPROP
BPROP key1[key2] timeout
移出并获取列表的最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
BRPOPLPUSH
BRPOPLPUSH source destination timeout
从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它;
如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
LINDEX
LINDEX key index
通过索引获取列表中的元素
LINSERT
LINSERT key BEFORE|AFTER pivot value
在列表的元素前或者后插入元素
LLEN
LLEN key
返回列表 key 的长度。
如果 key 不存在,则 key 被解释为一个空列表,返回 0 .
如果 key 不是列表类型,返回一个错误。
LPOP
LPOP key
移除并返回列表 key 的头元素。
LPUSH
LPUSH key value1 [value2]
将一个或多个值 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 存在但不是列表类型时,返回一个错误。
LPUSHX
LPUSHX key value
将值 value 插入到列表 key 的表头,当且仅当 key 存在并且是一个列表
和 LPUSH key value [value …]
命令相反,当 key 不存在时, LPUSHX 命令什么也不做。
LRANGE
LRANGE key start stop
返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定。
下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1
表示列表的第二个元素,以此类推。
你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
LREM
LREM key count value
根据参数 count 的值,移除列表中与参数 value 相等的元素。
count 的值可以是以下几种:
count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 。
count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值。
count = 0 : 移除表中所有与 value 相等的值。
LSET
LSET key index value
将列表 key 下标为 index 的元素的值设置为 value 。
当 index 参数超出范围,或对一个空列表( key 不存在)进行 LSET 时,返回一个错误。
LTRIM
LTRIM key start stop
对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,
不在指定区间之内的元素都将被删除。
举个例子,执行命令 LTRIM list 0 2 ,表示只保留列表 list 的前三个元素,其余元素全部删除。
下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1
表示列表的第二个元素,以此类推。
你也可以使用负数下标,以 -1 表示列表的最后一个元素,
-2 表示列表的倒数第二个元素,以此类推。
当 key 不是列表类型时,返回一个错误。
RPOP
RPOP key
移除并返回列表 key 的尾元素
RPOPLPUSH
RPOPLPUSH source destination
命令 RPOPLPUSH 在一个原子时间内,执行以下两个动作:
将列表 source 中的最后一个元素(尾元素)弹出,并返回给客户端。
将 source 弹出的元素插入到列表 destination ,作为 destination 列表的的头元素。
举个例子,你有两个列表 source 和 destination , source 列表有元素 a, b, c , destination
列表有元素 x, y, z ,执行 RPOPLPUSH source destination 之后, source 列表包含元素 a, b
, destination 列表包含元素 c, x, y, z ,并且元素 c 会被返回给客户端。
如果 source 不存在,值 nil 被返回,并且不执行其他动作。
如果 source 和 destination
相同,则列表中的表尾元素被移动到表头,并返回该元素,
可以把这种特殊情况视作列表的旋转(rotation)操作。
RPUSH
RPUSH key value1 [value2]
将一个或多个值 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 存在但不是列表类型时,返回一个错误。
RPUSHX
RPUSHX key value
将值 value 插入到列表 key 的表尾,当且仅当 key 存在并且是一个列表。
和 RPUSH key value [value …] 命令相反,当 key 不存在时, RPUSHX 命令什么也不做。
Set
SADD
SADD key member1 [member2] 添加成员
向集合添加一个或多个成员:sadd 命令将一个或多个成员元素加入到集合中,
已经存在于集合的成员元素将被忽略。
假如集合 key 不存在,则创建一个只包含添加的元素作成员的集合。
当集合 key 不是集合类型时,返回一个错误。
返回值:被添加到集合中的新元素的数量,不包括被忽略的元素。
SMEMBERS
SMEMBERS key 查询集合的成员
返回集合中的所有成员:smembers 命令返回集合中的所有的成员。 不存在的集合 key 被视为空集合。
返回值:集合中的所有成员
SCARD
SCARD key 查询集合成员数量
获取集合的成员数:
返回值:集合的数量。 当集合 key 不存在时,返回 0 。
SISMEMBER
SISMEMBER key member 判断某元素是否存在
判断 member 元素是否是集合 key 的成员
返回值:如果成员元素是集合的成员,返回 1 。
如果成员元素不是集合的成员,或 key 不存在,返回 0 。
SRANDMEMBER
SRANDMEMBER key [count] 随机返回集合里面的成员
返回集合中一个或多个随机数
返回值:只提供集合 key 参数时,返回一个元素;如果集合为空,返回 nil 。
如果提供了 count 参数,那么返回一个数组;如果集合为空,返回空数组。
SMOVE
SMOVE source destination member 将某元素从一个集合移动到另外一个集合
将 member 元素从 source 集合移动到 destination 集合。
返回值:如果成员元素被成功移除,返回 1 。
如果成员元素不是 source 集合的成员,并且没有任何操作对 destination 集合执行,那么返回 0 。
SPOP
SPOP key 随机删除一个元素
移除并返回集合中的一个随机元素。
返回值:被移除的随机元素。 当集合不存在或是空集时,返回 nil 。
SREM
SREM key member1 [member2] 删除指定元素
移除集合中一个或多个成员。
返回值:被成功移除的元素的数量,不包括被忽略的元素
SDIFF
SDIFF key1 [key2] 求集合差集
返回给定所有集合的差集
返回值:包含差集成员的列表。
Redis sdiff 命令返回给定集合之间的差集。不存在的集合 key 将视为空集。
差集的结果来自前面的 FIRST_KEY ,而不是后面的 OTHER_KEY1,
也不是整个 FIRST_KEY OTHER_KEY1…OTHER_KEYN 的差集。
key1 = {a,b,c,d}
key2 = {c}
key3 = {a,c,e}
SDIFF key1 key2 key3 = {b,d}
SDIFFSTORE
SDIFFSTORE destination key1 [key2] 差集存储到set
返回给定所有集合的差集并存储在 destination 中.
Redis sdiffstore 命令将给定集合之间的差集存储在指定的集合中。
如果指定的集合 key 已存在,则会被覆盖。
SINTER
SINTER key1 [key2] 交集
返回给定所有集合的交集
Redis sinter 命令返回给定所有给定集合的交集。 不存在的集合 key 被视为空集。
当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。
返回值:交集成员的列表。
SINTERSTORE
SINTERSTORE destination key1 [key2] 交集存储到set
返回给定所有集合的交集并存储在 destination 中.
Redis sinterstore 命令将给定集合之间的交集存储在指定的集合中。
如果指定的集合已经存在,则将其覆盖。
返回值:返回存储交集的集合的元素数量。
SUNION
SUNION key1 [key2] 并集
返回所有给定集合的并集
Redis sunion 命令返回给定集合的并集。不存在的集合 key 被视为空集。
返回值:并集成员的列表
SUNIONSTORE
SUNIONSTORE destination key1 [key2] 并集存储到set
所有给定集合的并集存储在 destination 集合中.
Redis sunionstore 命令将给定集合的并集存储在指定的集合 destination 中。
如果 destination 已经存在,则将其覆盖。
返回值:结果集中的元素数量。
Zset
zadd
zadd key score member [score member…]
将一个或多个 member 元素及其 score 值加入到有序集合 key 中,
如果 member存在集合中,则更新值;score 可以是整数或浮点数.
zrem
zrem key member [member…]
删除有序集合 key 中的一个或多个成员,不存在的成员被忽略,
返回值:被成功删除的成员数量,不包括被忽略的成员。
zcard
zcard key
获取有序集 key 的元素成员的个数
返回值:key 存在返回集合元素的个数, key 不存在,返回 0
zrange
zrange key start end
查询有序集合,指定区间的内的元素。集合成员按 score 值从小到大来排序。
start,stop 都是从 0 开始。0 是第一个元素,1 是第二个元素,依次类推。
以 -1 表示最后一个成员,-2 表示倒数第二个成员。
WITHSCORES 选项让 score 和 value 一同返回。返回值:自定区间的成员集合.
zrevrange
zrevrange key start stop [WITHSCORES]
返回有序集 key 中,指定区间内的成员。其中成员的位置按 score 值递减(从大到小) 来排列。
其它同 zrange 命令。
zrangebyscore
zrangebyscore key mix max
获取有序集 key 中,所有 score 值介于 min 和 max 之间(包括 min 和 max)的成员,有序成员是按递增(从小到大)排序。
min ,max 是包括在内 , 使用符号 ( 表示不包括。 min , max 可以使用 -inf ,+inf 表示最小和最大.
limit 用来限制返回结果的数量和区间。
withscores 显 示 score 和 value
返回值:指定区间的集合数据
zrevrangebyscore
zrevrangebyscore key max min [WITHSCORES ] [LIMIT offset count]
返回有序集 key 中, score 值介于 max 和 min 之间(默认包括等于 max 或 min )的所有的成员。
有序集成员按 score 值递减(从大到小)的次序排列。其他同 zrangebyscore.
zcount
zcount key min max
返回有序集 key 中, score 值在 min 和 max 之间(默认包括 score 值等于 min 或 max )的成员的数量
zrank
zrank key member
在获取指定有序集合中指定元素的排名(排名从0开始)
zscore
zscore key member
获取指定有序集合中指定元素的分数