Redis数据操作命令

Redis Key(键)
DEL key 
该命令用于在 key 存在时删除 key。

DUMP key 
序列化给定 key ,并返回被序列化的值。

EXISTS key 
检查给定 key 是否存在。

expire key seconds 
为给定 key 设置过期时间,以秒计。

expireat key timestaps 
为给定 key 设置过期时间,以UNIX 时间戳(unix timestamp)计。

PEXPIRE key milliseconds  
设置 key 的过期时间以毫秒计。

PEXPIREAT key milliseconds-timestamp  
设置 key 过期时间的时间戳(unix timestamp) 以毫秒计。

KEYS pattern 
查找当前数据库所有符合给定模式( pattern)的 key 。

MOVE key db 
将当前数据库的 key 移动到给定的数据库db当中。

PERSIST key 
移除key的过期时间,key 将持久保持。

PTTL key 
以毫秒为单位返回 key 的剩余的过期时间。

TTL key 
以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。

RANDOMKEY 
从当前数据库中随机返回一个 key 。

RENAME key newkey 
修改 key 的名称。

RENAMENX key newkey  
修改 key 的名称,仅当 newkey 不存在时,将 key 改名为 newkey 。

TYPE key 
返回 key 所储存的值的类型。

SCAN cursor [MATCH pattern] [COUNT count]
用于迭代数据库中的数据库键,cursor - 游标;pattern - 匹配的模式;count - 指定从数据集里返回多少元素,默认为10。
以非阻塞的方式实现key值的查找,绝大多数情况下是可以替代keys命令的,可选性更强
SCAN 命令是一个基于游标的迭代器,每次被调用之后, 都会向用户返回一个新的游标, 用户在下次迭代时需要使用这个新游标作为 SCAN 命令的游标参数, 以此来延续之前的迭代过程。
SCAN 返回一个包含两个元素的数组, 第一个元素是用于进行下一次迭代的新游标, 而第二个元素则是一个数组, 这个数组中包含了所有被迭代的元素。如果新游标返回 0 表示迭代已结束。
zscan 遍历 zset 集合元素: ZSCAN key cursor [MATCH pattern] [COUNT count]
hscan 遍历 hash 字典的元素:HSCAN key cursor [MATCH pattern] [COUNT count]
sscan 遍历 set 集合的元素:SSCAN key cursor [MATCH pattern] [COUNT count]
例子:
	127.0.0.1:6379[14]> keys *
	1) "dyz2"
	2) "dyz1"
	3) "dyz"
	4) "salary"
	5) "site"
	127.0.0.1:6379[14]> scan 0  match "*" count 1
	1) "4"
	2) 1) "dyz2"
	127.0.0.1:6379[14]> scan 4  match "*" count 1
	1) "6"
	2) 1) "dyz1"
	127.0.0.1:6379[14]> scan 6  match "*" count 1
	1) "1"
	2) 1) "salary"
	127.0.0.1:6379[14]> scan 1  match "*" count 1
	1) "7"
	2) 1) "dyz"
	127.0.0.1:6379[14]> scan 7  match "*" count 1
	1) "0"
	2) 1) "site"
	127.0.0.1:6379[14]> scan 0  match "*" count 1
Redis 字符串(String)
SET key value 
设置指定 key 的值

MSET key value [key value ...] 
同时设置一个或多个 key-value 对。

SETEX key seconds value 
设置指定 key 的值 ,并将 key 的过期时间设为 seconds (以秒为单位)。

PSETEX key milliseconds value 
设置指定 key 的值 ,并将 key 的过期时间设为 milliseconds (以毫秒为单位)。

SETNX key value  
只有在 key 不存在时设置 key 的值。

MSETNX key value [key value ...]  
同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。

SETRANGE key offset value  
用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。

APPEND key value  
如果 key 已经存在并且是一个字符串, APPEND 命令将指定的 value 追加到该 key 原来值(value)的末尾。key不存在,则直接设置创建 key ,并指定值为value。
	
GET key 
获取指定 key 的值

GETSET key value  
将给定 key 的值设为 value ,并返回 key 的旧值(old value)。

