Redis命令大全详解(38个最常用命令)

Redis命令大全详解(38个最常用命令)

编码文章call10242025-10-13 17:00:151A+A-

关注mikechen十余年BAT架构经验倾囊相授!

大家好,我是mikechen。

Redis是大型架构的基石,下面我重点详解Redis命令大全@mikechen

文章来源:mikechen.cc


Redis String常用命令

命令名称

示例

描述

set

set key value

设置键值对

get

get key

获取值

incr

incr key

递增值

decr

decr key

递减值

strlen

strlen key

获取字符串长度

incrby

incrby key increment

增加指定数字

Redis String示例

#设置key和value,正确返回OKset key valueset name mikechen#获取key对应的value值,若没有返回nilget keyget name#返回key对应的value,再重新设置这个key的值getset key valuegetset name lily#设置多个键值对 正确返回OKmset k1 v1 k2 v2 ...mset sex 1 age 20 address hz#获取多对key对应的valuemget k1 k2 k3 ...mget sex age address

String类型的值为整数,或者浮点数形式时,Redis可以把它当做整数一样操作,支持自加(incr )、自减(decr )、加(incrby )、减(decrby )等操作。

#自增1,value是数值类型才能成功,如果这个值不是数值,则会报错incr keyincr age#age本来是20,现在返回就是21#自增指定数量,value是数值类型才能成功incrby age 5#age本来是20,现在返回就是25#自减1,value是数值类型才能成功。decr keydecr age#age本来是0,现在返回就是-1#自减指定数量,value是数值类型才能成功decrby keydecrby age 20#age本来是30,现在返回就是10

String应用场景

1)计数器

因为 Redis 处理命令是单线程,所以执行命令的过程是原子的,因此 String 数据类型适合计数场景,比如:计算访问次数、点赞、转发、库存数量等等;

2)共享session

分布式Session可以很方便的共享存储session。

3)分布式锁

SET 命令有个 NX 参数可以实现「key不存在才插入」,可以用它来实现分布式锁;


redis list常用指令

常用命令

命令

左压栈

lpush key v1 v2 v3 v4…

右压栈

rpush key v1 v2 …

查看里面的元素

lrange key start offset

左弹栈

lpop key

右弹栈

rpop key

按照索引查找

lindex key index

查看长度

llen key

删除几个几

lrem key 数量 value

指定开始和结束的位置截取,再赋值给key

ltrim key start offset

右出栈左压栈,把resoure的左后一个,压倒dest的第一个

rpoplpush resource destination

重置指定索引的值

lset key index value

在指定元素前/后插入指定元素

linsert key before/after 值1 值2

list底层有多种数据类型,数据量少的时候是ziplist压缩列表,内存是连续分配的,当元素个数超过某个值时转为linkedlist双向链表。

Redis 3.2 版本之后,List 数据类型底层数据结构就只由 quicklist 实现了,替代了双向链表和压缩列表。

Redis List应用场景

  1. 用户列表,商品列表,评论列表等;
  2. 消息队列;
  3. 栈;


Redis Set常用命令

常用命令

命令

添加值

sadd key values

查看值

smembers key

检查集合是否有值

sismember key value

查看set集合里面的元素个数

scard key

删除集合中的指定元素

srem key value

随机弹出某个元素

srandmember key

随机出栈

spop key

把key1中的某个值赋值给key2

smove SourceSet destSet membe

Redis Set应用场景

Set 类型比较适合用来数据去重和保障数据的唯一性,还可以用来统计多个集合的交集、错集和并集等,当我们存储的数据是无序并且需要去重的情况下,比较适合使用集合类型进行存储。

比如:

  • 统计网站uv;
  • 统计共同好友;


Sorted Set常用命令

命令

帮助

描述

zadd

zadd key score1 v1 score2 v2 score1v3 … scoren vn

为有序集合添加新成员

zrem

zrem key mem1 mem2 …memn

删除有序集合中指定成员

zcard

zcard key

获得有序集合中的元素数量

zcount

zcount key min max

返回集合中score值在[min,max]区间的元素数量

zincrby

zincrby key increment member

在集合的member分值上加increment

zscore

zscore key member

获得集合中member的分值

zrank

zrank key member

获得集合中member的排名(按分值从小到大)

zrevrank

zrevrank key member

获得集合中member的排名(按分值从大到小)

zrange

zrange key start end

获得集合中指定区间成员,按分数递增排序

zrevrange

zrevrange key start end

获得集合中指定区间成员,按分数递减排序

Sorted Set应用场景

有序列表被广泛使用在各种排行榜业务上:比如销量排行,用户点击率排行等


Redis Hash常用命令

作用

命令

添加单个

hset key field value

获取单个

hget key field

一次性添加多个键值

hmset key field1 value1 field2 value2 …

一次性获取多个

hmget

获取所有键值

hgetall key

删除

hdel

获取键值对的个数

hlen

检查是否包含某个字段

hget key field

查看所有key

hkeys

给某个数值类型(否则报错)的值增加指定整数值

hincrby key field increment

给某个数字类型值,增加指定浮点类型值

hincrbyfloat key field increment

如果不存在则添加

hsetnx

Redis Hash应用场景

比如最典型的就是购物车,以用户 id 为 key,商品 id 为 field,商品数量为 value,恰好构成了购物车的3个要素,如下图所示:

涉及的命令如下:

  • 添加商品:HSET cart:{用户id} {商品id} 1
  • 添加数量:HINCRBY cart:{用户id} {商品id} 1
  • 商品总数:HLEN cart:{用户id}
  • 删除商品:HDEL cart:{用户id} {商品id}
  • 获取购物车所有商品:HGETALL cart:{用户id}

当前仅仅是将商品ID存储到了Redis 中,在回显商品具体信息的时候,还需要拿着商品 id 查询一次数据库,获取完整的商品的信息。

以上

本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。

点击这里复制本文地址 以上内容由文彬编程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

文彬编程网 © All Rights Reserved.  蜀ICP备2024111239号-4