MultipleWrite Redis
2017-01-05 09:29:19 0 举报
MultipleWrite Redis是一种高效的数据写入策略,它允许用户一次性发送多个键值对到Redis服务器进行批量处理。这种写入方式可以显著提高数据写入速度,减少网络延迟和客户端与服务器之间的通信次数。通过将多个操作合并为一个请求,MultipleWrite Redis能够有效地利用Redis的原子性特性,确保所有操作要么全部成功,要么全部失败。此外,该策略还支持条件更新,可以根据特定条件选择性地更新键值对。总之,MultipleWrite Redis是一种强大的工具,可以帮助开发者更高效地管理和操作Redis数据库。
作者其他创作
大纲/内容
Thread D
Slave C
Writer thread
Thread B
Slave B
机顶盒
Client端始终在往Queue中的头部放数据,而Writer Thread只负责在Queue的尾部获取数据并插入到Mongo
Client
CDN
Sentinel三台服务器避免单点故障,同时提供三组Redis HA和auto failover处理。
Mongo
Thread A
3.机顶盒根据C1资源文件访问路径,访问CDN服务器获取资源
2.应用端返回数据,携带C1资源文件访问路径
管理端
Master A
Redis List结构,Queue方案
Redis Shrading
Slave A
此方案会丢失数据,除非在程序中控制Redis的插入和删除,避免掉并发,否则会有数据丢失,因为不能保证读线程在lrange拿到数据后执行删除操作,此间隙没有插入数据
Redis相同Key(List)
Thread C
此处存在并发问题,实际并发问题是在客户端,因为当专门负责清除缓存的线程,刚拿到数据准备清除的时候,这中途可能会有人插入数据,导致再次执行删除时,这部分数据会丢失掉。所以最终插入的总数和转存到Mongo的数据不一致
Thread Get/Clear负责读取缓存数据并且清空缓存数据
Redis是单线程的,所有命令相当于进入了栈中,是一个一个执行的,所以Redis本身并不会有并发问题存在,并发的问题在于使用Redis时,也就是客户端
注入C1资源文件(图片)
Sentinel C同时监控三台Master服务
Redis Sentinel HA至少三主三从
Master C
此方案比较稳定并不会产生数据丢失,但效率会比较低下,如果插入过于频繁可能导致内存持续飙升,Write线程只能从队列的尾部陆续获取数据进行存储至Mongo,缓存服务器的压力会增大
Writer thread to save data to Mongo负责读取缓存数据往Mongo插入
Sentinel A同时监控三台Master服务
Sentinel B同时监控三台Master服务
Insert
应用端
1.机顶盒请求应用端提供
Master B
收藏
收藏
0 条评论
下一页