Redis常用命令速查

Redis主要有5种数据类型,包括String,List,Set,Zset,Hash,满足大部分的使用要求

数据类型

可存储的Value

操作

应用场景

String

字符串、整数、浮点数

对整个字符串或其中部分操作;

对数进行自增、自减操作

缓存

限流

计数器

分布式锁

分布式Sesssion

Hash

包含键值对的无序散列表

添加、获取、移除单个键值对;

获取所有键值对;

检查某键是否存在

用户信息

页面访问量

List

列表

首位压入、弹出元素;

对部分元素进行操作

队列

Set

无序集合

添加、获取、移除单个元素;

检查元素是否存在;

计算交、并、差集;

从集合中随机获取元素

赞、踩、标签

交集、并集、差集操作

ZSet

有序集合

添加、获取、移除单个元素;

根据分值范围或成员来获取元素

计算一个键的排名

去重

排序(排行榜)

1.String 类型常用命令

String 的所有命令中的下标都是从0开始计算的

set key value                   给key设置值value
get key                         获取key
getrange key start end          字符串分段(下标从0开始,双闭包,end为-1表示取start到所有)
getset key new_value            覆盖值,返回旧值
mset k1 v1 [k2 v2…]             批量设置key value
mget k1 [k2…]                   批量获取
msetnx k1 v1 [k2 v2 …]          为多个键分别设置它们的值,仅当键不存在时 
setnx key value                 设置键的值,仅当键不存在时设置
setex key seconds value         设置键值并设置过期时间秒(expire)
setrange key index value        从index开始替换为value(value有几位替换几位,返回为替换后的key长度)
incr age                        递增
incrby age 10 			        递增,指定步幅10
decr age       		        	递减
decrby age 10   		        递减,指定步幅10
incrbyfloat key float  	        增减浮点数(返回计算后的值)
append key value2               追加
strlen key             		    获取长度
pesetex key milliseconds value  设置键的值和到期时间(以毫秒为单位)
getbit/setbit/bitcount/bitop    位操作

2.Hash 类型常用命令

hset key field value            设置散列字段的字符串值
hget key field			        获取存储在指定键的哈希字段的值
hdel key field2 [field2]        删除一个或多个哈希字段
hexists key field               判断是否存在散列字段(1存在,0不存在)
hgetall key                     获取该hash中所有的属性
hmset key f1 v1 [f2 v2…]        为多个哈希字段分别设置它们的值
hmget key f1 [f2…]              获取多个给定哈希字段的值   
hsetnx key f v                  仅当字段不存在时,才设置散列字段的值
hincrby key field num           按num大小递增
hdel myhash name                删除
hkeys key                       获取哈希中的所有字段
hvals key                       获取哈希中的所有值
hlen key                        获取哈希中长度

3.List 类型常用命令

lpush mylist a b c             将一个或多个值添加到列表,左(头)插入
rpush mylist x y z             将一个或多个值添加到列表,右(尾)插入
lrange mylist s1 e1            获取数据集合(闭包[s1,e1],e1=-1表示表示取start到所有)
lpop mylist                    弹出元素,左(头)开始第一个
rpop mylist                    弹出元素,右(尾)开始第一个
llen mylist                    获取长度
lrem mylist count value        从列表中删除元素,详见注解1
lindex mylist index            通过其索引从列表获取元素
lset mylist index valuse       通过索引设值
ltrim mylist s1 e1             列表只保留[s1,e1]之间的元素
linsert mylist before|after v1 v2  插入,注解2
rpoplpush list list2           转移列表的数据
lpushx list value              仅当列表存在时才左插入 
rpushx list value             仅当列表存在时才右插入

注解:

1.lrem mylist count value :

根据参数 count 的值,移除列表中与参数 value 相等的元素。

count 的值可以是以下几种:

  • count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count
  • count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值。
  • count = 0 : 移除表中所有与 value 相等的值。

2.linsert mylist before|after v1 v2

将值 v2插入到列表 key 当中,位于值 v1之前或之后。 当 index 不存在于列表 key 时,不执行任何操作。

