Redis是单线程还是双线程?适用场景及经验总结 road

本文探讨了Redis在实际应用中的场景选择,强调了Redis作为缓存和存储的差异,并指出Redis适用于大量写入复杂数据结构或简单持久化场景。文章还分析了Redis的单线程模型及其线程池处理IO任务的方式,包括bgsave的后台进程和两个后台IO线程,用于处理文件关闭和AOF同步。
摘要由CSDN通过智能技术生成

尊重劳动成功,转载请附上本文链接及作者:jianfeng_soft@163.com   (road)

         最近(周五)在与朋友聊天时,聊到他们做游戏服务端用到一个排行榜的功能,自然接下来我们就聊到了redis,但由于线程问题,网上普遍看到都是单线程,不管是单线程或但即便是双线程,hashes..hgetall...也会出现cpu瓶颈,对于解决此瓶颈,目前能想到的就是在前面先打一层MC(Midnight Commander)减少请求量

     个人总结,在试用redis前,首先需要准确定位你是使用redis 的 cache呢还是使用她的存储?

     cache实用于前面提到的排行榜,统计短数据量的场景,因为用redis的list存排行榜数据,如果内存不够可以T出。

     另外我大致以个人经验简述一下redis的场景和注意事项,希望能给未有过实用经验的小伙伴带来一些帮助,redis 只适合应用于大量写入复杂的数据结构,或者简单的数据结构但要持久化的场景,并且最关键是数据容量必须要小于内存,

     因此必须要在使用前做硬件内存容量规划,比如未来的增长预算,当前存入一个hashes kv需要占用多少空间,依此来做预算。

     即便做了持久化,内存碎片也很严重,意思就是即便数据被移到磁盘(rdb或aof),所有数据始终都会仍然存在于占用内存 (因此你需要考虑是否需要做持久化?做持久化是选择rdb还是aof?)

           rdb: 好处是只会短期内影响读写速度,但是可能丢数据 ;

           aof: 每一次写都导致有性能下级,并且恢复时间要长,比mc的延迟更高,特别是做了持久化,即便不做持久化也比mc更延迟。

    综合评测redis优缺点
         优点:内存操作特别快,高级的数据结构可用, 
         缺点:磁盘操作慢,偶尔延迟,耗内存 


最后附带以下是段落是摘自网络对redis线程(单双之谜)进行贴码透析:

多进程分析:

[html]  view plain copy
  1. int rdbSaveBackground(char *filename) {  
  2.     pid_t childpid;  
  3.     long long start;  
  4.   
  5.     if (server.rdb_child_pid != -1) return REDIS_ERR;  
  6.   
  7.     server.dirty_before_bgsave = server.dirty;  
  8.     server.lastbgsave_try = time(NULL);  
  9.   
  10.     start = ustime();  
  11.     if ((childpid = fork()) == 0) {  
  12.         int retval;  
  13.   
  14.         /* Child */  
  15.         if (server.ipfd > 0) close(server.ipfd);  
  16.         if (server.sofd > 0) close(server.sofd);  
  17.         retval = rdbSave(filename);  
  18.         if (retval == REDIS_OK) {  
  19.             size_t private_dirty = zmalloc_get_private_dirty();  
  20.   
  21.             if (private_dirty) {  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值