docker部署Redis6.0.6

3 篇文章 0 订阅
2 篇文章 0 订阅

下载redis.conf配置

下载地址:

http://download.redis.io/redis-stable/redis.conf

拉取docker镜像

docker pull redis:6.0.6

使用weget下载redis.conf

cd /usr/local/redis wget http://download.redis.io/redis-stable/redis.conf

修改redis.conf配置

protected-mode no 关闭保护模式,负责不能外网访问 
requirepass 123456 设置密码 
daemonize yes配置是否后台启动 
bind 0.0.0.0绑定IP。不限制IP 
data /*** 数据存放得目录 mkdir data 
appendonly 是否支持持久化数据 yes/no

Redis 6.0 默认是否开启了多线程?

否,在conf文件进行配置

io-threads-do-reads yes 
io-threads 线程数

官方建议:4 核的机器建议设置为 2 或 3 个线程,8 核的建议设置为 6 个线程,线程数一定要小于机器核数,尽量不超过8个。

 

运行docker

docker run -d -name myRedis -p 6379:6379 -v /var/redis/data:/data -v /usr/local/redis.conf:/etc/redis/redis.conf --restart=always redis:6.0.6 redis-server /etc/redis/redis.conf


docker-compose.yml

version: "3"
services:
  redis:
    image: redis:6.0.6
    container_name: myRedis
    restart: always
    ports:
      - 6380:6379
    volumes:
      - /var/redis/data:/data:rw
      - /usr/local/redis/redis.conf:/etc/redis/redis.conf:rw
    command:
      redis-server /etc/redis/redis.conf

Redis 6.0 多线程实现机制

流程简述如下:

 

1、主线程负责接收建立连接请求,获取 socket 放入全局等待读处理队列

2、主线程处理完读事件之后,通过 RR(Round Robin) 将这些连接分配给这些 IO 线程

3、主线程阻塞等待 IO 线程读取 socket 完毕

4、主线程通过单线程的方式执行请求命令,请求数据读取并解析完成,但并不执行

5、主线程阻塞等待 IO 线程将数据回写 socket 完毕

6、解除绑定,清空等待队列

 

该设计有如下特点:

 

IO 线程要么同时在读 Socket,要么同时在写,不会同时读或写。

IO 线程只负责读写 socket 解析命令,不负责命令处理(主线程串行执行命令)

IO 线程数可自行配置(目前代码限制上限为 512,默认为 1(关闭此功能))

开启多线程后,是否会存在线程并发安全问题?

不会,Redis 的多线程部分只是用来处理网络数据的读写和协议解析,执行命令仍然是单线程顺序执行。

 

Redis 线程中经常提到 IO 多路复用,如何理解?

这是 IO 模型的一种,即经典的 Reactor 设计模式,有时也称为异步阻塞 IO。

 

多路指的是多个 Socket 连接,复用指的是复用一个线程。多路复用主要有三种技术:Select,Poll,Epoll。

 

Epoll 是最新的也是目前最好的多路复用技术。采用多路 I/O 复用技术可以让单个线程高效的处理多个连接请求(尽量减少网络 IO 的时间消耗),且 Redis 在内存中操作数据的速度非常快(内存内的操作不会成为这里的性能瓶颈),主要以上两点造就了 Redis 具有很高的吞吐量。

 

Redis6.0与Memcached多线程模型对比:

相同点:都采用了 master线程-worker 线程的模型

不同点:Memcached 执行主逻辑也是在 worker 线程里,模型更加简单,实现了真正的线程隔离,符合我们对线程隔离的常规理解。而 Redis 把处理逻辑交还给 master 线程,虽然一定程度上增加了模型复杂度,但也解决了线程并发安全等问题。

Linux查看CPU几路几核几线程

linux-7inj:~ # cat /proc/cpuinfo

显示cpu的所有信息

linux-7inj:~ # cat /proc/cpuinfo |grep 'physical id'|sort -u|wc -l

1

显示的是物理cpu个数

linux-7inj:~ # cat /proc/cpuinfo |grep 'core id'|sort -u|wc -l

4

显示的是核数

linux-7inj:~ # cat /proc/cpuinfo |grep 'processor'|sort -u|wc -l

8

显示是线程数

CPU为单路4核8线程

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值