redis安装配置

# 源码安装 wget http://download.redis.io/releases/redis-3.0.6.tar.gz

tar xzf redis-3.0.6.tar.gz

cd redis-3.0.6

make

 

# 启动服务端 src/redis-server

# 启动客户端 src/redis-cli

##########################################################

 

 

# 检测后台进程是否存在

ps -ef |grep redis

 

# 检测6379端口是否在监听

netstat -lntp | grep 6379

 

# 客户端连接

$ sudo redis-cli

127.0.0.1:6379> set foo bar

OK

127.0.0.1:6379> get foo

"bar"

##############################################################

 

 

 

wget http://download.redis.io/releases/redis-3.0.5.tar.gz

tar zxf redis-3.0.5.tar.gz

cd redis-3.0.5

#less README

make MALLOC=jemalloc

make PREFIX=/application/redis-3.0.5 install        -->指定安装路径

-----------------------------------------------------------------------

[root@node5 redis-3.0.5]# make PREFIX=/application/redis-3.0.5 install

cd src && make install

make[1]: Entering directory `/software/redis-3.0.5/src'

 

Hint: It's a good idea to run 'make test' ;)

 

    INSTALL install

    INSTALL install

    INSTALL install

    INSTALL install

    INSTALL install

make[1]: Leaving directory `/software/redis-3.0.5/src'

[root@node5 redis-3.0.5]#

 

 

------------------------------------------------------------------------

 

echo $?

ln -s /application/redis-3.0.5/ /application/redis

 

[root@node5 application]# ln -s /application/redis-3.0.5/ /application/redis

[root@node5 application]# tree /application/redis

/application/redis

└── bin

    ├── redis-benchmark

    ├── redis-check-aof

    ├── redis-check-dump

    ├── redis-cli

    ├── redis-sentinel -> redis-server

    └── redis-server

 

1 directory, 6 files

[root@node5 application]#

 

# 1、 配置环境变量

# 编辑vim /etc/profile添加一行

vim /etc/profile

export PATH=/application/redis/bin/:$PATH

tail -1 /etc/profile  -->检查   

source /etc/profile   -->生效

 

Or:

[root@node5 application]# echo export PATH=/application/redis/bin/:$PATH >> /etc/profile

 

tail -1 /etc/profile  -->检查   

source /etc/profile   -->生效

 

# 2、 拷贝配置文件

 

 

 

 

[root@node5 redis-3.0.5]# mkdir /application/redis/conf

[root@node5 redis-3.0.5]# pwd

/software/redis-3.0.5

[root@node5 redis-3.0.5]# cp redis.conf /application/redis/conf/

[root@node5 redis-3.0.5]#

 

启动redis:

 

[root@node5 redis-3.0.5]# redis-server  /application/redis/conf/redis.conf &

[root@node5 redis-3.0.5]# lsof -i:6379

COMMAND     PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME

redis-ser 31961 root    4u  IPv4 3739811      0t0  TCP *:6379 (LISTEN)

[root@node5 redis-3.0.5]#

 

关闭redis:

 

[root@node5 redis-3.0.5]# redis-cli shutdown

31961:M 28 Dec 16:05:40.873 # User requested shutdown...

31961:M 28 Dec 16:05:40.873 * Saving the final RDB snapshot before exiting.

31961:M 28 Dec 16:05:40.881 * DB saved on disk

31961:M 28 Dec 16:05:40.881 # Redis is now ready to exit, bye bye...

[1]+  Done                    redis-server /application/redis/conf/redis.conf

[root@node5 redis-3.0.5]# lsof -i:6379

[root@node5 redis-3.0.5]#

 

###########################

 

[root@node5 redis-3.0.5]# redis-server  /application/redis/conf/redis.conf &

 

[root@node5 redis-3.0.5]# redis-cli -h 10.83.35.65

10.83.35.65:6379> help

redis-cli 3.0.5

Type: "help @<group>" to get a list of commands in <group>

      "help <command>" for help on <command>

      "help <tab>" to get a list of possible help topics

      "quit" to exit

10.83.35.65:6379>

 

10.83.35.65:6379> help set

 

  SET key value [EX seconds] [PX milliseconds] [NX|XX]

  summary: Set the string value of a key

  since: 1.0.0

  group: string

 

10.83.35.65:6379> set 007 oldsuo

OK

10.83.35.65:6379> get 007

"oldsuo"

10.83.35.65:6379>

 

 

或者:

 

[root@node5 redis-3.0.5]# redis-cli -h 10.83.35.65 -p 6379 set no005 suoning

OK

[root@node5 redis-3.0.5]# redis-cli -h 10.83.35.65 -p 6379 get no005

"suoning"

[root@node5 redis-3.0.5]#

 

 

删除并检查:

[root@node5 redis-3.0.5]# redis-cli del no005

(integer) 1

[root@node5 redis-3.0.5]# redis-cli get no005

(nil)

[root@node5 redis-3.0.5]#

 

 

------------------------------------------------------------------------

 

 

# 1、修改从库redis.conf配置文件

#配置从库redis.conf配置文件(先装redis)

#添加一行,主库IP地址及端口

vim /application/redis/conf/redis.conf

# slaveof <masterip> <masterport>

slaveof 192.168.200.95 6379

 

 

# 2、重启从库redis服务

pkill redis

