简介redis:
redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统。
和Memcached类似,但很大程度补偿了memcached的不足,它支持存储的value类型相对更多,
包括string、list、set、zset和hash。
这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作。
在此基础上,redis支持各种不同方式的排序。
Redis数据都是缓存在计算机内存中,并且会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件。
redis官网地址:http://www.redis.io/
1、下载文件
http://download.redis.io/releases/redis-2.8.3.tar.gz
redis-2.8.3.tar.gz文件下载成功后上传至/usr/local
2、安装
[root@bogon local]# mkdir /usr/local/redis
[root@bogon local]# tar xzf redis-2.8.3.tar.gz
[root@bogon local]# cd redis-2.8.3
[root@bogon redis-2.8.3]# make
**********
编译出现错误
[root@bogon redis-2.8.3]# make
cd src && make all
make[1]: Entering directory `/usr/local/redis-2.8.3/src'
LINK redis-server
zmalloc.o: In function `zmalloc_used_memory':
/usr/local/redis-2.8.3/src/zmalloc.c:223: undefined reference to `__sync_add_and_fetch_4'
collect2: ld returned 1 exit status
make[1]: *** [redis-server] Error 1
make[1]: Leaving directory `/usr/local/redis-2.8.3/src'
make: *** [all] Error 2
在make时候出现这个的错误提示:
collect2: ld returned 1 exit status
make[1]: *** [redis-server] Error 1
make[1]: Leaving directory `/usr/local/src/redis-2.8.3/src'
make: *** [all] Error 2
经查询,执行 make 时加上参数 CFLAGS="-march=i686"即可通过make这个步骤,
i686并不是代表系统位数,因为我试过将i686替换成i386也是会提示上面那个错误
我用rhel5.2的
3、编译完成后,在Src目录下,有三个可执行文件redis-server、redis-benchmark、redis-cli。然后拷贝到一个目录下。
[root@bogon redis-2.8.3]# cd src
[root@bogon src]# cp redis-server /usr/local/redis
[root@bogon src]# cp redis-benchmark /usr/local/redis
[root@bogon src]# cp redis-cli /usr/local/redis
4、启动服务器的服务
[root@bogon src]# cd /usr/local/redis
[root@bogon redis]# ll
total 13688
-rwxr-xr-x. 1 root root 4156999 Jan 1 23:26 redis-benchmark
-rwxr-xr-x. 1 root root 4229443 Jan 1 23:27 redis-cli
-rwxr-xr-x. 1 root root 5627506 Jan 1 23:26 redis-server
[root@bogon redis]# ./redis-server
[13112] 05 Mar 19:45:48.244 # Warning: no config file specified, using the default config. In order to specify a config file use ./redis-server /path/to/redis.conf
[13112] 05 Mar 19:45:48.246 * Max number of open files set to 10032
[13112] 05 Mar 19:45:48.251 # Warning: 32 bit instance detected but no memory limit set. Setting 3 GB maxmemory limit with 'noeviction' policy now.
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 2.8.3 (00000000/0) 32 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in stand alone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 13112
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
[13112] 05 Mar 19:45:48.253 # Server started, Redis version 2.8.3
[13112] 05 Mar 19:45:48.254 # 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.
[13112] 05 Mar 19:45:48.254 * The server is now ready to accept connections on port 6379
5、然后用客户端测试一下是否启动成功。(新开一个终端运行下面的命令)
[root@bogon redis]# cd /usr/local/redis
[root@bogon redis]# ./redis-cli
127.0.0.1:6379> set foo bar
OK
127.0.0.1:6379> get foo
"bar"
127.0.0.1:6379>
6、客户端利用SSH执行命令获取相关指标信息
[root@bogon redis]# ./redis-cli
127.0.0.1:6379> info all
# Server
redis_version:2.8.3
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:961acb83e62a0f32
redis_mode:standalone
os:Linux 2.6.18-194.el5 i686
arch_bits:32
multiplexing_api:epoll
gcc_version:4.1.2
process_id:13112
run_id:7d748a79804140a4c0f06b7196ce601c4958aab4
tcp_port:6379
uptime_in_seconds:6885
uptime_in_days:0
hz:10
lru_clock:2077243
config_file:
# Clients
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
# Memory
used_memory:632720
used_memory_human:617.89K
used_memory_rss:1892352
used_memory_peak:631776
used_memory_peak_human:616.97K
used_memory_lua:22528
mem_fragmentation_ratio:2.99
mem_allocator:jemalloc-3.2.0
# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1488775549
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
# Stats
total_connections_received:4
total_commands_processed:7
instantaneous_ops_per_sec:0
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
evicted_keys:0
keyspace_hits:1
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:2269
# Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
# CPU
used_cpu_sys:1.89
used_cpu_user:0.34
used_cpu_sys_children:0.00
used_cpu_user_children:0.00
# Commandstats
cmdstat_get:calls=1,usec=8,usec_per_call=8.00
cmdstat_set:calls=1,usec=142,usec_per_call=142.00
cmdstat_info:calls=2,usec=2316,usec_per_call=1158.00
cmdstat_monitor:calls=1,usec=6,usec_per_call=6.00
cmdstat_slowlog:calls=2,usec=27,usec_per_call=13.50
# Keyspace
db0:keys=1,expires=0,avg_ttl=0
127.0.0.1:6379>
完成上述操作之后,我们就可以,对命令返回的结果集进行数据整合。
例子:用java程序,编写程序,定时用ssh的方式连接redis所在的linux服务器,然后进行指定命令的执行,
然后对每次命令返回的结果进行数据整合和保存数据库。
写一个servlet,进行上述指标的数据库数据读取,然后进行页面展示,利用相关js库,进行图表展示。
和对java程序的定时监控进行相关设置。(java例子下篇文章附上相关开发和页面截图展示)。
声明:该过程的操作,参考于互联网中的资料,自己虚拟机服务器上,实践成果。感谢网络上的资料发布者。