Redis安装及主从复制实战

Redis 是一款开源的,使用C语言编写的、支持网络交互的、可基于内存也可持久化的高性能Key-Value存储系统(cache and store)。它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(hashes), 列表(list), 集合(sets)有序集合(sorted
       sets)
等类型。

Redis作者谈Redis应用场景:http://blog.nosqlfan.com/html/2235.html


1.redis安装部署:
wget http://download.redis.io/releases/redis-3.0.5.tar.gz
tar xf redis-3.0.5.tar.gz
cd redis-3.0.5
less README   #(如何安装,查看README,INSTALL)
make MALLOC=jemalloc
make PREFIX=/application/redis-3.0.5 install
ln -s /application/redis-3.0.5/ /application/redis
echo "export PATH=/application/redis/bin/:$PATH" >>/etc/profile
source /etc/profile
[[email protected] ~]# which redis-server
/application/redis/bin/redis-server
[[email protected] redis-3.0.5]# ls
00-RELEASENOTES  INSTALL     runtest           tests
BUGS             Makefile    runtest-cluster   utils
CONTRIBUTING     MANIFESTO   runtest-sentinel
COPYING          README      sentinel.conf
deps             redis.conf  src

[[email protected] redis-3.0.5]# mkdir /application/redis/conf
[[email protected] redis-3.0.5]# cp redis.conf /application/redis/conf/
[[email protected] redis-3.0.5]# redis-server /application/redis/conf/redis.conf  &
[1] 5321
5321:M 01 Nov 21:38:48.524 * Increased maximum number of open files to 10032 (it was originally set to 1024).
                _._                                                  
           _.-``__ ‘‘-._                                             
      _.-``    `.  `_.  ‘‘-._           Redis 3.0.5 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ‘‘-._                                   
 (    ‘      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|‘` _.-‘|     Port: 6379
 |    `-._   `._    /     _.-‘    |      PID: 5321
  `-._    `-._  `-./  _.-‘    _.-‘                                   
 |`-._`-._    `-.__.-‘    _.-‘_.-‘|                                  
 |    `-._`-._        _.-‘_.-‘    |           http://redis.io        
  `-._    `-._`-.__.-‘_.-‘    _.-‘                                   
 |`-._`-._    `-.__.-‘    _.-‘_.-‘|                                  
 |    `-._`-._        _.-‘_.-‘    |                                  
  `-._    `-._`-.__.-‘_.-‘    _.-‘                                   
      `-._    `-.__.-‘    _.-‘                                       
          `-._        _.-‘                                           
              `-.__.-‘

5321:M 01 Nov 21:38:48.525 # Server started, Redis version 3.0.5
5321:M 01 Nov 21:38:48.525 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add ‘vm.overcommit_memory = 1‘ to /etc/sysctl.conf and then reboot or run the command ‘sysctl vm.overcommit_memory=1‘ for this to take effect.
5321:M 01 Nov 21:38:48.525 * The server is now ready to accept connections on port 6379

[[email protected] redis-3.0.5]# killall redis-server
5321:signal-handler (1446385182) Received SIGTERM scheduling shutdown...
5321:M 01 Nov 21:39:42.523 # User requested shutdown...
5321:M 01 Nov 21:39:42.523 * Saving the final RDB snapshot before exiting.
5321:M 01 Nov 21:39:42.526 * DB saved on disk
5321:M 01 Nov 21:39:42.526 # Redis is now ready to exit, bye bye...
[1]+  Done                    redis-server /application/redis/conf/redis.conf

[[email protected] redis-3.0.5]#  sysctl vm.overcommit_memory=1
vm.overcommit_memory = 1
[[email protected] redis-3.0.5]# redis-server  /application/redis/conf/redis.conf  &
[1] 5334
5334:M 01 Nov 21:42:03.900 * Increased maximum number of open files to 10032 (it was originally set to 1024).
                _._                                                  
           _.-``__ ‘‘-._                                             
      _.-``    `.  `_.  ‘‘-._           Redis 3.0.5 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ‘‘-._                                   
 (    ‘      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|‘` _.-‘|     Port: 6379
 |    `-._   `._    /     _.-‘    |      PID: 5334
  `-._    `-._  `-./  _.-‘    _.-‘                                   
 |`-._`-._    `-.__.-‘    _.-‘_.-‘|                                  
 |    `-._`-._        _.-‘_.-‘    |           http://redis.io        
  `-._    `-._`-.__.-‘_.-‘    _.-‘                                   
 |`-._`-._    `-.__.-‘    _.-‘_.-‘|                                  
 |    `-._`-._        _.-‘_.-‘    |                                  
  `-._    `-._`-.__.-‘_.-‘    _.-‘                                   
      `-._    `-.__.-‘    _.-‘                                       
          `-._        _.-‘                                           
              `-.__.-‘

5334:M 01 Nov 21:42:03.900 # Server started, Redis version 3.0.5
5334:M 01 Nov 21:42:03.900 * DB loaded from disk: 0.000 seconds
5334:M 01 Nov 21:42:03.900 * The server is now ready to accept connections on port 6379

[[email protected] redis-3.0.5]# netstat -tunlp|grep 6379
tcp        0      0 0.0.0.0:6379                0.0.0.0:*                   LISTEN      5334/redis-server *
tcp        0      0 :::6379                     :::*                        LISTEN      5334/redis-server *

[[email protected] redis-3.0.5]# lsof -i:6379             
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
redis-ser 5334 root    4u  IPv6  20820      0t0  TCP *:6379 (LISTEN)
redis-ser 5334 root    5u  IPv4  20822      0t0  TCP *:6379 (LISTEN)

[[email protected] redis-3.0.5]# redis-cli  shutdown     #关闭服务
5334:M 01 Nov 21:46:49.015 # User requested shutdown...
5334:M 01 Nov 21:46:49.015 * Saving the final RDB snapshot before exiting.
5334:M 01 Nov 21:46:49.017 * DB saved on disk
5334:M 01 Nov 21:46:49.017 # Redis is now ready to exit, bye bye...
[1]+  Done                    redis-server /application/redis/conf/redis.conf
[[email protected] redis-3.0.5]# lsof -i:6379

[[email protected] redis-3.0.5]# ll /application/redis/
total 4
drwxr-xr-x 2 root root 4096 Nov  1 21:19 bin
[[email protected] redis-3.0.5]# tree /application/redis/bin
/application/redis/bin
├── redis-benchmark  #Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能
├── redis-check-aof  #更新日志检查
├── redis-check-dump #用于本地数据库检查
├── redis-cli        #Redis命令行操作工具。当然你也可以用telnet根据其纯文本协议来操作
├── redis-sentinel -> redis-server
└── redis-server     #Redis服务器的daemon启动程序

0 directories, 6 files

[[email protected] redis-3.0.5]# redis-cli --help
redis-cli 3.0.5

Usage: redis-cli [OPTIONS] [cmd [arg [arg ...]]]
  -h <hostname>      Server hostname (default: 127.0.0.1).
  -p <port>          Server port (default: 6379).
  -s <socket>        Server socket (overrides hostname and port).
  -a <password>      Password to use when connecting to the server.
  -r <repeat>        Execute specified command N times.
  -i <interval>      When -r is used, waits <interval> seconds per command.
                     It is possible to specify sub-second times like -i 0.1.
  -n <db>            Database number.
  -x                 Read last argument from STDIN.
  -d <delimiter>     Multi-bulk delimiter in for raw formatting (default: \n).
  -c                 Enable cluster mode (follow -ASK and -MOVED redirections).
  --raw              Use raw formatting for replies (default when STDOUT is
                     not a tty).
  --no-raw           Force formatted output even when STDOUT is not a tty.
  --csv              Output in CSV format.
  --stat             Print rolling stats about server: mem, clients, ...
  --latency          Enter a special mode continuously sampling latency.
  --latency-history  Like --latency but tracking latency changes over time.
                     Default time interval is 15 sec. Change it using -i.
  --latency-dist     Shows latency as a spectrum, requires xterm 256 colors.
                     Default time interval is 1 sec. Change it using -i.
  --lru-test <keys>  Simulate a cache workload with an 80-20 distribution.
  --slave            Simulate a slave showing commands received from the master.
  --rdb <filename>   Transfer an RDB dump from remote server to local file.
  --pipe             Transfer raw Redis protocol from stdin to server.
  --pipe-timeout <n> In --pipe mode, abort with error if after sending all data.
                     no reply is received within <n> seconds.
                     Default timeout: 30. Use 0 to wait forever.
  --bigkeys          Sample Redis keys looking for big keys.
  --scan             List all keys using the SCAN command.
  --pattern <pat>    Useful with --scan to specify a SCAN pattern.
  --intrinsic-latency <sec> Run a test to measure intrinsic system latency.
                     The test will run for the specified amount of seconds.
  --eval <file>      Send an EVAL command using the Lua script at <file>.
  --help             Output this help and exit.
  --version          Output version and exit.

Examples:
  cat /etc/passwd | redis-cli -x set mypasswd
  redis-cli get mypasswd
  redis-cli -r 100 lpush mylist x
  redis-cli -r 100 -i 1 info | grep used_memory_human:
  redis-cli --eval myscript.lua key1 key2 , arg1 arg2 arg3
  redis-cli --scan --pattern ‘*:12345*‘
(Note: when using --eval the comma separates KEYS[] from ARGV[] items)
When no command is given, redis-cli starts in interactive mode.
Type "help" in interactive mode for information on available commands.

[[email protected] redis-3.0.5]# redis-cli
127.0.0.1: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
127.0.0.1:6379> help get

GET key
  summary: Get the value of a key
  since: 1.0.0
  group: string

127.0.0.1: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

127.0.0.1:6379> set no002 oldboy
OK
127.0.0.1:6379> get no002
"oldboy"
127.0.0.1:6379> quit

[[email protected] redis-3.0.5]# redis-cli  -h 10.0.0.6 -p 6379 set no001 zhangsan
OK
[[email protected] redis-3.0.5]# redis-cli  -h 10.0.0.6 -p 6379 get no001
"zhangsan"
[[email protected] redis-3.0.5]# redis-cli del no001
(integer) 1
[[email protected] redis-3.0.5]# redis-cli del no001
(integer) 0
[[email protected] redis-3.0.5]# telnet 127.0.0.1 6379
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is ‘^]‘.
set no003 jisu
+OK
get no003
$4
jisu

2.redis的php客户端扩展安装
下载:https://github.com/nicolasff/phpredis/archive/phpredis-2.2.4.tar.gz
tar zxvf phpredis-2.2.4.tar.gz  #解压
cd phpredis-2.2.4                    #进入安装目录
/application/php/bin/phpize  #生成configure配置文件
./configure --with-php-config=/application/php/bin/php-config
make             #编译
make install  #安装

#安装完成之后,出现下面的安装路径
/application/php5.6.12/lib/php/extensions/no-debug-zts-20131226/

3.配置php支持
vi   #编辑配置文件,在最后一行添加以下内容
添加
extension = redis.so
extension_dir = "/application/php5.6.12/lib/php/extensions/no-debug-zts-20131226/"

4.redis配置文件介绍及主从同步配置:
a、slave配置:
 210 # slaveof <masterip> <masterport>
 211    slaveof  10.0.0.6   6379  #为master的IP及服务端口
[[email protected] conf]# redis-cli -h localhost -p 6379 monitor  #在slave库打开主从同步实时监控
OK
1448619846.561773 [0 10.0.0.6:6379] "PING"
1448619856.670778 [0 10.0.0.6:6379] "PING"
...............................
1448619947.631375 [0 10.0.0.6:6379] "PING"

b、master操作:
[[email protected] ~]# redis-cli
127.0.0.1:6379> set t1 oldboy01
OK
127.0.0.1:6379> get t1
"oldboy01"
127.0.0.1:6379>

此时再查看从库:
。。。。。。。。。。。。。。。
1448619947.631375 [0 10.0.0.6:6379] "PING"
1448619955.222078 [0 10.0.0.6:6379] "SELECT" "0"
1448619955.222147 [0 10.0.0.6:6379] "set" "t1" "oldboy01"

主库连接到从库查看:
[[email protected] ~]# redis-cli -h 10.0.0.7 get t1
"oldboy01"
[[email protected] ~]# redis-cli -h localhost -p 6379 info       #查看redis服务的统计信息
# Server
redis_version:3.0.5
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:b358be82c008aa44
redis_mode:standalone
os:Linux 2.6.32-504.el6.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.4.7
process_id:5357
run_id:b93947dbd3db2bc911115f9187d3d3f176861c17
tcp_port:6379
uptime_in_seconds:5665
uptime_in_days:0
hz:10
lru_clock:3551121
config_file:/application/redis/conf/redis.conf

# Clients
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0

# Memory
used_memory:1884728
used_memory_human:1.80M
used_memory_rss:2523136
used_memory_peak:1920672
used_memory_peak_human:1.83M
used_memory_lua:36864
mem_fragmentation_ratio:1.34
mem_allocator:jemalloc-3.6.0

# Persistence
loading:0
rdb_changes_since_last_save:1
rdb_bgsave_in_progress:0
rdb_last_save_time:1446391003
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:0
rdb_current_bgsave_time_sec:-1
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok

# Stats
total_connections_received:13
total_commands_processed:703
instantaneous_ops_per_sec:1
total_net_input_bytes:25030
total_net_output_bytes:1198
instantaneous_input_kbps:0.04
instantaneous_output_kbps:0.00
rejected_connections:0
sync_full:1
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
evicted_keys:0
keyspace_hits:4
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:310
migrate_cached_sockets:0

# Replication
role:master
connected_slaves:1
slave0:ip=10.0.0.7,port=6379,state=online,offset=1011,lag=1
master_repl_offset:1011
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:1010

# CPU
used_cpu_sys:4.19
used_cpu_user:1.95
used_cpu_sys_children:0.00
used_cpu_user_children:0.00

# Cluster
cluster_enabled:0

# Keyspace
db0:keys=3,expires=0,avg_ttl=0

[[email protected] ~]# redis-cli -h localhost -p 6379 info Replication
# Replication
role:master
connected_slaves:1
slave0:ip=10.0.0.7,port=6379,state=online,offset=1277,lag=1
master_repl_offset:1277
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:1276

[[email protected] ~]# redis-cli
127.0.0.1:6379> help info
  INFO [section]
  summary: Get information and statistics about the server
  since: 1.0.0
  group: server

127.0.0.1:6379> info stats
# Stats
total_connections_received:15
total_commands_processed:952
instantaneous_ops_per_sec:1
total_net_input_bytes:34215
total_net_output_bytes:3844
instantaneous_input_kbps:0.04
instantaneous_output_kbps:0.00
rejected_connections:0
sync_full:1
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
evicted_keys:0
keyspace_hits:4
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:162
migrate_cached_sockets:0
127.0.0.1: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

时间: 2024-08-09 05:56:33

Redis安装及主从复制实战的相关文章

redis 安装及主从复制

安装redis下载redis源码,并进行相关操作,如下:wget http://download.redis.io/releases/redis-3.2.3.tar.gz解压安装redis[[email protected] ~]# tar zxf redis-3.2.3.tar.gz解压完毕后,现在开始安装,如下:[[email protected] ~]# cd redis-3.2.3/[[email protected] redis-3.2.3]# make&& make insta

redis 安装配置学习笔记

redis 安装配置学习笔记 //wget http://download.redis.io/releases/redis-2.8.17.tar.gz 下载最新版本 wget http://download.redis.io/redis-stable.tar.gz 首先必须要有 gcc 与 make apt-get install gcc apt-get install make 1.解压 [email protected]:~# tar -xvf redis-stable.tar.gz 2.测

MySQL 5.7.17主从复制实战(一主多从)

MySQL 5.7.17主从复制实战(一主多从) 主从复制的原理: 分为同步复制和异步复制,实际复制架构中大部分为异步复制. 复制的基本过程如下: 1).Slave上面的IO进程连接上Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容: 2).Master接收到来自Slave的IO进程的请求后,通过负责复制的IO进程根据请求信息读取制定日志指定位置之后的日志信息,返回给Slave 的IO进程.返回信息中除了日志所包含的信息之外,还包括本次返回的信息已经到Master

