您的位置:首页 > 数据库 > Redis

Redis安装及主从复制实战

2016-01-15 22:28 941 查看
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
[root@LB-111-06 ~]# which redis-server
/application/redis/bin/redis-server
[root@LB-111-06 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
[root@LB-111-06 redis-3.0.5]# mkdir /application/redis/conf
[root@LB-111-06 redis-3.0.5]# cp redis.conf /application/redis/conf/
[root@LB-111-06 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

[root@LB-111-06 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

[root@LB-111-06 redis-3.0.5]# sysctl vm.overcommit_memory=1
vm.overcommit_memory = 1
[root@LB-111-06 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
[root@LB-111-06 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 *

[root@LB-111-06 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)
[root@LB-111-06 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
[root@LB-111-06 redis-3.0.5]# lsof -i:6379

[root@LB-111-06 redis-3.0.5]# ll /application/redis/
total 4
drwxr-xr-x 2 root root 4096 Nov 1 21:19 bin
[root@LB-111-06 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

[root@LB-111-06 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.

[root@LB-111-06 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

[root@LB-111-06 redis-3.0.5]# redis-cli -h 10.0.0.6 -p 6379 set no001 zhangsan
OK
[root@LB-111-06 redis-3.0.5]# redis-cli -h 10.0.0.6 -p 6379 get no001
"zhangsan"
[root@LB-111-06 redis-3.0.5]# redis-cli del no001
(integer) 1
[root@LB-111-06 redis-3.0.5]# redis-cli del no001
(integer) 0
[root@LB-111-06 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及服务端口
[root@LNMP-07 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操作:
[root@LB-111-06 ~]# 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"

主库连接到从库查看:
[root@LB-111-06 ~]# redis-cli -h 10.0.0.7 get t1
"oldboy01"
[root@LB-111-06 ~]# 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

[root@LB-111-06 ~]# 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

[root@LB-111-06 ~]# 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
本文出自 “兰州linux运维” 博客,请务必保留此出处http://linuxzkq.blog.51cto.com/9379412/1735468
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: