Redis实战与分析
楼主在实现一分布式存储系统时,拟采用Redis来做一个pull的过程来进行多机之间的数据拉取,于在此将redis安装部署过程分享一下,并学习波Redis的内部存储结构,Redis中间的hash环问题,以及Redis集群的主从模式。
redis单机安装
如果make报错,信息如下:error:jemalloc/jemalloc.h: No such file or directory
执行 make MALLOC=libc
redis-server看到如下界面,说明安装成功
使用redis-server redis/redis-4.0.1/redis.conf 可以开启redis客户端,默认前台运行。
使用redis-cli -h IP地址 -P 端口号开启redis客户端
eg :redis -h 127.0.0.0 -p 6397
查看redis :ps aux|grep redis
干掉redis-server :pkill redis-server
redis多机部署
三台机器:192.168.0.100 192.168.0.101 192.168.0.102
每台机器两个redis端口:6001 6004 , 6002 6005 , 6003 6006.
每台机器建立文件夹 /var/redis-cluster/6001 /var/redis-cluster/6004
根据每台机器不同端口号修改文件夹名称,共3个redis-cluster,每个cluster 两个600x文件夹,一共 6个600x文件夹。
在每个600x文件夹下创建三个文件夹 conf data log ,其中data 用于存储信息,logs 用于存储日志,conf 放配置信息
将在开始解压出的文件夹下的redis.conf分别copy到6个600x/conf文件夹下。(可自行写脚本做)
对每个复制过来的redis.conf进行修改
port 修改为对相应的端口号

bind修改为自己的ip地址

daemonize yes #是否以后台daemon方式运行,默认不是后台运行