redis 安装配置及持久化详解

一.redis简介 二.redis安装 三.redis配置文件详解 四.redis持久化详解 1.redis 简介 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询. Redi

redis安装及redis数据类型

Redis介绍: 一.介绍 在过去的几年中,NoSQL数据库一度成为高并发.海量数据存储解决方案的代名词,与之相应的产品也呈现出雨后春笋般的生机.然而在众多产品中能够脱颖而出的却屈指可数,如Redis.MongoDB.BerkeleyDB和CouchDB等.由于每种产品所拥有的特征不同,因此它们的应用场景也存在着一定的差异,下面仅给出简单的说明: 1). BerkeleyDB是一种极为流行的开源嵌入式数据库,在更多情况下可用于存储引擎,比如BerkeleyDB在被Oracle收购之前曾作为MyS

C#Redis安装与使用

Redis是一个用的比较广泛的Key/Value的内存数据库,也是最快的key-value分布式缓存之一. Redis官网:http://redis.io/ Redis快速入门教程:http://www.yiibai.com/redis/redis_quick_guide.html 解压版下载地址:https://github.com/dmajkic/redis/downloads 安装版下载地址:https://github.com/rgl/redis/downloads ServiceSta

Redis-cluster集群【第一篇】:redis安装及redis数据类型

