redis学习
一:linux基础知识:
台式机是:32位+8G内存
CentOS-6.10-i386-minimal.iso
VirtualBox-5.2.28-130011-Win.exe(6以上版本不支持32位)
1. 查看网卡以及修改网卡
ifconfig
cd /etc/sysconfig/network-scripts
vim ifcfg-eth0
1)动态获取ip
BOOTPROTO=dhcp
修改: ONBOOT=yes
新增:DNS1=8.8.8.8
2)如果想固定虚拟机的ip,需要如下设置:
DNS1=202.106.46.151
IPADDR=192.168.1.105
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
BOOTPROTO=static
3).添加域名服务器
/etc/resolv.conf
4). 添加本地域名解析服务
vi /etc/hosts
5)重启启动网卡
/etc/init.d/network restart 或者 service network start|stop|restart
6)测试网络
ifconfig
ping www.baidu.com -c 3
2. 设置开机自启动
1)、方法一:修改/etc/rc.local
编辑/etc/rc.local,添加你想开机运行的命令
例如:
cd /etc
vim /etc/rc.local
新增:/usr/local/redis/redis-5.0.4/utils/redis_init_script_6379 start
2)、方法二:添加成服务
linux在“/etc/rc.d/init.d”下有很多的文件,每个文件都是可以看到内容的,其实都是一些shell脚本或者可执行二进制文件
Linux开机的时候,会加载运行/etc/init.d目录下的程序,因此我们可以把想要自动运行的脚本放到这个目录下即可。系统服务的启动就是通过这种方式实现的。
例如
cd /usr/local/redis/redis-5.0.4/utils
cp redis_init_script_6379 /etc/rc.d/init.d/redis
cd /etc/rc.d/init.d
chkconfig --add redis
chkconfig --list redis
这样就可以通过service redis start 启动redis了
3. 添加环境变量
例如:
.将redis-server redis-cli加入环境变量里,就不用每次输入
/usr/local/redis/redis-5.0.4/src/redis-server了
vi /etc/profile
添加以下行:export PATH=$PATH:/usr/local/redis/redis-5.0.4/src
source /etc/profile 使操作生效
4.端口对外开放
cd /etc/sysconfig
vim iptables
新加一行开放6379端口
service iptables restart
5.yum安装
更新yum源
cd /etc/yum.repos.d
curl -O http://mirrors.163.com/.help/CentOS6-Base-163.repo
mv CentOS-Base.repo CentOS-Base.repo.bak
mv CentOS6-Base-163.repo CentOS-Base.repo
yum clean all
yum makecache
安装vim
yum install vim
二:redis安装:
redis 中文网:http://www.redis.cn
1)gcc 安装
1.查看 gcc 版本 gcc -v
CentOS5.7默认没有安装gcc,这会导致我们无法make成功。使用yum安装:
若无安装,则运行 yum install gcc-c++
2).下载和安装
cd /usr/local
mkdir redis
cd redis
wget http://download.redis.io/releases/redis-5.0.4.tar.gz
tar xzvf redis-5.0.4.tar.gz
cd redis-5.0.4
make && and make install
当执行make install之后,在/usr/local/bin下将出现一些redis脚本
如果执行
make install PREFIX=/usr/local/redis ,则会在/usr/local/redis 路径下生成以上文件
出现的问题:
make时报错
zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
zmalloc.h:55:2: error: #error "Newer version of jemalloc required"
make[1]: *** [adlist.o] Error 1
make[1]: Leaving directory `/data0/src/redis-2.6.2/src'
make: *** [all] Error 2
原因是jemalloc重载了Linux下的ANSI C的malloc和free函数。
解决办法:make时添加参数。
make MALLOC=libc
make之后,会出现一句提示
Hint: To run 'make test' is a good idea ;)
但是不测试,通常是可以使用的。若我们运行make test ,会有如下提示
$ make test
You need tcl 8.5 or newer in order to run the Redis test
make: ***[test] Error_1
解决办法是用yum安装tcl8.5(或去tcl的官方网站http://www.tcl.tk/下载8.5版本,并参考官网介绍进行安装)
yum install tcl
3).将redis-server redis-cli加入环境变量里,
就不用每次输入
/usr/local/redis/redis-5.0.4/src/redis-server了
vi /etc/profile
添加以下行:export PATH=$PATH:/usr/local/redis/redis-5.0.4/src
执行:source /etc/profile
4)修改redis配置文件redis.conf 和 redis_init_script
修改redis.conf
cd /usr/local/redis/redis-5.0.4
cp redis.conf redis_6379.conf
vim redis_6379.conf
(1)daemonize yes #以守护进程访问
(2)bind 192.168.1.105 127.1.1.0 #bind多个ip
(3)logfile "" 改成logfile "/usr/local/redis/log/redis.log" #日志存储的路径
(4)修改dir ./为绝对路径
默认的话redis-server启动时会在当前目录生成或读取dump.rdb
所以如果在根目录下执行redis-server /etc/redis.conf的话,
读取的是根目录下的dump.rdb,为了使redis-server可在任意目录下执行
所以此处将dir改为绝对路径
dir /usr/local/redis/redis-5.0.4
修改 redis_init_script
cd /usr/local/redis/redis-5.0.4/utils
cp redis_init_script redis_init_script_6379
vim redis_init_script_6379
修改图片中对应的路径
5).设置开机自启动
vi /etc/rc.local
新增:/usr/local/redis/redis-5.0.4/utils/redis_init_script_6379 start
或者添加服务
cd /usr/local/redis/redis-5.0.4/utils
cp redis_init_script_6379 /etc/rc.d/init.d/redis
cd /etc/rc.d/init.d
chkconfig --add redis
chkconfig --list redis
6).端口开放,远程可连接数据
首先要保证:
Redis的配置文件Redis.conf里面的bind项目的值是我们Linux系统的IP地址,不是默认的127.0.0.1.
否则即使开启端口也不能远程访问
cd cd /usr/local/redis/redis-5.0.4
vim redis_6379.conf
bind 127.0.0.1 改成bind 192.168.1.105 127.1.1.0(绑定两个ip,也可以绑定多个)
cd /etc/sysconfig
vim iptables
新加一行开放6379端口
service iptables restart
7)redis的开启和关闭
开启redis:
方法一:
service redis start
方法二:
cd /usr/local/redis/redis-5.0.4
redis-server ./redis_6379.conf
方法三:
cd /usr/local/redis/redis-5.0.4/utils
./redis_init_script_6379 start
方法四:与方法二类似
将redis_6379.conf 拷贝到/usr/local/bin下
执行:
cd /usr/local/bin
redis-server redis_6379.conf
关闭:
redis-cli -h 192.168.1.105 -p 6379 shutdown
或者redis-cli shutdown
参考文章:
https://www.cnblogs.com/qq931399960/p/10584877.html
https://blog.csdn.net/lgh1117/article/details/48270085
-----------------------------------------------------------------------------------------------------------------------------------
redis集群安装
前提是已经安装完单机版
1.# mkdir reids-cluster
cd /usr/local/
mkdir redis-cluster
2.把之前安装好的 redis/bin 复制到 redis-cluster 中并起名为 redis01
cp -r bin ../redis-cluster/redis01
3.删除掉 redis01 中 dump.rdb 数据库文件
cd redis01
rm -rf dump.rdb
4.修改配置文件
cd redis-cluster
cd redis01
mv redis_6379.cnf redis_7001.cnf
vim redis_7001.cnf
修改 redis01 中端口号为 7001, 找到 port 后面修改为 7001
去掉 cluster-enabled yes 前面的注释
修改日志路径dir,为./
5.把 redis01 文件夹在复制 5 份,分别起名为 redis02,redis03,redis04,redis05,redis06
cp -r redis01 redis02
cp -r redis01 redis03
cp -r redis01 redis04
cp -r redis01 redis05
cp -r redis01 redis06
6.把 其 他 5 个 文 件 夹 中 redis.conf 中 port 修 改 成 不 同 的 值 , 分 别 为
7002,7003,7004,7005,7006
7. 新建一个shell,启动6个服务
cd redis-cluster
vim startall.sh
cd redis01
./redis-server redis_7001.cnf
cd ..
cd redis02
./redis-server redis_7002.cnf
cd ..
cd redis03
./redis-server redis_7003.cnf
cd ..
cd redis04
./redis-server redis_7004.cnf
cd ..
cd redis05
./redis-server redis_7005.cnf
cd ..
cd redis06
./redis-server redis_7006.cnf
cd ..
8.给脚本设置一个可启动权限
chmod +x startall.sh
9.执行脚本,启动所有 redis 服务
./startall.sh
10.查看所有服务是否启动成功
ps aux|grep redis
11.创建集群
原命令 redis-trib.rb 这个工具目前已经废弃,使用redis-cli
./redis-cli --cluster create --cluster-replicas 1 192.168.1.105:7001 192.168.1.105:7002 192.168.1.105:7003 192.168.1.105:7004 192.168.1.105:7005 192.168.1.105:7006
在执行时按照提示输入’yes'
12.进入任意节点测试
redis-cli -h 192.168.10.128 -p 7001 -c
13.关闭其中一个 redis
redis-cli -p 7001 shutdown
开启一个redis,例如redis01这个服务
redis-server ./redis01/redis_7001.cnf
14.在 redis-cluster 中创建文件,并添加下面内容
./redis01/redis-cli -p 7001 shutdown
./redis02/redis-cli -p 7002 shutdown
./redis03/redis-cli -p 7003 shutdown
./redis04/redis-cli -p 7004 shutdown
./redis05/redis-cli -p 7005 shutdown
./redis06/redis-cli -p 7006 shutdown
15.将7001:7006端口开放,可远程访问
修改/etc/sysconfig/iptables
小注:
如果redis 集群不启动,通过命令netstat -an|grep 7001
是查不到端口信息的,这是因为端口开放,需要有listener
没有listener,即使修改了iptables 也不起作用
16.集群异常,>=一半的节点down掉之后,集群失败,需要删除旧的集群,重新建集群
1)停止当前Redis集群各节点的服务,然后删除对应的数据文件 *.aof或*.rdb 和配置文件 nodes.conf
cd redis01
rm -rf dump.rdb nodes-7001.conf
其他redis02-redis06类似
2)重启集群
cd /usr/local/redis-cluster
./startall.sh
3)重建集群
redis-cli --cluster create --cluster-replicas 1 192.168.1.105:7001 192.168.1.105:7002 192.168.1.105:7003 192.168.1.105:7004 192.168.1.105:7005 192.168.1.105:7006
参考:
https://www.cnblogs.com/fousor/p/10598400.html