一、模块说明
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
数据持久化有快照方式和日志追加方式,这里使用快照方式,定期将数据保存在dump.rdb文件中
配置主从同步,可让多个slave分摊读请求的负载,也可在master禁用数据持久化,减轻负担,只在slave配置持久化。
二、目录结构
三、代码展示
1、files目录
redis #redis服务脚本
#!/bin/sh # chkconfig: 2345 80 90 # Simple Redis init.d script conceived to work on Linux systems # as it does use of the /proc filesystem. # src file is /usr/local/redis/utils/redis_init_script REDISPORT=6379 EXEC=/usr/local/bin/redis-server CLIEXEC=/usr/local/bin/redis-cli PIDFILE=/var/run/redis.pid CONF="/etc/redis.conf" case "$1" in start) if [ -f $PIDFILE ] then echo "$PIDFILE exists, process is already running or crashed" else echo "Starting Redis server..." $EXEC $CONF & fi ;; stop) if [ ! -f $PIDFILE ] then echo "$PIDFILE does not exist, process is not running" else PID=$(cat $PIDFILE) echo "Stopping ..." $CLIEXEC -p $REDISPORT shutdown while [ -x /proc/${PID} ] do echo "Waiting for Redis to shutdown ..." sleep 1 done echo "Redis stopped" fi ;; *) echo "Please use start or stop as first argument" ;; esac
redis-2.8.19.tar.gz #redis安装包,下载 http://download.redis.io/releases/redis-2.8.19.tar.gz
2、manifests目录
init.pp
class redis{ Exec { path => "/usr/bin:/bin:/usr/sbin:/sbin" } include redis::install,redis::config,redis::service }
install.pp
class redis::install { Exec{ path => [‘/usr/bin‘,‘/usr/sbin‘,‘/bin‘] } package { [‘gcc‘,‘gcc-c++‘,‘perl‘,‘pcre‘,‘zlib-devel‘,‘openssl-devel‘,‘tcl‘]: ensure => installed, before => Exec[‘install‘], } file { ‘redis‘: path => ‘/usr/local/src/redis-2.8.19.tar.gz‘, ensure => directory, source => ‘puppet:///modules/redis/redis-2.8.19.tar.gz‘, ignore => ‘.svn‘, owner => root, group => root, mode => ‘0640‘, } exec { ‘tar redis‘: command => ‘tar -zxf redis-2.8.19.tar.gz‘, cwd => ‘/usr/local/src‘, refreshonly => true, subscribe => File[‘redis‘], } exec { ‘mv redis‘: command => ‘mv -f redis-2.8.19 /usr/local/redis‘, cwd => ‘/usr/local/src‘, refreshonly => true, subscribe => Exec[‘tar redis‘], } exec { ‘install‘: command => ‘make && make install‘, cwd => ‘/usr/local/redis‘, refreshonly => true, subscribe => Exec[‘mv redis‘], } }
config.pp
class redis::config { case $redis_conf { master: { file { ‘/etc/redis.conf‘: ensure => file, owner => root, group => root, mode => 400, content => template("redis/Master-redis.conf.erb"), notify => Class[‘redis::service‘], require => Class[‘redis::install‘], } } slave: { file { ‘/etc/redis.conf‘: ensure => file, owner => root, group => root, mode => 400, content => template("redis/Slave-redis.conf.erb"), notify => Class[‘redis::service‘], require => Class[‘redis::install‘], } } } file { ‘redisd‘: path => ‘/etc/rc.d/init.d/redis‘, ensure => file, owner => root, group => root, mode => 755, source => ‘puppet:///modules/redis/redis‘, } exec { ‘iptables -I INPUT -p tcp --dport 6379 -j ACCEPT && service iptables save‘: unless => ‘grep "6379" /etc/sysconfig/iptables 2>/dev/null‘, } }
service.pp
class redis::service { service { ‘redis‘: ensure => ‘running‘, enable => ‘true‘, hasrestart => ‘false‘, hasstatus => ‘false‘, start => ‘service redis start‘, stop => ‘service redis stop‘, require => Class["redis::install"], subscribe => Class["redis::config"], } }
3、templates目录
Master-redis.conf.erb
# Redis Master configuration file example daemonize yes pidfile /var/run/redis.pid port 6379 timeout 0 tcp-keepalive 0 loglevel notice logfile /var/log/redis.log databases 16 save 86400 1 stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes dbfilename dump.rdb dir ./ slave-serve-stale-data yes slave-read-only yes repl-disable-tcp-nodelay no slave-priority 100 maxmemory 3gb maxmemory-policy volatile-lru maxmemory-samples 3 appendonly no appendfilename appendonly.aof appendfsync everysec no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb lua-time-limit 5000 slowlog-log-slower-than 10000 slowlog-max-len 1024 hash-max-ziplist-entries 512 hash-max-ziplist-value 64 list-max-ziplist-entries 512 list-max-ziplist-value 64 set-max-intset-entries 512 zset-max-ziplist-entries 128 zset-max-ziplist-value 64 activerehashing yes client-output-buffer-limit normal 0 0 0 client-output-buffer-limit slave 256mb 64mb 60 client-output-buffer-limit pubsub 32mb 8mb 60 aof-rewrite-incremental-fsync yes
Slave-redis.conf.erb
# Redis Slave configuration file example daemonize yes pidfile /var/run/redis.pid port 6379 timeout 0 tcp-keepalive 0 loglevel notice logfile /var/log/redis.log databases 16 save 86400 1 stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes dbfilename dump.rdb dir ./ slaveof <%=@master_server %> 6379 slave-serve-stale-data yes slave-read-only yes repl-disable-tcp-nodelay no slave-priority 100 maxmemory 3gb maxmemory-policy volatile-lru maxmemory-samples 3 appendonly no appendfilename appendonly.aof appendfsync everysec no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb lua-time-limit 5000 slowlog-log-slower-than 10000 slowlog-max-len 1024 hash-max-ziplist-entries 512 hash-max-ziplist-value 64 list-max-ziplist-entries 512 list-max-ziplist-value 64 set-max-intset-entries 512 zset-max-ziplist-entries 128 zset-max-ziplist-value 64 activerehashing yes client-output-buffer-limit normal 0 0 0 client-output-buffer-limit slave 256mb 64mb 60 client-output-buffer-limit pubsub 32mb 8mb 60 aof-rewrite-incremental-fsync yes
四、Foreman配置
参考前两编文章
主库参数:
从库参数:
[root@redis-server ~]# redis-cli #连接redis数据库 redis127.0.0.1:6379> >ping #测试连接 >echo test #测试打印 >select 1 #选择数据库0~15 > dbsize #返回当前数据库key数量 > info #获取服务器状态和一些统计信息 > monitor #实时监听并返回redis服务器接收到的所有请求信息 > config get parameter #获取一个redis配置参数信息,*表示全部 > config set parameter value #设置一个redis配置参数信息 > config resetstat #重置INFO命令的统计信息:Keyspace命中数、Keyspace错误数、处理命令数,接收连接数、过期key数等 > debug object key #获取一个key的调试信息 > debug segfault #制造一次服务器当机 > flushdb #删除当前数据库中的所有key > flushall #删除所有数据库中所有key > client list #查看当前所有客户端状态 > shutdown #把数据同步保存到磁盘上,并关闭redis服务 > quit #退出连接
http://redisdesktop.com/download
https://github.com/uglide/RedisDesktopManager/wiki/Quick-Start
Redis DesktopManager 是一个快速、简单、支持跨平台的 Redis 桌面管理工具,基于 Qt 5 开发,支持通过 SSH Tunnel 连接。
七、程序使用
<?xml version="1.0"?> <configuration> <appSettings> <add key="Redis.ReadWriteHosts" value="10.188.1.40:6379" /> <add key="Redis.ReadOnlyHosts" value="10.188.1.41:6379" /> </appSettings> </configuration>
本文出自 “月晴星飞” 博客,请务必保留此出处http://ywzhou.blog.51cto.com/2785388/1754384
原文地址:http://ywzhou.blog.51cto.com/2785388/1754384