Redis介绍: 一.介绍 redis 是一个开源的.使用C语言编写的.支持网络交互的.可以基于内存也可以持久化的Key-Value数据库. redis的源码非常简单,只要有时间看看谭浩强的C语言,在去看redis的源码能看懂50-60%. redis目前最大的集群应该是新浪的应该. redis目前是vmvaer来支持的,很多的开源软件都需要某些组织来支持的.如果一个开源软件没有金钱来支持的话很难走的持久 二.Redis和Memcache对比 持久化:以电商举例,session用memcache

Redis 安装与简单示例

Redis 安装与简单示例 一.Redis的安装 Redis下载地址如下:https://github.com/dmajkic/redis/downloads 解压后根据自己机器的实际情况选择32位或者64位.下载解压后图片如下: redis-server.exe redis服务器的daemon启动程序 redis.conf redis配置文件 redis-cli.exe redis命令行操作工具.当然,也可以用telnet根据其纯文本协议来操作 redis-check-dump.exe 本地数

Linux下Redis安装与PHP扩展(PHP7适用)

一,软件准备 #redis wget http://download.redis.io/releases/redis-3.0.7.tar.gz #phpredis 非php7使用 下载后文件名为:phpredis-develop wget https://codeload.github.com/phpredis/phpredis/zip/develop #phpredis PHP7专属 下载后文件名为:phpredis-php7 wget https://codeload.github.com/