MGET key1 [key2..]  
获取所有(一个或多个)给定 key 的值。

GETRANGE key start end  
返回 key 中字符串值的子字符

GETBIT key offset  
对 key 所储存的字符串值,获取指定偏移量上的位(bit)。

SETBIT key offset value  
对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。

STRLEN key  
返回 key 所储存的字符串值的长度。

INCR key  
将 key 中储存的数字值增一。

INCRBY key increment  
将 key 所储存的值加上给定的增量值(increment) 。

INCRBYFLOAT key increment  
将 key 所储存的值加上给定的浮点增量值(increment) 。

DECR key 
将 key 中储存的数字值减一。

DECRBY key decrement  
将 key 所储存的值减去给定的减量值(decrement) 。

Redis 哈希(Hash)

Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。

Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。

HSET key field value  将哈希表 key 中的字段 field 的值设为 value 。

HMSET key field1 value1 [field2 value2 ]  同时将多个 field-value (-)对设置到哈希表 key 中。

HSETNX key field value  只有在字段 field 不存在时,设置哈希表字段的值。

HGETALL key  获取在哈希表中指定 key 的所有字段和值

HVALS key  获取哈希表中所有值。

HKEYS key  获取所有哈希表中的字段

HLEN key  获取哈希表中字段的数量

HGET key field  获取存储在哈希表中指定字段的值。

HMGET key field1 [field2]  获取所有给定字段的值

HEXISTS key field  查看哈希表 key 中,指定的字段是否存在。

HINCRBY key field increment  为哈希表 key 中的指定字段的整数值加上增量 increment 。

HINCRBYFLOAT key field increment  为哈希表 key 中的指定字段的浮点数值加上增量 increment 。

HDEL key field1 [field2]  删除一个或多个哈希表字段

HSCAN key cursor [MATCH pattern] [COUNT count]  迭代哈希表中的键值对。
Redis 列表(List)

Redis列表是简单的字符串列表,元素可重复,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。

LPUSH key value1 [value2]  
将一个或多个值插入到列表头部

RPUSH key value1 [value2]  
将一个或多个值插入到列表尾部

LPUSHX key value  
将一个值插入到已存在的列表头部,列表不存在时操作无效。

RPUSHX key value  
将一个值插入到已存在的列表尾部,列表不存在时操作无效。

LPOP key  
移出并获取列表的第一个元素

RPOP key  
移除并获取列表的最后一个元素

BLPOP key1 timeout  
移出并获取列表的第一个元素, 如果列表有元素立即弹出,否则会阻塞列表直到等待超时或发现可弹出元素为止。

BRPOP key1  timeout  
移出并获取列表的最后一个元素, 如果列表有元素立即弹出,否则会阻塞列表直到等待超时或发现可弹出元素为止。

RPOPLPUSH LIST1 ANOTHER_LIST 
命令用于移除列表的最后一个元素,并将该元素添加到另一个列表头部并返回	。

BRPOPLPUSH LIST1 ANOTHER_LIST TIMEOUT 
从列表中取出最后一个元素,并插入到另外一个列表的头部; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

LINDEX key index 
通过索引获取列表中的元素

LSET key index value  通过索引设置列表元素的值

LINSERT key BEFORE|AFTER value(目标元素) value(插入元素) 
在列表左边起第一个的目标元素前或者后插入元素。当指定元素不存在于列表中时,不执行任何操作。

LLEN key  
获取列表长度

LRANGE key start stop
返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 
你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

LREM key count value  
根据参数 COUNT 的值,移除列表中与参数 VALUE 相等的元素。
count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。
count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。
count = 0 : 移除表中所有与 VALUE 相等的值

LTRIM key start stop 
对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除

Redis 集合(Set)

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

SADD key member1 [member2]
向集合添加一个或多个成员

SMEMBERS key
返回集合中的所有成员

SCARD key
获取集合的成员数

SISMEMBER key member
判断 member 元素是否是集合 key 的成员

SREM KEY MEMBER1..MEMBERN
用于移除集合中的一个或多个成员元素,不存在的成员元素会被忽略。

