Redis FAQ
约 2 分钟阅读
标签:FAQ
AOF base file appendonly.aof.1.base.rdb
AOF incr file appendonly.aof.1.incr.aof# delete by pattern
redis-cli -p 6379 --scan --pattern 'city:*' -i 0.01 | xargs -L 100 redis-cli -p 6379 unlinkReplica vs Slave
- 含义完全相同
- slaveof = replicaof
- 是因为调整了名词 redis#5335GitHub Issueredis/redis#5335
Queue: List vs PubSub vs Stream vs ZSet
都能实现消息队列能力,但场景不同
- List
- 存储数据
- 不能重复消费 - POP 后就不存在了
- Pub/Sub
- 不存储数据 - 用于传递信息 - 实现异步/同步通讯
- at-most-once, fire & forget, fan-out
- 没有 Sub 时 Pub 是无意义的
- 可用于订阅系统事件 - keyspace, keyevent - 需要调整配置 键变化通知
- 支持 pattern - 例如
system.events.*
- 不存储数据 - 用于传递信息 - 实现异步/同步通讯
- Stream
- 存储数据 - 有消费者、消费组概念
- 能重复消费 - at-most-once 或 at-least-once
- 有更多消息队列的概念 - 例如: 消息 ID、时间戳、 ACK
- 能实现 List 和 Pub/Sub 的所有语义
- 可以不阻塞
- ZSet
- 有序集合
- score 为 double
- key 会去重
- 可作为消息队列,基于 key/offset 消费
MISCONF Redis is configured to save RDB snapshots
MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled.redis-cli
# config set stop-writes-on-bgsave-error noRESP3
- 目前的 RESP 是 QA 模式,性能和处理能力上有限
- 发送 HELLO 判断是否支持 RESP3
ERR max number of clients reached
- client 默认 timeout 为 0,可尝试添加 timeout 在服务端关闭链接
- maxclients 默认 10,000
# 如果增加了 maxclients 也要增加系统限制
ulimit -Sn 100000
sysctl -w fs.file-max=100000LOCK
- key 为 lock name
- value 为 holder
acquire
SET key uuid PX timeout NXrelease
if redis.call('GET', KEYS[1]) == ARGV[1] then
return redis.call('DEL', KEYS[1])
end
return 0extend
if redis.call('GET', KEYS[1]) == ARGV[1] then
return redis.call('PEXPIRE', KEYS[1], ARGV[2])
end
return 0- 其他方案
WATCH key # Begin watching the key for changes
GET key # Retrieve its value, return an error if not equal to the lock's UUID
MULTI # Start transaction
DEL key # Delete the key
EXEC # Execute the transaction, which will fail if the key had expired关联信息
反向链接和本文引用的外部资料。
References
GitHub
3 条- microfleet/ioredis-lockgithub.com/microfleet/ioredis-lock
- mike-marcacci/node-redlockgithub.com/mike-marcacci/node-redlock
- redis/redis#5335github.com/redis/redis/issues/5335
其他外链
3 条- gist.github.com/antirez/2bc68a9e9e45395e297d288453d5d54cgist.github.com/antirez/2bc68a9e9e45395e297d288453d5d54c
- gist.github.com/kapkaev/4619127gist.github.com/kapkaev/4619127
- redis.io/docs/latest/develop/use/patterns/distributed-locksredis.io/docs/latest/develop/use/patterns/distributed-locks