码迷,mamicode.com
首页 > 其他好文 > 详细

redis的安装和使用

时间:2017-11-04 13:47:06      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:从服务器   soc   enc   nav   部分   存在   link   支持   ase   

redis应用场景

1.全部数据in-memory

2.作为memcache的替代品

3.需要key/varue之外的更多数据类型

4.适应于存储的数据不能被剔除时

 

redis安装与使用

1.准备2个安装包

redis-3.2.3.tar.gz

redis-3.0.0.tgz  php-redis扩展

 

2.安装redis

tar redis-3.2.3.tar.gz

tar zxvf redis-3.2.3.tar.gz

cd redis-3.2.3

make

mkdir -p /usr/local/redis/conf

mkdir -p /usr/local/redis/run

mkdir -p /usr/local/redis/db

cp redis.conf /usr/local/redis/conf/

cd src

cp redis-benchmark redis-check-aof redis-cli redis-server mkreleasehdr.sh /usr/local/redis/

vi /usr/local/redis/conf/redis.conf

daemonize yes
pidfile /usr/local/redis/run/redis.pid
dir /usr/local/redis/db

 

vi /usr/local/redis/start.sh

#!/bin/bash
/usr/local/redis/redis-server /usr/local/redis/conf/redis.conf

 

vi /usr/local/redis/stop.sh

#!/bin/bash
kill `cat /usr/local/redis/run/redis.pid`

 

chmod a+x  /usr/local/redis/start.sh  /usr/local/redis/stop.sh

 

4:启动 redis 服务

/usr/local/redis/start.sh

 

验证证服务是否成功:

netstat -nlpt | grep 6379

 

5:客户端连接测试

/usr/local/redis/redis-cli

127.0.0.1:6379> set key1 var1

OK

127.0.0.1:6379> get key1

"var1"

 

6.php扩展

tar zxvf redis-3.0.0.tgz

cd redis-3.0.0

phpize

 

可能报错:

Configuring for:

PHP Api Version:         20041225

Zend Module Api No:      20060613

Zend Extension Api No:   220060519

Cannot find autoconf. Please check your autoconf installation and the  $PHP_AUTOCONF  environment variable is set correctly and then rerun this script.

解决办法:

wget http://ftp.gnu.org/gnu/m4/m4-1.4.9.tar.gz

tar -zvxf m4-1.4.9.tar.gz

cd m4-1.4.9/

./configure && make && make install

cd ../

wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.62.tar.gz

tar -zvxf autoconf-2.62.tar.gz

cd autoconf-2.62/

./configure && make && make install

 

./configure --with-php-config=/usr/local/php/bin/php-config

make && make install

 

安装完后会有类似这样的提示:

Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20060922/

 

把这个extension的路径记住, 然后修改php.ini

extension_dir = "./"

修改为

extension_dir = "/usr/local/php/lib/php/extensions/"

 

并添加一行

extension="no-debug-non-zts-20060922/redis.so"

 

7.在thinkphp下使用redis

<?php

$redisConfig = [

      host => 127.0.0.1,

      port => 6379,

      passwd => 123456,

      dbIndex => 0,

      timeout => 10,

      link_name => redislink

];

if (extension_loaded(Redis)) {

      $redis = new \Redis();

      $redis->connect($redisConfig[host], $redisConfig[port], $redisConfig[timeout]);

      $redis->auth($redisConfig[passwd]);

      $redis->client(setname, $redisConfig[link_name]);

      if ((gettype($redis->socket) == resource)) {

            $this->redis = $redis;

            $this->redis->select($redisConfig[dbIndex]);

      }

}

?>

 

Redis Master/Slave 主从集群配置

部分重同步

从 Redis 2.8 开始, 在网络连接短暂性失效之后, 主从服务器可以尝试继续执行原有的复制进程(process), 而不一定要执行完整重同步操作。

从服务器的复制功能的作用: 数据冗余 + 读写分离 + 减轻负载

1.可以单纯地用于数据冗余(data redundancy)

2.也可以通过让多个从服务器处理只读命令请求, 实现读写分离

3.也可以让主服务器免于执行持久化操作(关闭主、开启从的持久化功能), 减轻负载

主服务器只在有至少 N 个从服务器的情况下,才执行写操作

如果至少有 min-slaves-to-write 个从服务器, 并且这些服务器的延迟值都少于 min-slaves-max-lag 秒, 那么主服务器就会执行客户端请求的写操作。(尽管不能保证写操作的持久性, 但起码丢失数据的窗口会被严格限制在指定的秒数中)

以下是这个特性的两个选项和它们所需的参数:

min-slaves-to-write <number of slaves>

min-slaves-max-lag <number of seconds>

 

Master IP:127.0.0.1  PORT:6379

Slave1 IP:127.0.0.1  PORT:63791

Slave2 IP:127.0.0.1  PORT:63792

 

1:复制两个 Slave 目录,方便管理

cp -r /usr/local/redis /usr/local/redis-slave1

cp -r /usr/local/redis /usr/local/redis-slave2

 

2:修改 redis-slave1 的配置文件和服务脚本 (slave2同此)

从服务器支持只读模式, 并且该模式为从服务器的默认模式。

vi /usr/local/redis-slave1/conf/redis.conf

port 63791

pidfile /usr/local/redis-slave1/run/redis.pid

dir /usr/local/redis-slave1/db

slaveof 127.0.0.1 6379

#masterauth <password>  #连接主服务器所需要的密码

 

vi /usr/local/redis-slave1/start.sh

#!/bin/bash

/usr/local/redis-slave1/redis-server /usr/local/redis-slave1/conf/redis.conf

 

vi /usr/local/redis-slave1/stop.sh

#!/bin/bash

kill `cat /usr/local/redis-slave1/run/redis.pid`

 

3:启动 M/S 服务

/usr/local/redis/start.sh

/usr/local/redis-slave1/start.sh

/usr/local/redis-slave2/start.sh

netstat -nlpt | grep redis-server  #验证服务是否正常: 有3个端口存在证明成功了

0 0.0.0.0:6379 

0 0.0.0.0:63791

0 0.0.0.0:63792

 

4:验证M/S服务是否生效

/usr/local/redis/redis-cli     [默认连接端口:6379 的 Master服务]

>set key1 var1

>quit

 

/usr/local/redis/redis-cli -p 63791     [连接 Slave1 服务]

>get key1

"var1"

 

/usr/local/redis/redis-cli -p 63792     [连接 Slave2 服务]

>get key1

"var1"

 

redis-cli -h 127.0.0.1 -p 63791 info  //主库上显示info

redis-cli -h 127.0.0.1 -p 63792 monitor  //从库上监控

 

redis负载均衡

给redis服务器做主从同步, 然后利用lvs轮询server1和server2

或者: http://doc.redisfans.com/topic/cluster-tutorial.html

 

 

 

 

 

 

;

redis的安装和使用

标签:从服务器   soc   enc   nav   部分   存在   link   支持   ase   

原文地址:http://www.cnblogs.com/upup2015/p/7782439.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!