Redis 反模式

《Seven NoSQL Databases in a week》关于Redis 的笔记。

1. 数据量大于内存
数据不能全部放入内存,性能会有很大影响。

2. 使用关系型数据
这需要多次操作并且在应用端JOIN。而且Redis不支持关系数据库的ACID。

3. 连接管理。
打开的连接必须要关闭。如果使用连接池,也需要确保连接正常关闭。

4. 安全
Redis应该运行在一个安全的内部网络中。Redis不负责安全。

5. 使用命令 KEYS
KEYS命令相当于数据库 SELECT ..FROM 而没有WHERE语句。当Redis有大量数据时,会明显降低Redis的性能。

6. 不必要的网络往返
可以使用这几种方法,
- 重用Redis连接,而不要每次都创建新的连接。
- 在一次提交的事务中执行多条命令。
- 使用聚合命令操作多个Key

7. 忘记关闭THP
THP = Transparent Huge Pages

sudo echo never > /sys/kernel/mm/transparent_hugepage/enabled

THP会在后台fork一个进程在持久化数据到磁盘,会带来一定的延迟。

### Redis 主从复制工作原理 在Redis主从复制机制中,多台Redis服务器被划分为master(主节点)和slave(从节点),其中主从复制指的是将主节点的数据复制到从节点上[^1]。这种数据流动是单向的,即仅能由主节点流向从节点,不允许反方向操作[^2]。 Redis采用的是异步方式进行主从之间的数据同步,这意味着即使在网络延迟的情况下也不会阻塞主节点的操作,从而保持了系统的高响应性和性能[^3]。当客户端发送命令给主节点并得到确认之后,这些更改会被记录下来并通过网络传输至各个从节点,在此过程中不会影响到后续命令的处理。 ### 配置方法 对于希望构建稳定可靠的分布式存储解决方案而言,合理设置参数至关重要: #### 修改配置文件 要启用主从复制功能,可以在`redis.conf`配置文件里指定如下选项来定义关系: - `slaveof <masterip> <masterport>`:用于指明当前实例作为哪个IP地址上的特定端口所对应的主机的服务器副本;如果想要动态调整,则可以通过CLI工具执行相同命名完成在线变更。 另外还可以通过其他几个重要指令进一步优化行为特性,比如控制日志级别、持久化策略等以满足不同业务需求下的最佳实践指南建议。 #### 启动服务 确保所有涉及机器都已安装好软件包版本一致,并按照上述说明编辑完毕各自的conf文档后分别启动各自的服务进程即可建立连接形成集群结构。 ```bash # 假设已经正确设置了 redis.conf 文件中的 slaveof 参数 $ src/redis-server ./redis.conf --daemonize yes ``` ### 使用场景 随着互联网应用规模不断扩大以及访问量日益增长的趋势下,单一节点难以承受巨大流量冲击带来的风险挑战。因此引入冗余设计思路成为必然选择之一——利用多个实例共同承担任务负荷不仅能够有效缓解资源紧张局面还能增强整体可用性水平。具体来说包括但不限于以下几个方面: - **提高读取效率**:由于大多数情况下查询类请求远大于更新型事务占比重,所以让部分成员专门负责应答此类简单动作可显著降低核心组件的工作强度; - **灾难恢复能力**:一旦发生意外事故造成原生源不可用时,备用方案可以迅速接管继续提供不间断的服务支持而不至于完全瘫痪中断; - **地理分布优势**:针对跨国界运营平台来讲,靠近目标受众部署镜像站点有助于减少跨洲际链路延时现象提升用户体验质量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值