NipGeihou's blog NipGeihou's blog
  • Java

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

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

    • Grafana
    • Prometheus
  • 容器与编排

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

    • TailScale
    • WireGuard
  • 密码生成器
  • 英文单词生成器
🍳烹饪
🧑‍💻关于
  • 分类
  • 标签
  • 归档

NipGeihou

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

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

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

    • Grafana
    • Prometheus
  • 容器与编排

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

    • TailScale
    • WireGuard
  • 密码生成器
  • 英文单词生成器
🍳烹饪
🧑‍💻关于
  • 分类
  • 标签
  • 归档
  • MySQL

  • Redis

    • Redis - 常用命令
      • 字符串(String)
        • 设置(set)
        • 查询(get)
        • 追加(append)
        • 长度(strlen)
        • key不存在时新增(setnx)
        • 自增+1(incr)
        • 自减-1(decr)
        • 自增自定义步长(incrby)
        • 自减自定义步长(decrby)
        • 批量设置(mset)
        • 批量查询(mget)
        • 批量key都不存在时新增(msetnx)
        • 查询截取(getrange)
        • 覆盖更新(setrange)
        • 设置并设置过期时间(setex)
        • 查询并设置过期时间(getex)
        • 设置并查询旧值(getset)
      • 列表(List)
        • 左边插入多个值(lpush)
        • 右边插入多个值(rpush)
        • 左边取值(lpop)
        • 右边取值(rpop)
        • 右边取值插入另一个列表左边(rpoplpush)
        • 按索引从左到右查询(lrange)
        • 长度(llen)
        • 在某个值前/后插入(linsert)
        • 从左删除若干个value值(lrem)
        • 从左更新某索引的值(lset)
      • 集合(Set)
        • 批量新增(sadd)
        • 查询(smembers)
        • 是否存在(sismember)
        • 元素个数(scard)
        • 删除(srem)
        • 随机取一值并删除(spop)
        • 随机取出N个值(srandmember)
        • 移动(smove)
        • 取交集(sinter)
        • 取并集(sunion)
        • 取差集(sdiff)
      • 哈希(Hash)
        • 新增(hset)
        • 查询key某个属性的值(hget)
        • 批量新增(hmset)
        • 属性是否存在(hexists)
        • 查询key所有属性名(hkeys)
        • 查询key所有的值(hvals)
        • 属性值自增自定义(hincrby)
        • 属性不存在时新增(hsetnx)
      • 有序集合(Zset、Sorted Set)
        • 新增(zadd)
      • 位图(Bitmap)
      • 基数统计(HyperLogLog)
      • 库操作
        • 切换库(select)
      • Key操作
        • 查看当前库所有key(keys)
        • 是否存在(exists)
        • 查看类型(type)
        • 阻塞删除(del)
        • 非阻塞删除
        • 设置过期时间(expire)
        • 查询过期时间(ttl)
        • 当前库key数量(dbsize)
        • 清空当前库(flushdb)
        • 清空全部库(flushall)
    • Redis - 数据类型
    • Redis - 缓存问题:一致性, 穿击, 穿透, 雪崩, 污染等
    • Redis - 常见面试题
  • MongoDB

  • 分享

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

Redis - 常用命令

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

# 字符串(String)

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

# 设置(set)

set k1 value
# set name NipGeihou    -> ok

# 查询(get)

get k1
# get Name  -> NipGeihou

# 追加(append)

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

# 长度(strlen)

strlen k1
# strlen name  -> 12

# key 不存在时新增(setnx)

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

# 自增 + 1(incr)

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

incr k1
# incr orderCount   -> 1

# 自减 - 1(decr)

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

decr k1
# decr orderCount -> 0

# 自增自定义步长(incrby)

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

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

# 自减自定义步长(decrby)

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

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

# 批量设置(mset)

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

# 批量查询(mget)

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

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

所有 key 都不存在才成功

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

# 查询截取(getrange)

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

# 覆盖更新(setrange)

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

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

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

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

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

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

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

# 设置并查询旧值(getset)

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

# 列表(List)

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

# 左边插入多个值(lpush)

依次放左边

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

# 右边插入多个值(rpush)

rpush k1 v1 v2 v3

# 左边取值(lpop)

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

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

# 右边取值(rpop)

rpop k1 [count]

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

rpoplpush k1 k2
# rpoplpush name nameList -> NipGeihou

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

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

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

# 长度(llen)

llen <key>
# llen name -> 2

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

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

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

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

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

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

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

# 集合(Set)

元素不可重复

# 批量新增(sadd)

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

# 查询(smembers)

smembers <key>
# smembers nameSet
# NipGeihou
# Nipsiusiu

# 是否存在(sismember)

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

# 元素个数(scard)

scard <key>
# scard nameSet -> 2

# 删除(srem)

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

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

spop <key>

# 随机取出 N 个值(srandmember)

srandmember <key> <count>

# 移动(smove)

smove <oldKey> <newKey> <value>

# 取交集(sinter)

sinter k1 k2

# 取并集(sunion)

sunion k1 k2 

# 取差集(sdiff)

sdiff k1 k2

# 哈希(Hash)

# 新增(hset)

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

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

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

# 批量新增(hmset)

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

# 属性是否存在(hexists)

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

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

hkeys <key>
# hkeys user

# 查询 key 所有的值(hvals)

hvals <key>
# hvals user

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

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

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

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

# 有序集合(Zset、Sorted Set)

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

# 新增(zadd)

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

推荐阅读

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

# 位图(Bitmap)

推荐阅读

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

# 基数统计(HyperLogLog)

推荐阅读

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

# 库操作

# 切换库(select)

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

select 库号
# select 0

# Key 操作

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

keys *

# 是否存在(exists)

exists <key>

# 查看类型(type)

type <key>
# type user -> hash

# 阻塞删除(del)

del <key>

# 非阻塞删除

unlink <key>

# 设置过期时间(expire)

expire <key> <second>

# 查询过期时间(ttl)

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

ttl <key>

# 当前库 key 数量(dbsize)

dbsize

# 清空当前库(flushdb)

flushdb

# 清空全部库(flushall)

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

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

最近更新
01
iSCSI服务搭建
05-10
02
磁盘管理与文件系统
05-02
03
网络测试 - iperf3
05-02
更多文章>
Theme by Vdoing | Copyright © 2018-2025 NipGeihou | 友情链接
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式