redis-server /application/redis/conf/redis.conf &

 

#启动提示

7815:S 23 Nov 19:48:52.059 # Server started, Redis version 3.0.5

7815:S 23 Nov 19:48:52.060 * The server is now ready to accept connections on port 6379

7815:S 23 Nov 19:48:53.060 * Connecting to MASTER 192.168.200.95:6379     -->跟主库建立连接

7815:S 23 Nov 19:48:53.060 * MASTER <-> SLAVE sync started                -->主从同步已经开始

7815:S 23 Nov 19:48:53.062 * Non blocking connect for SYNC fired the event.

7815:S 23 Nov 19:48:53.074 * Master replied to PING, replication can continue...      -->主从ping可以继续

7815:S 23 Nov 19:48:53.075 * Partial resynchronization not possible (no cached master)

7815:S 23 Nov 19:48:53.087 * Full resync from master: 24b26f7abc62830a7ff97516c960ba7fc0992da9:1

7815:S 23 Nov 19:48:53.122 * MASTER <-> SLAVE sync: receiving 32 bytes from master    -->接收到字节数

7815:S 23 Nov 19:48:53.122 * MASTER <-> SLAVE sync: Flushing old data

7815:S 23 Nov 19:48:53.122 * MASTER <-> SLAVE sync: Loading DB in memory

7815:S 23 Nov 19:48:53.122 * MASTER <-> SLAVE sync: Finished with success  -->成功

 

 

# 3、测试主从同步

# 主库:写数据

[root@localhost redis]# redis-cli

127.0.0.1:6379> set test1 oldsuo

OK

 

# 从库:

[root@localhost conf]# redis-cli -h localhost -p 6379 monitor      -->开启实时监控

OK

1448280033.096372 [0 192.168.200.95:6379] "PING"

1448280043.125830 [0 192.168.200.95:6379] "PING"

1448280053.154134 [0 192.168.200.95:6379] "PING"

1448280070.858808 [0 192.168.200.95:6379] "SELECT" "0"

1448280070.858828 [0 192.168.200.95:6379] "set" "test1" "oldsuo"   -->主库添加数据,从库同步

 

[root@localhost redis]# redis-cli -h 192.168.200.92 get test1

"oldsuo"        -->从库同步成功

 

 

至于 redis 的负载均衡,方案有很多:

LVS、keepalived、Twemproxy

小编有时间再补上吧...

 

Redis持久化方式有两种:

 

(1)RDB

 

对内存中数据库状态进行快照

 

(2)AOF

 

把每条写命令都写入文件,类似mysql的binlog日志

 

RDB

 

将Redis在内存中的数据库状态保存到磁盘里面,RDB文件是一个经过压缩的二进制文件,通过该文件可以还原生成RDB文件时的数据库状态

 

RDB的生成方式:

 

(1)执行命令手动生成

 

有两个Redis命令可以用于生成RDB文件,一个是SAVE,另一个是BGSAVE

 

SAVE命令会阻塞Redis服务器进程,直到RDB文件创建完毕为止,在服务器进程阻塞期间,服务器不能处理任何命令请求

 

BGSAVE命令会派生出一个子进程,然后由子进程负责创建RDB文件,服务器进程(父进程)继续处理命令请求,创建RDB文件结束之前,客户端发送的BGSAVE和SAVE命令会被服务器拒绝

 

(2)通过配置自动生成

 

可以设置服务器配置的save选项,让服务器每隔一段时间自动执行一次BGSAVE命令

 

可以通过save选项设置多个保存条件,但只要其中任意一个条件被满足,服务器就会执行BGSAVE命令

 

例如:

 

save 900 1

save 300 10

save 60 10000

 

那么只要满足以下三个条件中的任意一个,BGSAVE命令就会被执行

 

服务器在900秒之内,对数据库进行了至少1次修改

服务器在300秒之内,对数据库进行了至少10次修改

服务器在60秒之内,对数据库进行了至少10000次修改

 

AOF

 

AOF持久化是通过保存Redis服务器所执行的写命令来记录数据库状态的

 

AOF文件刷新的方式,有三种

 

(1)appendfsync always - 每提交一个修改命令都调用fsync刷新到AOF文件,非常非常慢,但也非常安全

 

(2)appendfsync everysec - 每秒钟都调用fsync刷新到AOF文件,很快,但可能会丢失一秒以内的数据

 

(3)appendfsync no - 依靠OS进行刷新,redis不主动刷新AOF,这样最快,但安全性就差

 

默认并推荐每秒刷新,这样在速度和安全上都做到了兼顾

 

数据恢复

 

RDB方式

 

RDB文件的载入工作是在服务器启动时自动执行的,没有专门用于载入RDB文件的命令,只要Redis服务器在启动时检测到RDB文件存在,它就会自动载入RDB文件,服务器在载入RDB文件期间,会一直处于阻塞状态,直到载入工作完成为止

 

AOF方式

 

服务器在启动时,通过载入和执行AOF文件中保存的命令来还原服务器关闭之前的数据库状态,具体过程:

 

(1)载入AOF文件

 

(2)创建模拟客户端

 

(3)从AOF文件中读取一条命令

 

(4)使用模拟客户端执行命令

 

(5)循环读取并执行命令,直到全部完成

 

如果同时启用了RDB和AOF方式,AOF优先,启动时只加载AOF文件恢复数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值