SMOVE source destination member
将 member 元素从 source 集合移动到 destination 集合

SPOP key ... keyN
用于移除集合中的指定 key 的一个或多个随机元素,移除后会返回移除的元素。

SRANDMEMBER KEY [count]
返回随机count个元素,而不对集合进行任何改动。
如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同。如果 count 大于等于集合基数,那么返回整个集合。
如果 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为 count 的绝对值。

SDIFF key1 [key2] ... [keyN]
返回第一个集合与其他集合之间的差异,也可以认为说第一个集合中独有的元素。不存在的集合 keyN 将视为空集。
差集的结果来自前面的 key1,而不是后面的 key2 .. keyN。

SDIFFSTORE newKey_KEY KEY1 [key2] ... [keyN]
将给定集合之间的差集存储在指定的集合newKey中。如果指定的集合 key 已存在,则会被覆盖。

SINTER key1 [key2] ... [keyN] 
返回给定所有给定集合的交集。 不存在的集合 key 被视为空集。 当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。

SINTERSTORE newKey key1 [key2] ... [keyN] 
将给定集合之间的交集存储在指定的集合newKey中。如果指定的集合已经存在,则将其覆盖。

SUNION key1 [key2] ... [keyN] 
返回给定集合的并集。不存在的集合 key 被视为空集。

SUNIONSTORE newKey key1 [key2] ... [keyN] 
将给定集合的并集存储在指定的集合 newKey 中。如果 destination 已经存在,则将其覆盖。

Redis 有序集合(sorted set)

Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是唯一的,但分数(score)却可以重复。

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

ZADD key score1 member1 [score2 member2]
用于将一个或多个成员元素及其分数值(score)加入到有序集当中。
如果某个成员已经是有序集的成员,那么更新这个成员的分数值,并通过重新插入这个成员元素,来保证该成员在正确的位置上。
分数值可以是整数值或双精度浮点数。如果有序集合 key 不存在,则创建一个空的有序集并执行 ZADD 操作。

ZCARD key
获取有序集合的成员数

ZCOUNT key min max
用于计算有序集合中指定分数(score)区间的成员数量。
例子:
	127.0.0.1:6379[14]> zadd dyz 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9
	(integer) 0
	127.0.0.1:6379[14]> ZCOUNT dyz 0 1
	(integer) 9
	127.0.0.1:6379[14]> ZCOUNT dyz 1 2
	(integer) 0

ZLEXCOUNT KEY [MIN [MAX
用于计算有序集合中指定字典区(member)间内成员数量。
例子:
	127.0.0.1:6379[14]> zadd dyz1 0 a 0 b 0 z 0 c 0 u
	(integer) 0
	127.0.0.1:6379[14]> ZLEXCOUNT dyz1 [a [z
	(integer) 5
	
ZINCRBY key increment member
对有序集合中指定成员的分数加上增量 increment
可以通过传递一个负数值 increment ,让分数减去相应的值,比如 ZINCRBY key -5 member ,就是让 member 的 score 值减去 5 。
当 key 不存在,或member不是 key 的成员时, ZINCRBY key increment member 等同于 ZADD key increment member 

ZINTERSTORE destination numkeys key [key ...]
计算给定的一个或多个有序集的交集,其中给定 key 的数量必须以 numkeys 参数指定,并将该交集(结果集)储存到 destination 。
默认情况下,结果集中某个成员的分数值是所有给定集下该成员分数值之和。[AGGREGATE SUM|MIN|MAX]

ZRANGE key start stop [WITHSCORES]
返回有序集中,指定区间内的成员。
其中成员的位置按分数值递增(从小到大)来排序。
具有相同分数值的成员按字典序(lexicographical order )来排列
[WITHSCORES]:同时返回分数值(score),不加参数只返回成员元素(member)

ZREVRANGE key start stop [WITHSCORES]
成员的位置按分数值递减(从大到小)来排列
除了成员按分数值递减的次序排列这一点外, ZREVRANGE 命令的其他方面和 ZRANGE 命令一样。
例子:
	127.0.0.1:6379[14]> ZRANGE dyz 1 2 withscores
	1) "b"
	2) "0"
	3) "c"
	4) "0"
	127.0.0.1:6379[14]> ZRANGE dyz 1 2 
	1) "b"
	2) "c"


