NipGeihou's blog NipGeihou's blog
  • Java

    • 开发规范
    • 进阶笔记
    • 微服务
    • 快速开始
    • 设计模式
  • 其他

    • Golang
    • Python
    • Drat
  • Redis
  • MongoDB
  • 数据结构与算法
  • 计算机网络
  • 应用

    • Grafana
    • Prometheus
  • 容器与编排

    • KubeSphere
    • Kubernetes
    • Docker Compose
    • Docker
  • 组网

    • TailScale
    • WireGuard
  • 密码生成器
  • 英文单词生成器
  • 随机端口生成器
  • 常用软件
  • Git仓库推荐
🍳烹饪
🧑‍💻关于
  • 分类
  • 标签
  • 归档
搜索

NipGeihou

我见青山多妩媚,料青山见我应如是
  • Java

    • 开发规范
    • 进阶笔记
    • 微服务
    • 快速开始
    • 设计模式
  • 其他

    • Golang
    • Python
    • Drat
  • Redis
  • MongoDB
  • 数据结构与算法
  • 计算机网络
  • 应用

    • Grafana
    • Prometheus
  • 容器与编排

    • KubeSphere
    • Kubernetes
    • Docker Compose
    • Docker
  • 组网

    • TailScale
    • WireGuard
  • 密码生成器
  • 英文单词生成器
  • 随机端口生成器
  • 常用软件
  • Git仓库推荐
🍳烹饪
🧑‍💻关于
  • 分类
  • 标签
  • 归档
搜索
  • MySQL

  • Redis

    • Redis - 常用命令
      • 1 字符串(String)
        • 1.1 设置(set)
        • 1.2 查询(get)
        • 1.3 追加(append)
        • 1.4 长度(strlen)
        • 1.5 key不存在时新增(setnx)
        • 1.6 自增+1(incr)
        • 1.7 自减-1(decr)
        • 1.8 自增自定义步长(incrby)
        • 1.9 自减自定义步长(decrby)
        • 1.10 批量设置(mset)
        • 1.11 批量查询(mget)
        • 1.12 批量key都不存在时新增(msetnx)
        • 1.13 查询截取(getrange)
        • 1.14 覆盖更新(setrange)
        • 1.15 设置并设置过期时间(setex)
        • 1.16 查询并设置过期时间(getex)
        • 1.17 设置并查询旧值(getset)
      • 2 列表(List)
        • 2.1 左边插入多个值(lpush)
        • 2.2 右边插入多个值(rpush)
        • 2.3 左边取值(lpop)
        • 2.4 右边取值(rpop)
        • 2.5 右边取值插入另一个列表左边(rpoplpush)
        • 2.6 按索引从左到右查询(lrange)
        • 2.7 长度(llen)
        • 2.8 在某个值前/后插入(linsert)
        • 2.9 从左删除若干个value值(lrem)
        • 2.10 从左更新某索引的值(lset)
      • 3 集合(Set)
        • 3.1 批量新增(sadd)
        • 3.2 查询(smembers)
        • 3.3 是否存在(sismember)
        • 3.4 元素个数(scard)
        • 3.5 删除(srem)
        • 3.6 随机取一值并删除(spop)
        • 3.7 随机取出N个值(srandmember)
        • 3.8 移动(smove)
        • 3.9 取交集(sinter)
        • 3.10 取并集(sunion)
        • 3.11 取差集(sdiff)
      • 4 哈希(Hash)
        • 4.1 新增(hset)
        • 4.2 查询key某个属性的值(hget)
        • 4.3 批量新增(hmset)
        • 4.4 属性是否存在(hexists)
        • 4.5 查询key所有属性名(hkeys)
        • 4.6 查询key所有的值(hvals)
        • 4.7 属性值自增自定义(hincrby)
        • 4.8 属性不存在时新增(hsetnx)
      • 5 有序集合(Zset、Sorted Set)
        • 5.1 新增(zadd)
      • 6 位图(Bitmap)
      • 7 基数统计(HyperLogLog)
      • 8 库操作
        • 8.1 切换库(select)
      • 9 Key操作
        • 9.1 查看当前库所有key(keys)
        • 9.2 是否存在(exists)
        • 9.3 查看类型(type)
        • 9.4 阻塞删除(del)
        • 9.5 非阻塞删除
        • 9.6 设置过期时间(expire)
        • 9.7 查询过期时间(ttl)
        • 9.8 当前库key数量(dbsize)
        • 9.9 清空当前库(flushdb)
        • 9.10 清空全部库(flushall)
    • Redis - 数据类型
    • Redis - 缓存问题:一致性, 穿击, 穿透, 雪崩, 污染等
    • Redis - 常见面试题
  • MongoDB

  • 分享

  • 数据库
  • Redis
