Skip to main content

Redis

# 使用配置文件启动
wget http://download.redis.io/redis-stable/redis.conf
redis-server redis.conf
# macOS 安装
brew install redis
# 通过 docker 启动
# 数据存储于 ~/data/redis
docker run --rm -it -v $PWD/data:/data -p 6379:6379 --name redis redis redis-server --appendonly ye

redis-server --bind=0.0.0.0
info

commands

# 获取 key 数量 - 可能失效的也包含
dbsize
# 获取 key 信息
info keyspace

# 扫描 key - SCAN,SSCAN,HSCAN,ZSCAN
# SCAN cursor [MATCH pattern] [COUNT count] [TYPE type]
scan 0
# NX -> Not Exists - 不存在则设置
# XX -> Exists - 存在则设置
# GET -> 返回旧值
# EX -> Expires Seconds - 过期时间 单位秒
# PX -> Expires Milliseconds - 过期时间 单位毫秒
# EXAT -> Expires At - 过期时间 时间戳秒
# PXAT -> Expires At - 过期时间 时间戳毫秒
# KEEPTTL -> 保持原有 TTL
SET key value [NX | XX] [GET] [EX seconds | PX milliseconds | EXAT unix-time-seconds | PXAT unix-time-milliseconds | KEEPTTL]
  • 2.6.12+ 支持 EX, PX, NX, XX
  • 6.0.0+ 支持 KEEPTTL
  • 6.2.0+ 支持 GET, EXAT, PXAT
  • 7.0.0+ 支持 NX, GET 同时使用
commandnote
SETEX-> SET key value EX seconds
SETNX-> SET key value NX
PSETEX-> SET key value PX milliseconds
GETSET-> SET key value GET

Stream

命令

  • L - List
  • H - Hash
  • Z - SortedSet
  • S - Set
  • X - Stream
  • Channel - SUBSCRIBE,PUBLISH,UNSUBSCRIBE
    • P - Pattern - PSUBSCRIBE,PUNSUBSCRIBE
    • S - Shared - 集群 channel

Module

键变化通知

  • 配置 notify-keyspace-events
    • 默认为 空 - 无事件产生
    • 可配置为 KEA 产生大多数事件
  • __keyspace@<db>__:<key> event
    • key 变化
    • key -> event
  • __keyevent@<db>__:<key> event
    • 事件
    • event -> key

| flag | | ---- | ----------------------------------- | | K | __keyspace@<db>__ 前缀 | | E | __keyevent@<db>__ 前缀 | | g | 通用命令 - DEL, EXPIRE, RENAME, ... | | stringllistssethhashzSortedsettstreamdmodulekeytypexexpiredeventseevictedeventsmkeymissevents访问不存在的KEYnnewkeyeventsA不包含Ag | string | | l | list | | s | set | | h | hash | | z | Sorted set | | t | stream | | d | module key type | | x | expired events | | e | evicted events | | m | key miss events - 访问不存在的 KEY | | n | new key events - A 不包含 | | A | `glshztxed` - 除了 mn 的所有事件 |

evenntcommand
delDEL,MIGRATE,RPOP,LPOP
rename_from,rename_toRENAME
move_from,move_toMOVE
copy_toCOPY
restoreRESTORE
expireEXPIRE,SETEX
sortstoreSORT STORE
setSET,MSET
setrangeSETRANG
incrbyINCR, DECR, INCRBY, DECRBY
incrbyfloatINCRBYFLOAT
append
lpush
rpush
rpop
lpop
linsert
lrem
ltrim
hsetHSET, HSETNX, HMSET
hincrby
hincrbyfloat
hdel
saddSADD,SMOVE
sremSREM,SMOVE
spop
sinterstore
sunionstore
sdiffstore
zincr
zadd
zrem
zrembyscore
zrembyrank
zdiffstore
zinterstore
zunionstore
xadd
xdel
xgroup-create
xgroup-destroy
xgroup-setid
xgroup-setid
xsetid
xtrim
xgroup-createconsumer
xgroup-delconsumer
persist
  • {l,r}{pop,push}
    • RPOPLPUSH, BRPOPLPUSH
    • LMOVE, BLMOVE
  • expired
  • evicted
  • new
# 所有事件
redis-cli --csv psubscribe '__key*__:*'

redis-benchmark

redis-benchmark -q -n 100000
redis-benchmark -q -n 100000 -t set,get -P 16

Inside