Redis 数据库进阶知识
# 进入Redis 安装目录
# 本地启动:
redis-server.exe redis.windows.conf
# 使用CLI:
redis-cli.exe -h 127.0.0.1 -p 6379
# 获取 redis 服务器的统计信息
INFO
1 HyperLogLog
Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。
# Pfadd 命令将所有元素参数添加到 HyperLogLog 数据结构中。返回整型,如果至少有个元素被添加返回 1, 否则返回 0。
PFADD key element [element ...]
# Pfcount 命令返回给定 HyperLogLog 的基数估算值。如果多个 HyperLogLog 则返回基数估值之和。
PFCOUNT key [key ...]
# PFMERGE 命令将多个 HyperLogLog 合并为一个 HyperLogLog ,合并后的 HyperLogLog 的基数估算值是通过对所有给定 HyperLogLog 进行并集计算得出的。返回 OK。
PFMERGE destkey sourcekey [sourcekey ...]
2 发布订阅
发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。Redis 客户端可以订阅任意数量的频道。
# Psubscribe 命令订阅一个或多个符合给定模式的频道。每个模式以 * 作为匹配符,比如 it* 匹配所有以 it 开头的频道( it.news 、 it.blog 、 it.tweets 等等)。 news.* 匹配所有以 news. 开头的频道( news.it 、 news.global.today 等等),诸如此类。返回接收到的信息。
PSUBSCRIBE pattern [pattern ...]
# Subscribe 命令用于订阅给定的一个或多个频道的信息。返回接收到的信息。
SUBSCRIBE channel [channel ...]
# Pubsub 命令用于查看订阅与发布系统状态,它由数个不同格式的子命令组成。返回由活跃频道组成的列表。
PUBSUB <subcommand> [argument [argument ...]]
PUBSUB CHANNELS
# Publish 命令用于将信息发送到指定的频道。返回接收到信息的订阅者数量。
PUBLISH channel message
# Punsubscribe 命令用于退订所有给定模式的频道。
PUNSUBSCRIBE [pattern [pattern ...]]
# Unsubscribe 命令用于退订给定的一个或多个频道的信息。
UNSUBSCRIBE channel [channel ...]
3 事务
单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的。事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。
# Multi 命令用于标记一个事务块的开始。事务块内的多条命令会按照先后顺序被放进一个队列当中,最后由 EXEC 命令原子性(atomic)地执行。总是返回 OK 。
Multi
# Discard 命令用于取消事务,放弃执行事务块内的所有命令。总是返回 OK 。
DISCARD
# Exec 命令用于执行所有事务块内的命令。事务块内所有命令的返回值,按命令执行的先后顺序排列。 当操作被打断时,返回空值 nil 。
Exec
# Watch 命令用于监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。总是返回 OK 。
WATCH key [key ...]
# Unwatch 命令用于取消 WATCH 命令对所有 key 的监视。总是返回 OK 。
UNWATCH
4 脚本
Redis 脚本使用 Lua 解释器来执行脚本。执行脚本的常用命令为 EVAL。
5 GEO
Redis 的 GEO 模块是一组用于处理地理位置数据的命令,允许你存储、查询和操作带有经纬度坐标的位置,适用于位置检索、地图服务、附近的人/店等功能。
6 Stream
Redis Stream 主要用于消息队列(MQ,Message Queue),Stream 提供了消息的持久化和主备复制功能,可以让任何客户端访问任何时刻的数据,并且能记住每一个客户端的访问位置,还能保证消息不丢失。
7 其它功能
# SAVE 命令用于创建当前数据库的备份。将在 redis 安装目录中创建dump.rdb文件。如果需要恢复数据,只需将备份文件 (dump.rdb) 移动到 redis 安装目录并启动服务即可。
SAVE
# 设置登录密码
CONFIG get requirepass
CONFIG set requirepass "登录密码"
# 连接 Redis 需要验证密码,否则无法执行命令。
AUTH password
# Redis 管道技术可以在服务端未响应时,客户端可以继续向服务端发送请求,并最终一次性读取所有服务端的响应。管道技术最显著的优势是提高了 redis 服务的性能
# Redis 分区:范围分区、哈希分区