Redis相关问题

Redis在单纯增加CPU(或者CPU核心数)的情况下会有显著性能提升吗?


redis的读取和处理性能非常强大,一般服务器的cpu都不会是性能瓶颈。redis的性能瓶颈主要集中在内存和网络方面。所以,如果使用的redis命令多为O(N)、O(log(N))时间复杂度,那么基本上不会出现cpu瓶颈的情况。
但是如果你确实需要充分使用多核cpu的能力,那么需要在单台服务器上运行多个redis实例(主从部署/集群化部署),并将每个redis实例和cpu内核进行绑定(使用 taskset命令,百度:https://www.baidu.com/s?wd=taskset&tn=84053098_3_dg&ie=utf-8)。

如果需要进行集群化部署,你需要对redis进行分片存储,可以参考https://redis.io/topics/partitioning


我们知道Redis是用"单线程-多路复用io模型"来实现高性能的内存数据服务的,这种机制避免了使用锁,但是同时这种机制在进行sunion之类的比 较耗时的命令时会使redis的并发下降。因为是单一线程,所以同一时刻只有一个操作在进行,所以,耗时的命令会导致并发的下降,不只是读并发,写并发也 会下降。而单一线程也只能用到一个cpu核心,所以可以在同一个多核的服务器中,可以启动多个实例,组成master-master或者master- slave的形式,耗时的读命令可以完全在slave进行
需要改的redis.conf项
pidfile /var/run/redis/redis_6377.pid  #pidfile要加上端口号
port 6377  #这个是必须改的
 logfile /var/log/redis/redis_6377.log #logfile的名称也加上端口号
dbfilename dump_6377.rdb  #rdbfile也加上端口号

下面是性能参数

[plain] view plain copy
  1. L1 cache reference 0.5 ns  
  2. Branch mispredict 5 ns  
  3. L2 cache reference 7 ns  
  4. Mutex lock/unlock 25 ns  
  5. Main memory reference 100 ns  
  6. Compress 1K bytes with Zippy 3,000 ns  
  7. Send 2K bytes over 1 Gbps network 20,000 ns  
  8. Read 1 MB sequentially from memory 250,000 ns  
  9. Round trip within same datacenter 500,000 ns  
  10. Disk seek 10,000,000 ns  
  11. Read 1 MB sequentially from disk 20,000,000 ns 

标签: redis

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://bjspace.net/post/72

相关推荐

发表吐槽

你肿么看?

你还可以输入 250 / 250 个字

嘻嘻 大笑 可怜 吃惊 抛媚眼 调皮 鄙视 示爱 哭 开心 偷笑 嘘 奸笑 委屈 抱抱 Dog 大兵 威武

评论信息框

吃奶的力气提交吐槽中...


既然没有吐槽,那就赶紧抢沙发吧!