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
- valkey笔记valkeyBSD-3, C · placeholderkv -> valkey · Redis 7.2 BSD fork · valkey-io/valkey-glide · Apache-2.0, Rust, Java, Python, Go, TypeScript打开:/notes/db/kv/valkey
- codeberg.org/redict/redict
- 支持的数据类型: 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
- 参考
- 5 Key Takeaways for Developing with RedisLinkredislabs.com/blog/5-key-takeaways-for-developing-with-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
- Keep Track of Your Keys
- Keep Track of the Length of Your Key Names
- Use the Right Data Structures
- Use SCAN, Never Use KEYS
- Use Server-Side Lua Scripts
- Redis configuration for productionLinkscaleyourcode.com/blog/article/15redis/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
- 5 Key Takeaways for Developing with RedisLinkredislabs.com/blog/5-key-takeaways-for-developing-with-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
- RedisGraphGitHubRedisLabsModules/redis-graph
- A graph database as a Redis module
# 使用配置文件启动
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- HASH Key 不支持 TTL #6620GitHub Issueredis/redis#6620
- keydb笔记KeyDBBSD-3, C++,C · ⚠️ 开发缓慢 · 多线程 Redis - IO 多线程,事务单线程 · ModJS - 可以通过 V8 扩展 · 同步 redis 源码 - 版本匹配 · active-replication, multi-master, flash, s3 backup打开:/notes/db/kv/keydb 可以 - 但是没有事件
- Redis Cluster V2 project redis#8948GitHub Issueredis/redis#8948
- HSETEX, HMSETEX redis#2905GitHub Issueredis/redis#2905
- 批量删除 key redis#4153GitHub Issueredis/redis#4153
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 同时使用
| command | note |
|---|---|
-> SET key value EX seconds | |
-> SET key value NX | |
-> SET key value PX milliseconds | |
-> SET key value GET |
Stream
- redis api
- 参考
命令
- L - List
- H - Hash
- Z - SortedSet
- S - Set
- X - Stream
- Channel - SUBSCRIBE,PUBLISH,UNSUBSCRIBE
- P - Pattern - PSUBSCRIBE,PUNSUBSCRIBE
- S - Shared - 集群 channel
Module
- 写 Redis 模块的教程
- Redis 模块仓库
- Antirez 关于 Redis 模块的博客
- wenerme/go-rmGitHubwenerme/go-rm
- 使用 Golang 写 Redis 模块
键变化通知
- 配置
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, ... |
| lshztxed` - 除了 mn 的所有事件 |
- Ex - 只监听 key 过期
- AKE - 监听所有事件
- Kx - 键空间过期通知
| evennt | command |
|---|---|
| del | DEL,MIGRATE,RPOP,LPOP |
| rename_from,rename_to | RENAME |
| move_from,move_to | MOVE |
| copy_to | COPY |
| restore | RESTORE |
| expire | EXPIRE,SETEX |
| sortstore | SORT STORE |
| set | SET,MSET |
| setrange | SETRANG |
| incrby | INCR, DECR, INCRBY, DECRBY |
| incrbyfloat | INCRBYFLOAT |
| append | |
| lpush | |
| rpush | |
| rpop | |
| lpop | |
| linsert | |
| lrem | |
| ltrim | |
| hset | HSET, HSETNX, HMSET |
| hincrby | |
| hincrbyfloat | |
| hdel | |
| sadd | SADD,SMOVE |
| srem | SREM,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 16Inside
关联信息
反向链接和本文引用的外部资料。
反向链接
- KV DB Awesome笔记 · Redis
缓存 · 数据引擎 · NoSQL 底层 · SQL 底层 · KV 最容易实现分布式 · 数据库都是某种形式上的 KV · Redis · redis/node-redis · Redis 官方/主流 Node.js client。 · go-redis/redisrate
References
GitHub
7 条- redis/redisgithub.com/redis/redis
- redis/redis#2905github.com/redis/redis/issues/2905
- redis/redis#4153github.com/redis/redis/issues/4153
- redis/redis#6620github.com/redis/redis/issues/6620
- redis/redis#8948github.com/redis/redis/issues/8948
- RedisLabsModules/redis-graphgithub.com/RedisLabsModules/redis-graph
- wenerme/go-rmgithub.com/wenerme/go-rm
其他外链
11 条- antirez.com/news/106antirez.com/news/106
- antirez.com/news/116antirez.com/news/116
- codeberg.org/redict/redictcodeberg.org/redict/redict
- gist.github.com/antirez/4e7049ce4fce4aa61bf0cfbc3672e64dgist.github.com/antirez/4e7049ce4fce4aa61bf0cfbc3672e64d
- gist.github.com/antirez/68e67f3251d10f026861be2d0fe0d2f4gist.github.com/antirez/68e67f3251d10f026861be2d0fe0d2f4
- redis.io/docs/reference/optimization/benchmarksredis.io/docs/reference/optimization/benchmarks
- redislabs.com/blog/5-key-takeaways-for-developing-with-redisredislabs.com/blog/5-key-takeaways-for-developing-with-redis
- redislabs.com/blog/writing-redis-modulesredislabs.com/blog/writing-redis-modules
另有 3 个未显示 references。
另有 3 个 references 未显示。