余下配置:
pidfile /var/run/redis/redis.pid #redis的PID文件路径
logfile /var/redis-cluster/6001/log/redis-6001.log #定义log文件位置
dir /var/redis-cluster/6001/data #本地数据库存放路径
appendonly yes #打开aof持久化,不适用save
cluster-enabled yes //开启集群 把注释#去掉
cluster-config-file nodes_6001.conf //集群的配置
cluster-node-timeout 15000 //请求超时 默认15秒,可自行设置
每台机器每个端口号上根据各自端口号都设置好(集群规模大可以写脚本来搞定)
6个端口都运行以启动redis-server
redis-server /var/redis-cluster/6001/conf/redis.conf
集群建立
redis /src中已经提供了建立redis集群的工具redis-trib.rb,
可以直接./redis-trib.rb create --replicas 1 xxx.xxx.xxx.xxx:6001 xxx.xxx.xxx.xxx:6002 xxx.xxx.xxx.xxx:6003 xxx.xxx.xxx.xxx:6004 xxx.xxx.xxx.xxx:6005 xxx.xxx.xxx.xxx:6006 建立集群
只不过这玩意是用Ruby来做的,必须要现有Ruby环境
yum -y install ruby ruby-devel rubygems rpm-build //一般这样安装下来ruby版本太低,需要更新ruby版本
gem install redis
更新Ruby版本
①添加yum源安装:CentOS SCLo Software collections Repository
yum install centos-release-scl-rh //会在/etc/yum.repos.d/目录下多出一个CentOS-SCLo-scl-rh.repo源
~]# yum install rh-ruby23 -y //直接yum安装即可
~]# scl enable rh-ruby23 bash //必要一步
~]# ruby -v
②下载tar压缩包安装
~]# wget http://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.5.tar.gz
~]# tar zxvf ruby-2.3..tar.gz
~]# cd ruby-2.3.
ruby-2.3.]# ./configure --prefix=/opt/ruby
ruby-2.3.]# make && make install
ruby-2.3.]# ln -s /opt/ruby/bin/ruby /usr/bin/ruby
ruby-2.3.]# ln -s /opt/ruby/bin/gem /usr/bin/gem
~]#ruby -v //查看一下
③RVM(Ruby Version Manager)安装(相对官方)
~]#gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
~]# \curl -sSL https://get.rvm.io | bash -s stable
上边这两行绿的不是注释,是网址
~]# source /etc/profile.d/rvm.sh //按照提示,执行该命令
~]# rvm list known // list一下可以安装的版本
~]# rvm install 2.4. // 安装ruby 2.4.1 ,直接跟版本号即可
~]# ruby -v //查看验证下已经安装的版本
~]# gem -v
然后执行上边./redis-trib.rb create --replicas 1 xxx.xxx.xxx.xxx:6001 xxx.xxx.xxx.xxx:6002 xxx.xxx.xxx.xxx:6003 xxx.xxx.xxx.xxx:6004 xxx.xxx.xxx.xxx:6005 xxx.xxx.xxx.xxx:6006 建立集群
--replicas参数指定集群中每个主节点配备几个从节点,这里设置为1,如果部署节点使用不同的IP地址,redis-trib-rb会尽可能保证主从节点不分配在同一台机器下,因此会重新排序节点表顺序,节点列表顺序用于确定主从角色,先主节点之后是从节点。
如果执行中出现无法连接的问题主要关注: 防火墙 使用的是新的.conf配置 每台机器的redis-server都开启
若有以前执行过的redis-server问题, 用redis-cli 登录到每个节点执行 flushall 和 cluster reset 就可以了。每个都执行一遍,免得又出问题。
至此结束:
可以使用redis-cli在节点一上写东西,然后再节点3上获取到。
下节我们研究redis的底层存储结构,主从模式,以及hash过程。
Redis实战与分析的更多相关文章
- Redis实战阅读笔记——开始
Redis实战这本书,看完以后最大的不是redis本身的东西,而是作者面对实际问题的分析而给出的设计方案,可以看成NoSql设计的应用.个人从这方面收获很多,至于Redis本身的东西,这个就花一两个小 ...
- (转)国内外三个不同领域巨头分享的Redis实战经验及使用场景
随着应用对高性能需求的增加,NoSQL逐渐在各大名企的系统架构中生根发芽.这里我们将为大家分享社交巨头新浪微博.传媒巨头Viacom及图片分享领域佼佼者Pinterest带来的Redis实践,首先我们 ...
- Redis事务原理分析
Redis事务原理分析 基本应用 在Redis的事务里面,采用的是乐观锁,主要是为了提高性能,减少客户端的等待.由几个命令构成:WATCH, UNWATCH, MULTI, EXEC, DISCARD ...
- Redis实战经验及使用场景
随着应用对高性能需求的增加,NoSQL逐渐在各大名企的系统架构中生根发芽.这里我们将为大家分享社交巨头新浪微博.传媒巨头Viacom及图片分享领域佼佼者Pinterest带来的Redis实践,首先我们 ...
- Redis实战:如何构建类微博的亿级社交平台
微博及 Twitter 这两大社交平台都重度依赖 Redis 来承载海量用户访问.本文介绍如何使用 Redis 来设计一个社交系统,以及如何扩展 Redis 让其能够承载上亿用户的访问规模. 虽然单台 ...
- Redis实战篇
Redis实战篇 1 Redis 客户端 1.1 客户端通信 原理 客户端和服务器通过 TCP 连接来进行数据交互, 服务器默认的端口号为 6379 . 客户端和服务器发送的命令或数据一律以 \r\n ...
- Redis实战阅读笔记——第一章
Redis 实战 中文版 的20-21页看的人郁闷死了,最后看英文版才明白意思,哎,我理解能力差成这样了 其中,图 1-12 有错误,草,这个是英文版的错--应该是group:programming
- redis实战(01)_redis安装
早就想对redis进行实战操作了,最近看了一些视频和参考书籍,总结总结一下,redis实战内容: 实战前先对redis做一个大概的认识: 现在开始安装redis了... redis的安装下载地址 ht ...
- Redis时延问题分析及应对
Redis时延问题分析及应对 Redis的事件循环在一个线程中处理,作为一个单线程程序,重要的是要保证事件处理的时延短,这样,事件循环中的后续任务才不会阻塞: 当redis的数据量达到一定级别后(比如 ...
随机推荐
- 大数据学习笔记之Hadoop(三):MapReduce&YARN
文章目录 一 MapReduce概念 1.1 为什么要MapReduce 1.2 MapReduce核心思想 1.3 MapReduce进程 1.4 MapReduce编程规范(八股文) 1.5 Ma ...
- web测试点
一.输入框 1.字符型输入框: (1)字符型输入框:英文全角.英文半角.数字.空或者空格.特殊字符“~!@#¥%……&*?[]{}”特别要注意单引号和&符号. 禁止直接输入特殊字符时, ...
- excel vlookup的使用
表1 姓名 部门 *** *** *** *** 表2 姓名 部门 *** *** *** *** *** *** *** *** 找表2的姓名对应部门,粘贴在表1中 vloo ...
- Boosting Ensemble and GBDT Algorithm
Boosting Ensemble: 机器学习中,Ensemble model除了Bagging以外,更常用的是Boosting.与Bagging不同,Boosting中各个模型是串行的.其思想是,后 ...
- for语句和if语句画正方形菱形
public static void main(String[] args) { int n =8; // 空心正方形 for(int i=0;i<=n;i++){ if(i==0||i==n) ...
- 用python实现批量获取Linux主机简要信息并保存到Excel中 unstable 1.1
#!/usr/bin/env python3 # -*- coding: utf-8 -*- #filename get_linux_info.py #获取Linux主机的信息 # titles=[' ...
- 源码包安装Mysql
特殊原因我需要装在个人用户下 libtool-2.4.2.tar.xz mysql-5.1.37.tar.gz 1.解压libtool-2.4.2.tar.xz tar -xvf libtoo ...
- Java中File的处理
不知道“文件”和“文件路径”是否存在的处理情况 1.如果是文件,先获取文件父路径,没有就生成父路径,然后再生成文件. public class TestMain { public static voi ...
- Magolor的数据结构作业
\(CodeForces 706E ~Working routine\) 给出一个矩阵,每次操作交换两个子矩阵,求最后状态. 使用链表存储,每次交换后,影响到的之后矩阵边缘的指针,暴力修改. \(~~ ...
- get和post 两种基本请求方式的区别
GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数. 你可能自己 ...