NipGeihou
2022-05-24
目录

Redis - 常用命令

  • redis-cli 命令进入客户端
  • Try Redis —— Redis 官方模拟客户端 (opens new window)

# 1 字符串(String)

二进制安全的,可以包括任何数据。最多 512M,类似于 ArrayList,每次扩容 1M

# 1.1 设置(set)

set k1 value
# set name NipGeihou    -> ok

# 1.2 查询(get)

get k1
# get Name  -> NipGeihou

# 1.3 追加(append)

append k1 value2
# append name 666  -> 12(追加后的长度)

# 1.4 长度(strlen)

strlen k1
# strlen name  -> 12

# 1.5 key 不存在时新增(setnx)

setnx k1 value
# setnx name Zhangsan    -> 0
# setnx name2 Zhangsan   -> 1

# 1.6 自增 + 1(incr)

k1 必须是数值,如 k1 没有被定义,则首次执行后返回 1

incr k1
# incr orderCount   -> 1

# 1.7 自减 - 1(decr)

k1 必须是数值,如 k1 没有被定义,则首次执行后返回 - 1

decr k1
# decr orderCount -> 0

# 1.8 自增自定义步长(incrby)

将 key 中存储的数字值根据自定义步长自增

incrby  <步长>
# incrby orderCount 5 -> 5

# 1.9 自减自定义步长(decrby)

将 key 中存储的数字值根据自定义步长自减

decrby  <步长> 
# decrby orderCount 5 -> 0

# 1.10 批量设置(mset)

mset k1 v1 k2 v2 ...
# mset name NipGeihou phone 13123456789 -> ok

# 1.11 批量查询(mget)

mget k1 k2
# mget name phone
# ->
# NipGeihou
# 13123456789

# 1.12 批量 key 都不存在时新增(msetnx)

所有 key 都不存在才成功

msetnx k1 v1 k2 v2 ...
# msetnx name Zhangsan phone 010123456 -> 0
# msetnx name3 Zhangsan phone3 010123456 -> 1

# 1.13 查询截取(getrange)

getrange k1 <起始位置> <截止位置>
# getrange name 3 9 -> Geihou

# 1.14 覆盖更新(setrange)

setrange k1 <起始位置> 覆盖内容
# setrange name 3 Siusiu -> 9
# get name -> NipSiusiu

# 1.15 设置并设置过期时间(setex)

指定的 key 设置值及其过期时间。如果 key 已经存在, SETEX 命令将会替换旧的值。

setex <key> <secondTimeOut> <value>
# setex name 60 NipGeihou -> OK
# ttl name -> 60
# 60秒后
# get name -> null

# 1.16 查询并设置过期时间(getex)

getex <key> [ex <secondTimeOut>]
# getex name -> NipGeihou
# ttl name -> -1

# getex name ex 60 -> NipGeihou
# ttl name -> 60
# 60秒后
# get name -> null

# 1.17 设置并查询旧值(getset)

getset <key> <value>
# getset name NipGeihou -> null
# getset name NipSiusiu -> NipGeihou

# 2 列表(List)

元素较少时使用一块压缩列表

# 2.1 左边插入多个值(lpush)

依次放左边

lpush k1 v1 v2 v3 ...
# lpush name NipGeihou NipSiusiu Zhangsan
# lrange name 0 -1
# ->
# Zhangsan
# NipSiusiu
# NipGeihou

# 2.2 右边插入多个值(rpush)

rpush k1 v1 v2 v3

# 2.3 左边取值(lpop)

取出一个值,不是查。取完 k1 消失

lpop k1
# lpop name -> Zhangsan
# lrange name 0 -1
# ->
# NipSiusiu
# NipGeihou

# 2.4 右边取值(rpop)

rpop k1 [count]

# 2.5 右边取值插入另一个列表左边(rpoplpush)

rpoplpush k1 k2
# rpoplpush name nameList -> NipGeihou

# 2.6 按索引从左到右查询(lrange)

0 左边第一个,-1 右边第一个

lrange <key> <startIndex> <endIndex>
# lrange name 0 -1
# ->
# NipSiusiu
# NipGeihou

# 2.7 长度(llen)

llen <key>
# llen name -> 2

# 2.8 在某个值前 / 后插入(linsert)