4.Set 类型常用命令

sadd key v1[v2…]           将一个或多个成员添加到集合
smembers key               获取数据集合全部元素
srem key v1[v2…]           从集合中删除一个或多个成员
spop                       从集合中删除并返回随机一个成员
sismember key v            判断确定给定值是否是集合的成员
scard key                  获取集合中的成员数
sdiff | sinter | sunion key1 [key2]      集合间运算:差集 | 交集 | 并集
sdiffstore|sinterstore|sunionstore  newkey key1 [key2]    差集 | 交集 | 并集 并将结果集存储在newkey键中
srandmember key [count]    从集合中获取一个或多个随机成员
smove oldkey newkey v      将成员从一个集合移动到另一个集合

5.ZSet 类型常用命令

zadd key 1 v1          
zadd key 2 v2
zadd key 3 v3            为有序集合key赋值与值权重
zincrby key score v      为某值增长分数score
zscore key v             获取某值分数
zrem key v1 [v2…]        删除一个或多个元素
zcard key                元素数量
zrange key  s e [withscores] 返回有序集 key 中,指定区间内的成员递增(加withscores为同时返回值的scores)
zrangebyscorekey min max [withscores] [LIMIT offset count] 返回指定范围的值,顺序小到大(注解1)
zrevrangebyscore key max min [WITHSCORES] [LIMIT offset count]  指定范围的值,逆序
zcount min max  获得指定分数范围[minx,max]内的元素个数
zremrangebyrank key start stop  按照排名范围删除元素,注解2
zremrangebyscore key min max  按照分数范围[minx,max]删除元素
zrank key v       返回有序集 key 中成员 v 的排名,其中有序集成员按 score 值递减(从小到大)排序。
zrevrank key v    返回有序集 key 中成员 member 的排名,其中有序集成员按 score 值递减(从大到小)排序。
ZUNIONSTORE destination numkeys key [key …] [WEIGHTS weight [weight …]] [AGGREGATE SUM|MIN|MAX] 求并集,注解3
zinterstore destination numkeys key [key …] [WEIGHTS weight [weight …]] [AGGREGATE SUM|MIN|MAX] 求交集,含义同上

注解:

1.key min max [WITHSCORES] [LIMIT offset count] :

返回有序集 key 中,所有 score 值介于 minmax 之间(包括等于 minmax )的成员。有序集成员按 score 值递增(从小到大)次序排列。

可选的 LIMIT 参数 用于分页。

可选的 WITHSCORES 参数决定结果集是单单返回有序集的成员,还是将有序集成员及其 score 值一起返回。

2.zremrangebyrank key start stop :

移除有序集 key 中,指定排名(rank)区间内的所有成员。

区间分别以下标参数 startstop 指出,包含 startstop 在内。

下标参数 startstop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。 你也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。

3.ZUNIONSTORE destination numkeys key [key …] [WEIGHTS weight [weight …]] [AGGREGATE SUM|MIN|MAX]

计算给定的一个或多个有序集的并集,其中给定 key 的数量必须以 numkeys 参数指定,并将该并集(结果集)储存到 destination

默认情况下,结果集中某个成员的 score 值是所有给定集下该成员 score 值之

使用 WEIGHTS 选项,你可以为 每个 给定有序集 分别 指定一个乘法因子(multiplication factor),每个给定有序集的所有成员的 score 值在传递给聚合函数(aggregation function)之前都要先乘以该有序集的因子。

如果没有指定 WEIGHTS 选项,乘法因子默认设置为 1

使用 AGGREGATE 选项,你可以指定并集的结果集的聚合方式。

默认使用的参数 SUM ,可以将所有集合中某个成员的 score 值之 作为结果集中该成员的 score 值;使用参数 MIN ,可以将所有集合中某个成员的 最小 score 值作为结果集中该成员的 score 值;而参数 MAX 则是将所有集合中某个成员的 最大 score 值作为结果集中该成员的 score 值。

返回值:保存到 destination 的结果集的基数。