ZRANGEBYLEX key min max [LIMIT offset count]
通过字典区间返回有序集合的成员。
分数必须相同! 如果有序集合中的成员分数有不一致的,返回的结果就不准。
可以使用 “-” 和 “+” 表示得分最小值和最大值
[LIMIT offset count]返回结果是否分页,指令中包含LIMIT后offset(起始位置)、count(返回结果数量)必须输入
例子:
	127.0.0.1:6379[14]> ZRANGEBYLEX dyz [a [c
	1) "a"
	2) "b"
	3) "c"

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
返回有序集合中指定分数区间的成员列表。有序集成员按分数值递增(从小到大)次序排列。
具有相同分数值的成员按字典序来排列(该属性是有序集提供的,不需要额外的计算)。
例子:
	127.0.0.1:6379[14]> ZADD salary 2500 jack
	(integer) 1
	127.0.0.1:6379[14]> ZADD salary 5000 tom
	(integer) 1
	127.0.0.1:6379[14]> ZADD salary 12000 peter
	(integer) 1
	127.0.0.1:6379[14]> ZRANGEBYSCORE salary -inf +inf  显示全部元素
	1) "jack"
	2) "tom"
	3) "peter"
	127.0.0.1:6379[14]> ZRANGEBYSCORE salary (5000 400000 显示5000 < salary <=400000的成员
	1) "peter"
	127.0.0.1:6379[14]> ZRANGEBYSCORE salary (5000 (400000 显示5000 < salary <400000的成员
	1) "peter"
	
ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]
返回有序集中指定分数区间内的所有的成员。有序集成员按分数值递减(从大到小)的次序排列。
除了成员按分数值递减的次序排列这一点外, ZREVRANGEBYSCORE 命令的其他方面和 ZRANGEBYSCORE 命令一样。
例子:
	127.0.0.1:6379[14]> ZRANGE salary 0 -1 withscores
	1) "jack"
	2) "2500"
	3) "tom"
	4) "5000"
	5) "peter"
	6) "12000"
	127.0.0.1:6379[14]> ZREVRANGEBYSCORE salary -inf +inf
	(empty list or set)
	127.0.0.1:6379[14]> ZREVRANGEBYSCORE salary +inf -inf  显示全部
	1) "peter"
	2) "tom"
	3) "jack"
	127.0.0.1:6379[14]> ZREVRANGEBYSCORE salary 2500 5000
	(empty list or set)
	127.0.0.1:6379[14]> ZREVRANGEBYSCORE salary 5000 2000  #2000<= salary <=5000
	1) "tom"
	2) "jack"
	127.0.0.1:6379[14]> ZREVRANGEBYSCORE salary 5000 (2500  #2000< salary <=5000
	1) "tom"
	127.0.0.1:6379[14]> ZREVRANGEBYSCORE salary (5000 2500  #2000<= salary <5000
	1) "jack"

ZRANK key member 
返回有序集中指定成员的排名。其中有序集成员按分数值递增(从小到大)顺序排列。
例子:
	127.0.0.1:6379[14]> ZRANGE salary 0 -1 withscores
	1) "jack"
	2) "2500"
	3) "tom"
	4) "5000"
	5) "peter"
	6) "12000"
	127.0.0.1:6379[14]> ZRANK salary jack
	(integer) 0
	127.0.0.1:6379[14]> ZRANK salary tom
	(integer) 1

ZREVRANK key member
返回有序集中成员的排名。其中有序集成员按分数值递减(从大到小)排序。
排名以 0 为底,也就是说, 分数值最大的成员排名为 0 。

ZREM key member [member ...]
用于移除有序集中的一个或多个成员,不存在的成员将被忽略。

ZREMRANGEBYLEX key min max
用于移除有序集合中给定的字典区间的所有成员。
例子:
	127.0.0.1:6379[14]> ZRANGE dyz 0 -1 
	1) "a"
	2) "b"
	3) "c"
	4) "d"
	5) "f"
	6) "e"
	127.0.0.1:6379[14]> ZREMRANGEBYLEX dyz [a [d
	(integer) 4
	127.0.0.1:6379[14]> ZRANGE dyz 0 -1 
	1) "f"
	2) "e"