如果列表中有多个相同的 value 时,会在最右那个 value 操作

linsert <key> after|before <value1> <value2>
# linsert name after NipGeihou Zhangsan -> 3

# 2.9 从左删除若干个 value 值(lrem)

lrem <key> <count> <value>
# lrem name 2 NipGeihou -> 2

# 2.10 从左更新某索引的值(lset)

lset <key> <index> <value>
# lset name 0 NipGeihou -> OK

# 3 集合(Set)

元素不可重复

# 3.1 批量新增(sadd)

sadd <key> <value1> <value2> ...
# sadd nameSet NipGeihou Nipsiusiu -> 2

# 3.2 查询(smembers)

smembers <key>
# smembers nameSet
# NipGeihou
# Nipsiusiu

# 3.3 是否存在(sismember)

sismember <key> <value>
# sismember nameSet NipGeihou -> 1
# sismember nameSet Zhangsan -> 0

# 3.4 元素个数(scard)

scard <key>
# scard nameSet -> 2

# 3.5 删除(srem)

srem <key> <value1> [<value2> ...]
# srem nameSet NipGeihou -> 1

# 3.6 随机取一值并删除(spop)

spop <key>

# 3.7 随机取出 N 个值(srandmember)

srandmember <key> <count>

# 3.8 移动(smove)

smove <oldKey> <newKey> <value>

# 3.9 取交集(sinter)

sinter k1 k2

# 3.10 取并集(sunion)

sunion k1 k2 

# 3.11 取差集(sdiff)

sdiff k1 k2

# 4 哈希(Hash)

# 4.1 新增(hset)

hset <key> <field> <value>
# hset user username NipGeihou -> 1
# hset user password 123456 -> 1

# 4.2 查询 key 某个属性的值(hget)

hget <key> <field>
# hget user username -> NipGeihou

# 4.3 批量新增(hmset)

hmset <key> <field1> <value1> [<field2> <value2> ...]
# hmset user phone 13123456789 sex 1 -> OK

# 4.4 属性是否存在(hexists)

hexists <key> <field>
# hexists user username -> 1

# 4.5 查询 key 所有属性名(hkeys)

hkeys <key>
# hkeys user

# 4.6 查询 key 所有的值(hvals)

hvals <key>
# hvals user

# 4.7 属性值自增自定义(hincrby)

hincrby <key> <field> <number>
# hincrby user age 5 -> 23

# 4.8 属性不存在时新增(hsetnx)

hsetnx <key> <field> <value>
# hsetnx user username NipGeihou -> 0

# 5 有序集合(Zset、Sorted Set)

类似 set,有序的没有重复元素的字符串集合

# 5.1 新增(zadd)

zadd <key> <value1> <value2> ...

推荐阅读

  • 巧用 Redis 数据结构实现亿级数据聚合统计_redis_码哥字节_InfoQ 写作社区 / 排序统计 (opens new window)

# 6 位图(Bitmap)

推荐阅读

  • 巧用 Redis 数据结构实现亿级数据聚合统计_redis_码哥字节_InfoQ 写作社区 / 二值状态统计 (opens new window)

# 7 基数统计(HyperLogLog)

推荐阅读

  • 巧用 Redis 数据结构实现亿级数据聚合统计_redis_码哥字节_InfoQ 写作社区 / 基数统计 (opens new window)

# 8 库操作

# 8.1 切换库(select)

默认 16 个库,默认使用 0 号库

select 库号
# select 0

# 9 Key 操作

# 9.1 查看当前库所有 key(keys)

keys *

# 9.2 是否存在(exists)

exists <key>

# 9.3 查看类型(type)

type <key>
# type user -> hash

# 9.4 阻塞删除(del)

del <key>

# 9.5 非阻塞删除

unlink <key>

# 9.6 设置过期时间(expire)

expire <key> <second>

# 9.7 查询过期时间(ttl)

查看过期秒,-1 永不过期,-2 已过期

ttl <key>

# 9.8 当前库 key 数量(dbsize)

dbsize

# 9.9 清空当前库(flushdb)

flushdb

# 9.10 清空全部库(flushall)

flushall
上次更新: 2023/07/25, 11:50:02
事务的隔离级别
Redis - 数据类型

← 事务的隔离级别 Redis - 数据类型→

最近更新
01
模型的创建与调用
11-08
02
大模型应用场景
11-06
03
多AP漫游优化
11-05
更多文章>
Theme by Vdoing | Copyright © 2018-2026 NipGeihou | 友情链接
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式