Redis 是一款开源的,使用C语言编写的、支持网络交互的、可基于内存也可持久化的高性能Key-Value存储系统(cache and store)。它通常被称为数据结构服务器,因为值(value)可以是 , , , 和 等类型。
Redis作者谈Redis应用场景:
1.redis安装部署:
wget http://download.redis.io/releases/redis-3.0.5.tar.gztar xf redis-3.0.5.tar.gz cd redis-3.0.5less README #(如何安装,查看README,INSTALL)make MALLOC=jemallocmake PREFIX=/application/redis-3.0.5 installln -s /application/redis-3.0.5/ /application/redisecho "export PATH=/application/redis/bin/:$PATH" >>/etc/profilesource /etc/profile[root@LB-111-06 ~]# which redis-server/application/redis/bin/redis-server[root@LB-111-06 redis-3.0.5]# ls00-RELEASENOTES INSTALL runtest testsBUGS Makefile runtest-cluster utilsCONTRIBUTING MANIFESTO runtest-sentinelCOPYING README sentinel.confdeps 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] 53215321: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.55321: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-server5321: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 disk5321: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=1vm.overcommit_memory = 1[root@LB-111-06 redis-3.0.5]# redis-server /application/redis/conf/redis.conf &[1] 53345334: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.55334:M 01 Nov 21:42:03.900 * DB loaded from disk: 0.000 seconds5334: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 NAMEredis-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 disk5334: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 4drwxr-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 --helpredis-cli 3.0.5Usage: 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> helpredis-cli 3.0.5Type: "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 exit127.0.0.1:6379> help get GET key summary: Get the value of a key since: 1.0.0 group: string127.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: string127.0.0.1:6379> set no002 oldboyOK127.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 zhangsanOK[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 6379Trying 127.0.0.1...Connected to 127.0.0.1.Escape character is '^]'.set no003 jisu+OKget no003$4jisu2.redis的php客户端扩展安装下载:https://github.com/nicolasff/phpredis/archive/phpredis-2.2.4.tar.gztar 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-configmake #编译make install #安装#安装完成之后,出现下面的安装路径/application/php5.6.12/lib/php/extensions/no-debug-zts-20131226/3.配置php支持vi #编辑配置文件,在最后一行添加以下内容添加extension = redis.soextension_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库打开主从同步实时监控OK1448619846.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-cli127.0.0.1:6379> set t1 oldboy01OK127.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服务的统计信息# Serverredis_version:3.0.5redis_git_sha1:00000000redis_git_dirty:0redis_build_id:b358be82c008aa44redis_mode:standaloneos:Linux 2.6.32-504.el6.x86_64 x86_64arch_bits:64multiplexing_api:epollgcc_version:4.4.7process_id:5357run_id:b93947dbd3db2bc911115f9187d3d3f176861c17tcp_port:6379uptime_in_seconds:5665uptime_in_days:0hz:10lru_clock:3551121config_file:/application/redis/conf/redis.conf# Clientsconnected_clients:1client_longest_output_list:0client_biggest_input_buf:0blocked_clients:0# Memoryused_memory:1884728used_memory_human:1.80Mused_memory_rss:2523136used_memory_peak:1920672used_memory_peak_human:1.83Mused_memory_lua:36864mem_fragmentation_ratio:1.34mem_allocator:jemalloc-3.6.0# Persistenceloading:0rdb_changes_since_last_save:1rdb_bgsave_in_progress:0rdb_last_save_time:1446391003rdb_last_bgsave_status:okrdb_last_bgsave_time_sec:0rdb_current_bgsave_time_sec:-1aof_enabled:0aof_rewrite_in_progress:0aof_rewrite_scheduled:0aof_last_rewrite_time_sec:-1aof_current_rewrite_time_sec:-1aof_last_bgrewrite_status:okaof_last_write_status:ok# Statstotal_connections_received:13total_commands_processed:703instantaneous_ops_per_sec:1total_net_input_bytes:25030total_net_output_bytes:1198instantaneous_input_kbps:0.04instantaneous_output_kbps:0.00rejected_connections:0sync_full:1sync_partial_ok:0sync_partial_err:0expired_keys:0evicted_keys:0keyspace_hits:4keyspace_misses:0pubsub_channels:0pubsub_patterns:0latest_fork_usec:310migrate_cached_sockets:0# Replicationrole:masterconnected_slaves:1slave0:ip=10.0.0.7,port=6379,state=online,offset=1011,lag=1master_repl_offset:1011repl_backlog_active:1repl_backlog_size:1048576repl_backlog_first_byte_offset:2repl_backlog_histlen:1010# CPUused_cpu_sys:4.19used_cpu_user:1.95used_cpu_sys_children:0.00used_cpu_user_children:0.00# Clustercluster_enabled:0# Keyspacedb0:keys=3,expires=0,avg_ttl=0[root@LB-111-06 ~]# redis-cli -h localhost -p 6379 info Replication# Replicationrole:masterconnected_slaves:1slave0:ip=10.0.0.7,port=6379,state=online,offset=1277,lag=1master_repl_offset:1277repl_backlog_active:1repl_backlog_size:1048576repl_backlog_first_byte_offset:2repl_backlog_histlen:1276[root@LB-111-06 ~]# redis-cli127.0.0.1:6379> help info INFO [section] summary: Get information and statistics about the server since: 1.0.0 group: server127.0.0.1:6379> info stats# Statstotal_connections_received:15total_commands_processed:952instantaneous_ops_per_sec:1total_net_input_bytes:34215total_net_output_bytes:3844instantaneous_input_kbps:0.04instantaneous_output_kbps:0.00rejected_connections:0sync_full:1sync_partial_ok:0sync_partial_err:0expired_keys:0evicted_keys:0keyspace_hits:4keyspace_misses:0pubsub_channels:0pubsub_patterns:0latest_fork_usec:162migrate_cached_sockets:0127.0.0.1:6379> helpredis-cli 3.0.5Type: "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