数据库|Redis使用指南
文章图片
文章图片
文章图片
Redis是一个使用ANSI C编写的开源、包含多种数据结构、支持网络、基于内存、可选持久性的键值对存储数据库 。
- 基于内存运行 , 性能高效
- 支持分布式 , 理论上可以无限扩展
- key-value存储系统
- 开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库 , 并提供多种语言的API
- C/S通讯模型
- 单进程单线程模型
- 丰富的数据类型
- 操作具有原子性
- 持久化
- 高并发读写
- 支持lua脚本
Redis 的持久化策略RDB:快照形式是直接把内存中的数据保存到一个 dump 的文件中 , 定时保存 , 保存策略 。 AOF:把所有的对 Redis 的服务器进行修改的命令都存到一个文件里 , 命令的集合 。 Redis 默认是快照 RDB 的持久化方式 。
当 Redis 需要做持久化时 , Redis 会 fork 一个子进程 , 子进程将数据写到磁盘上一个临时 RDB 文件中 。
使用 AOF 做持久化 , 每一个写命令都通过 write 函数追加到 appendonly.aof 中 , 配置方式如下:
appendfsyncyesappendfsync always #每次有数据修改发生时都会写入AOF文件 。 appendfsync everysec #每秒钟同步一次 , 该策略为AOF的缺省策略 。
AOF 可以做到全程持久化 , 只需要在配置中开启 appendonly yes 。 这样 Redis 每执行一个修改数据的命令 , 都会把它添加到 AOF 文件中 , 当 Redis 重启时 , 将会读取 AOF 文件进行重放 , 恢复到 Redis 关闭前的最后时刻 。
主从复制主从配置结合哨兵模式能解决单点故障问题 , 提高 Redis 可用性 。
从节点仅提供读操作 , 主节点提供写操作 。 对于读多写少的状况 , 可给主节点配置多个从节点 , 从而提高响应效率 。
Redis 2.8 之前使用 sync[runId
[offset
同步命令 , Redis 2.8 之后使用 psync[runId
[offset
命令 。
runId:每个 Redis 节点启动都会生成唯一的 uuid , 每次 Redis 重启后 , runId 都会发生变化 。 offset:主节点和从节点都各自维护自己的主从复制偏移量 offset , 当主节点有写入命令时 , offset=offset+命令的字节长度 。 从节点在收到主节点发送的命令后 , 也会增加自己的 offset , 并把自己的 offset 发送给主节点 。 这样 , 主节点同时保存自己的 offset 和从节点的 offset , 通过对比 offset 来判断主从节点数据是否一致 。 repl_backlog_size:保存在主节点上的一个固定长度的先进先出队列 , 默认大小是 1MB 。
主节点发送数据给从节点过程中 , 主节点还会进行一些写操作 , 这时候的数据存储在复制缓冲区中 。
从节点同步主节点数据完成后 , 主节点将缓冲区的数据继续发送给从节点 , 用于部分复制 。
主节点响应写命令时 , 不但会把命名发送给从节点 , 还会写入复制积压缓冲区 , 用于复制命令丢失的数据补救 。
Redis 的应用场景包括:缓存系统(“热点”数据:高频读、低频写)、计数器、消息队列系统、排行榜、社交网络和实时系统 。
- 数据库|OPPO悄悄上新机,骁龙8核+5000mAh电池,256G仅售1599元
- 数据库|丁磊致歉“鱼眼观察”作者并回应:已撤回删稿函
- 数据库|刘强东:如果我失去对京东的控制权,我立刻把京东卖了
- 数据库|国产数据库后浪崛起,OceanBase如何打入千行百业?
- oce国产数据库后浪崛起,OceanBase如何打入千行百业?
- 数据库|抖音、快手走上了阿里、京东的老路
- 小米 12/Pro 即将全球发布,已出现在印度尼西亚电信数据库中
- 数据库|大淘宝更重视直播了,中小商家如何掘金?
- S7-1200/1500连接MS SQL数据库
- 数据库|下一个“双十一”?电商巨头疯狂烧钱,春节大战薅羊毛机会来了!