ZREMRANGEBYRANK key start stop
用于移除有序集中,指定排名(rank)区间内的所有成员。
例子:
	127.0.0.1:6379[14]> ZRANGE dyz 0 -1 
	1) "f"
	2) "e"
	127.0.0.1:6379[14]> ZREMRANGEBYRANK dyz 0 0
	(integer) 1
	127.0.0.1:6379[14]> ZRANGE dyz 0 -1 
	1) "e"

ZREMRANGEBYSCORE key min max
用于移除有序集中,指定分数(score)区间内的所有成员。
例子: 
	127.0.0.1:6379[14]> ZRANGE dyz1 0 -1 withscores
	1) "a"
	2) "0"
	3) "b"
	4) "20"
	5) "c"
	6) "50"
	7) "d"
	8) "100"
	127.0.0.1:6379[14]> ZREMRANGEBYSCORE dyz1 0 50
	(integer) 3
	127.0.0.1:6379[14]> ZRANGE dyz1 0 -1 withscores
	1) "d"
	2) "100"

ZSCORE key member
返回有序集中,成员的分数值。 如果成员元素不是有序集 key 的成员,或 key 不存在,返回 nil 。
例子:
	127.0.0.1:6379[14]> ZRANGE dyz 0 -1 withscores
	1) "e"
	2) "1"
	127.0.0.1:6379[14]> ZSCORE dyz e
	"1"
	127.0.0.1:6379[14]> ZSCORE dyz q
	(nil)

ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]
计算给定的一个或多个有序集的并集,其中给定 key 的数量必须以 numkeys 参数指定,并将该并集(结果集)储存到 destination 。
默认情况下,结果集中某个成员的分数值是所有给定集下该成员分数值之和 。
WEIGHTS:原key中member的score * weight 等于新的score,然后再AGGREGATE运算。 
 
Redis HyperLogLog

Redis 在 2.8.9 版本添加了 HyperLogLog 结构。

Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。

在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。

但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素。

PFADD key element [element ...] 
将所有元素参数添加到 HyperLogLog 数据结构中。

PFCOUNT key [key ...]
返回给定 HyperLogLog 的基数估算值,如果多个 HyperLogLog 则返回基数估值之和。

PFMERGE destkey sourcekey [sourcekey ...]
将多个 HyperLogLog 合并为一个 HyperLogLog ,合并后的 HyperLogLog 的基数估算值是通过对所有 给定 HyperLogLog 进行并集计算得出的。

例子:

127.0.0.1:6379[14]> keys *
(empty list or set)
127.0.0.1:6379[14]> PFADD dyz 122 1212 3232 5451 45
(integer) 1
127.0.0.1:6379[14]> PFADD dyz 122 1212 3232 5451 45
(integer) 0
127.0.0.1:6379[14]> PFCOUNT dyz 
(integer) 5
127.0.0.1:6379[14]> PFCOUNT dyz1 122 shh mno jjl
(integer) 0
127.0.0.1:6379[14]> PFCOUNT dyz1 
(integer) 0
127.0.0.1:6379[14]> FLUSHDB
OK
127.0.0.1:6379[14]> keys *
(empty list or set)
127.0.0.1:6379[14]> PFADD dyz 122 1212 3232 5451 45
(integer) 1
127.0.0.1:6379[14]> PFCOUNT dyz
(integer) 5
127.0.0.1:6379[14]> PFADD dyz1 122 ghuijh huihiu uhh knh
(integer) 1
127.0.0.1:6379[14]> PFCOUNT dyz1 
(integer) 5
127.0.0.1:6379[14]> PFMERGE dyz dyz1
OK
127.0.0.1:6379[14]> PFCOUNT dyz
(integer) 9
127.0.0.1:6379[14]> PFMERGE dyz2 dyz dyz1
OK
127.0.0.1:6379[14]> PFCOUNT dyz2
(integer) 9

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值