亿级流量场景下,大型缓存架构设计实现,你知道吗?( 二 )


(1)首先在四台机器上配置对本机的ssh免密码登录ssh-keygen -t rsa生成本机的公钥,过程中不断敲回车即可,ssh-keygen命令默认会将公钥放在/root/.ssh目录下cd /root/.sshcp id_rsa.pub authorized_keys将公钥复制为authorized_keys文件,此时使用ssh连接本机就不需要输入密码了
(2)接着配置三台机器互相之间的ssh免密码登录使用ssh-copy-id -i hostname命令将本机的公钥拷贝到指定机器的authorized_keys文件中
虚拟机环境设置[2]:
---- 单机版Redis安装以及生产环境设置(开机自启动)
1、安装单机版tcl + redis
1. wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz2. tar -xzvf tcl8.6.1-src.tar.gz3. cd /usr/local/tcl8.6.1/unix/4. ./configure5. make && make install
6. 使用redis-3.2.8.tar.gz(截止2017年4月的最新稳定版)7. tar -zxvf redis-3.2.8.tar.gz8. cd redis-3.2.89. make && make test && make install
------------------------------------------------------------------------
2、redis的生产环境启动方案
如果一般的学习课程,你就随便用redis-server启动一下redis,做一些实验,这样的话,没什么意义
1. 要把redis作为一个系统的daemon进程去运行的,每次系统启动,redis进程一起启动
(1)redis utils目录下,有个redis_init_script脚本(2)将redis_init_script脚本拷贝到linux的/etc/init.d目录中(初始化目录),将redis_init_script重命名为redis_6379,6379是我们希望这个redis实例监听的端口号(3)修改redis_6379脚本的第6行的REDISPORT,设置为相同的端口号(默认就是6379)(4)创建两个目录:
/etc/redis(存放redis的配置文件),
/var/redis/6379(存放redis的持久化文件,也就是后面要使用的redis备份)(5)修改redis配置文件(默认在根目录下,redis.conf),拷贝到/etc/redis目录中,修改名称为6379.conf
(6)修改redis.conf中的部分配置为生产环境
daemonize yes 让redis以daemon进程运行(守护线程,可以理解为java运行时的jvm线程,在后台进行service服务)
pidfile /var/run/redis_6379.pid 设置redis的pid文件位置 【/var/run 目录下放的是各程序的pid】
port 6379 设置redis的监听端口号
dir /var/redis/6379 设置持久化文件的存储位置
(7)启动redis,执行cd /etc/init.d, chmod 777 redis_6379,
./redis_6379 start
(8)确认redis进程是否启动,ps -ef | grep redis
(9)让redis跟随系统启动自动启动
在redis_6379脚本中,最上面,加入两行注释
# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database
在Xshell中执行 chkconfig redis_6379 on
------------------------------------------------------------------------
3、redis cli的使用
redis-cli SHUTDOWN,连接本机的6379端口停止redis进程;
redis-cli -h 127.0.0.1 -p 6379 SHUTDOWN,制定要连接的ip和端口号
redis-cli PING,ping redis的端口,看是否正常
redis-cli,进入交互式命令行:
存取删测试:
set k1 v1
get k1
del k1
------------------------------------------------------------------------------------------------
redis的使用以及原理分析:redis的技术,包括4块:
redis各种数据结构和命令的使用,包括java api的使用,这类操作命令其他的博客非常完善,可以经常性的查询熟悉;redis一些特殊的解决方案的使用,pub/sub消息系统,分布式锁,输入的自动完成等;redis日常的管理相关的命令;redis企业级的集群部署和架构;
1、redis持久化的意义:

亿级流量场景下,大型缓存架构设计实现,你知道吗?

文章插图
Note:
--- Redis在不使用备份的情况下会产生缓存雪崩问题,也就是redis宕机后,没有备份的情况下,所有查询操作全部直接涌入数据库,导致数据库机器宕机;
亿级流量场景下,大型缓存架构设计实现,你知道吗?

文章插图
两种备份方式分析:
---下边堆 redis 写如数据的两种方式进行分析:
原理图:
亿级流量场景下,大型缓存架构设计实现,你知道吗?

文章插图
redis 的 AOF 下的 rewrite 机制原理:
亿级流量场景下,大型缓存架构设计实现,你知道吗?

文章插图
AOF和RDB两种模式:
AOF机制对每条写入命令作为日志,以Append-only的模式写入一个日志文件中,在redis重启的时候,可以通过回放AOF日志中的写入指令来重新构建整个数据集
如果我们想要redis仅仅作为纯内存的缓存来用,那么可以禁止RDB和AOF所有的持久化机制【但是采用这种方式的项目是个高危项目】


推荐阅读