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

 

 

 

 

posted on 2019-04-26 14:32  美丽的小鹿  阅读(347)  评论(0编辑  收藏  举报