Redis 常用命令备忘录

发表于:2020-09-14

Redis 命令不区分大小写, SET name xjhset name xjh 无区别。

字符串

# 设置 key value
SET name xiejiahe

# 一次性设置多个key value
MSET name xiejiahe age 18 # 返回的是一个数组

# 获取key值
GET name

# 一次性获取多个key的值
GET name age

# 获取字符串长度
STRLEN name # 3

# 追加字符串, 如果key不存在则创建,等价于 SET name _hi
APPEND name _hi # xjh_hi

列表

# 向左(头部)添加一个或多个元素,返回列表长度
LPUSH names xjh 1 2 3...

# 向右(尾部)添加一个或多个元素,返回列表长度
RPUSH names xjh 1 2 3...

# 提取列表指定范围元素,支持负数,-1最后一个,-2倒数第二个
LRANGE names 0 -1 # 提取所有元素

# 想左弹出一个元素, 返回弹出的元素,如果没有元素可以弹出返回 null
LPOP names

# 向右弹出一个元素,返回弹出的元素,如果没有元素可以弹出返回 null
RPOP names

# 上限列表,只保留前面3个元素,其他元素移除掉, 有点类似于JS splice
LTRIM names 0 2

# 阻塞操作, 与 LPOP不一样,等待 name 列表元素,如果5秒后没有可用元素被弹出就返回
BLPOP names 5 # 左边, 也可以指定多个:BLPOP name age 5
BRPOP names 5 # 右边

# 获取列表元素个数, 如果不存在返回 0
LLEN names

# 删除数组指定元素, 如果是正数从左边开始删N个元素的值,如果是负数则从右边,如果是0删除所有指定元素
LREM names 2 zhangsan

# 获取指定索引元素值, 索引从0开始
LINDEX names 0 # xiejiahe

# 设置指定索引元素值, 索引从0开始,如果索引不存在则报错
LSET names 1 xiejiahe

哈希/散列

Redis 哈希相当于编程语言当中的 Map

# 设置一个字段
HSET user:001 username xiejiahe
# 设置多个字段
HMSET user:001 username xiejiahe age 18


# 读取某个字段的值
HGET user:001 username
# 读取多个字段的值
HMGET user:001 username age

# 读取所有字段键和值, 返回的是列表 [name, 谢家和, age, 18] , 单数是键,偶数是值。
HGETALL user:001

# 获取字段数量
HLEN user:001 # 10

# 删除多个键
HDEL user:001 user:002

# 获取所有字段Key
HKEYS user:001

# 获取所有字段值
HVALS user:001

# 原子自增,如果 like 字段不存在则创建为0然后增加指定数值
HINCRBY user:001 like 2

# 判断字段是否存在
HEXISTS user:001 name

# 字段不存在创建, 如果字段存在则跳过
HSETNX user:001 name 谢家和

集合

Redis 集合是无序的字符串集合, 每次调用时随意顺序返回元素。

集合是唯一的,不会有重复。

# 给user添加3个元素
SADD user 1 2 3
SADD user 1 2 3 5 # 只有5会被添加进去

# 返回user集合所有元素
SMEMBERS user

# 检查指定元素是否存在
SISMEMBER user 1 # 返回1成功,0失败

计数器

Redis 字符串可以当做计数器使用, 内部会自动做类型转换, 常用于点赞、访问量等场景。

# 设置 name 值为100字符串
SET number 100

# 向上自增+1, 101
INCR number

# 向下递减-1, 100
DECR number

# 向上递增10, 110
INCRBY number 10

# 向下递增10, 100
DECRBY number 10

# 增减指定浮点数
INCRBYFLOAT number 2.2

检查/类型

# 检查键 name 是否存在
EXISTS name

# 检测类型
TYPE name # "string"

设置过期时间

目前Redis过期时间误差值在 0 ~ 1 毫秒之间。

# 为键 name 设置 10秒
SET name xiejiahe
EXPIRE name 10

# 也可以在设置时给定过期时间
SET name xiejiahe ex 10

# 检查键的生存剩余时间(秒)
TTL name

# 删除过期时间,使Key永久存在
PERSIST name

删除

# DEL 可以删除任何类型Key,不管是字符串还是集合
DEL name
DEL name age # 支持删除多个键

# 清空所有数据库中的数据
FLUSHALL

其他

# 获取所有key名字, 支持正则, 此命令不建议生产环境使用,因为会遍历所有键,当键较多时会影响性能
KEYS *
KEYS n*

# 获取当前数据库键数量
DBSIZE  // 2

这里只是整理了常用的命令,更详细可以参考 redis官网命令手册

SQL
原创文章,转载请注明出处。