Wener Site

Redis

约 3 分钟阅读
  • redis/redisGitHubredis/redisredis/redis · RSALv2, SSPLv1, C · 7.2 BSD-3 -> RSALv2, SSPLv1 · BSD fork · valkey · https://codeberg.org/redict/redict · 支持的数据类型: string, bitmap, hll, list, pub/sub, hash, set,...笔记:Redis
    • RSALv2, SSPLv1, C
    • 7.2 BSD-3 -> RSALv2, SSPLv1
    • BSD fork
  • 支持的数据类型: string, bitmap, hll, list, pub/sub, hash, set, sorted set, stream
  • Redis Stack 扩展: bloom, cuckoo, count-min, graph, json, suggest, search, t-digest, timeserial, top-k
  • 参考
  • RedisGraphGitHubRedisLabsModules/redis-graph
    • A graph database as a Redis module
bash
# 使用配置文件启动
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

commands

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

# 扫描 key - SCAN,SSCAN,HSCAN,ZSCAN
# SCAN cursor [MATCH pattern] [COUNT count] [TYPE type]
scan 0
text
# 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, ... | | ∣string∣∣l∣list∣∣s∣set∣∣h∣hash∣∣z∣Sortedset∣∣t∣stream∣∣d∣modulekeytype∣∣x∣expiredevents∣∣e∣evictedevents∣∣m∣keymissevents−访问不存在的KEY∣∣n∣newkeyevents−A不包含∣∣A∣‘g | 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 的所有事件 |

  • Ex - 只监听 key 过期
  • AKE - 监听所有事件
  • Kx - 键空间过期通知
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
bash
# 所有事件
redis-cli --csv psubscribe '__key*__:*'

redis-benchmark

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

Inside

关联信息

反向链接和本文引用的外部资料。

反向链接

  • KV DB Awesome
    笔记 · Redis

    缓存 · 数据引擎 · NoSQL 底层 · SQL 底层 · KV 最容易实现分布式 · 数据库都是某种形式上的 KV · Redis · redis/node-redis · Redis 官方/主流 Node.js client。 · go-redis/redisrate

References

GitHub

7 条

其他外链

11 条

另有 3 个未显示 references。

另有 3 个 references 未显示。

最近更新commit d77e4c2Edit

On this page