redis
==============================================================
一:安装
官网下载地址:http://redis.io/download
~]# yum -y install gcc
~]# cd src
~]# make
# make MALLOC=libc 解决部分错误使用。
<!-- ~]# make install -->
配置文件:源码根目录
~]# mkdir /etc/redis/
~]# cp redis.conf /etc/redis/
二:配置
~]# ls /usr/local/bin/
redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server
pidfile /var/run/redis_6379.pid
redis-server
~]# vim /etc/redis/redis.conf
监听端口和地址
#bind 127.0.0.1
# yes 是在后台运行
# daemonize no
daemonize yes
# cluster-enabled yes
cluster-enabled yes
# cluster-config-file nodes-6379.conf
cluster-config-file nodes-6379.conf
# cluster-node-timeout 15000
cluster-node-timeout 15
启动服务:
~]# redis-server /etc/redis/redis.conf
~]# redis-cli
cluster nodes 命令用于查看当前Redis节点所属的Redis集群中的所有节点,
cluster info 则用于查看当前Redis节点所属的Redis集群的整体状
cluster meet 将当前节点主动添加节点
cluster addslots
cluster delslots
cluster setslot
[root@localhost redis]# redis-cli
127.0.0.1:6379> cluster nodes
5be8eec2cee607d14ee5cd6f24ee296365d49ec9 :6379 myself,master - 0 0 0 connected
127.0.0.1:6379> cluster info
cluster_state:fail
cluster_slots_assigned:0
cluster_slots_ok:0
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:1
cluster_size:0
cluster_current_epoch:0
cluster_my_epoch:0
cluster_stats_messages_sent:0
cluster_stats_messages_received:0
127.0.0.1:6379> cluster meet 172.18.21.61 6379
OK
127.0.0.1:6379> cluster nodes
bf030d5a9570b66c41a38bdfb89b36e6cf654e58 172.18.21.61:6379 master - 0 1466854370204 0 connected
5be8eec2cee607d14ee5cd6f24ee296365d49ec9 172.18.21.60:6379 myself,master - 0 0 1 connected
[root@localhost redis]# cat /etc/redis/nodes-6379.conf
bf030d5a9570b66c41a38bdfb89b36e6cf654e58 172.18.21.61:6379 master - 0 1466854584926 0 connected
5be8eec2cee607d14ee5cd6f24ee296365d49ec9 172.18.21.60:6379 myself,master - 0 0 1 connected
vars currentEpoch 1 lastVoteEpoch 0
http://blog.sina.com.cn/s/blog_48c95a190101dhe9.html
kill -9 `cat /var/run/redis_6379.pid`
启动
redis-server /etc/redis/redis.conf
#主服务器
redis-cli -p 6379 set hello world
#从服务器
redis-cli -p 6379 get hello
"world"
#主服务器
redis-cli -p 6379 set hello world2
#从服务器
redis-cli -p 6379 get hello
"world2"
redis-cli -p 6379 set hello world
(error) READONLY You can't
yum -y install ruby rubygems
pkgs.org
yum localinstall
backlog 等待队列
事务:
muti exec
jenkins 监控
@connection
auth
echo
ping
quit
select
glient
config
config resetstat
config set
config rewrite
dbsize
help info
info memory
lastsave
monitor
shutdown
slaveof
slowlog
sync
time
订阅与发布:
subscribe
subscribe news
publish news hello
psubscribe:模式订阅
持久化:
rdb和aof
rdb:snapshot,二进制格式,事先定制策略,周期性的保存至磁盘,数据文件默认为dump.rdb
客户端可显示使用save或bgsave命令自动执行保存机制。
save(同步):在主线程中保存快照,此时会阻塞所有客户端请求。
bgsave(异步):
aof:append only file:合并重写aof文件,
记录每一次写操作至指定的文件尾部实现持久化。当redis重启时,可通过重新执行文件的命令在内存重建数据库,
不会读取正在使用的aof文件,而通过将内存中的数据以命令的方式保存到临时文件中,完成之后替换原来的aof文件。
bgsave bgrewriteaof 不会同时执行,
恢复数据时优先使用aof
复制:
特点:
一个master可以有多个slave
支持链式复制
master以非阻塞方式同步数据至slave
slaveof 172.18.21.60 6379 指明主库
列出所有key
keys *
config get slaveof
主服务器使用认证,从服务器要使用 masterauth password 才能正常进行主从复制。
sentinel:用于管理多个redis服务器实现ha
监控
通知
自动化故障迁移
程序:
redis-sentinel /path/to/file.conf
redis-server /path/to/file.conf --sentinal
/*
redis 使用
查看所有key
~]# keys *
切换数据库
~]# select 1
删除当前数据库中的所有Key
~]# flushdb
删除所有数据库中的key
~]# flushall
删除某个key
~]# del key
*/
--------------------------------file start---------------------------------------------
#!/usr/bin/env bash
#
# redis start up the redis server daemon
#
# chkconfig: 345 99 99
# description: redis service in /etc/init.d/redis \
# chkconfig --add redis or chkconfig --list redis \
# service redis start or service redis stop
# processname: redis-server
# config: /etc/redis.conf
PATH=/usr/local/bin:/sbin:/usr/bin:/bin
REDISPORT=6379
EXEC=/usr/local/bin/redis-server
REDIS_CLI=/usr/local/bin/redis-cli
PIDFILE=/var/run/redis.pid
CONF="/etc/redis.conf"
#make sure some dir exist
if [ ! -d /var/lib/redis ] ;then
mkdir -p /var/lib/redis
mkdir -p /var/log/redis
fi
case "$1" in
status)
ps -A|grep redis
;;
start)
if [ -f $PIDFILE ]
then
echo "$PIDFILE exists, process is already running or crashed"
else
echo "Starting Redis server..."
$EXEC $CONF
fi
if [ "$?"="0" ]
then
echo "Redis is running..."
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE does not exist, process is not running"
else
PID=$(cat $PIDFILE)
echo "Stopping ..."
$REDIS_CLI -p $REDISPORT SHUTDOWN
while [ -x ${PIDFILE} ]
do
echo "Waiting for Redis to shutdown ..."
sleep 1
done
echo "Redis stopped"
fi
;;
restart|force-reload)
${0} stop
${0} start
;;
*)
echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2
exit 1
esac
--------------------------------file end---------------------------------------------
==============================================================
一:安装
官网下载地址:http://redis.io/download
~]# yum -y install gcc
~]# cd src
~]# make
# make MALLOC=libc 解决部分错误使用。
<!-- ~]# make install -->
配置文件:源码根目录
~]# mkdir /etc/redis/
~]# cp redis.conf /etc/redis/
二:配置
~]# ls /usr/local/bin/
redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server
pidfile /var/run/redis_6379.pid
redis-server
~]# vim /etc/redis/redis.conf
监听端口和地址
#bind 127.0.0.1
# yes 是在后台运行
# daemonize no
daemonize yes
# cluster-enabled yes
cluster-enabled yes
# cluster-config-file nodes-6379.conf
cluster-config-file nodes-6379.conf
# cluster-node-timeout 15000
cluster-node-timeout 15
启动服务:
~]# redis-server /etc/redis/redis.conf
~]# redis-cli
cluster nodes 命令用于查看当前Redis节点所属的Redis集群中的所有节点,
cluster info 则用于查看当前Redis节点所属的Redis集群的整体状
cluster meet 将当前节点主动添加节点
cluster addslots
cluster delslots
cluster setslot
[root@localhost redis]# redis-cli
127.0.0.1:6379> cluster nodes
5be8eec2cee607d14ee5cd6f24ee296365d49ec9 :6379 myself,master - 0 0 0 connected
127.0.0.1:6379> cluster info
cluster_state:fail
cluster_slots_assigned:0
cluster_slots_ok:0
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:1
cluster_size:0
cluster_current_epoch:0
cluster_my_epoch:0
cluster_stats_messages_sent:0
cluster_stats_messages_received:0
127.0.0.1:6379> cluster meet 172.18.21.61 6379
OK
127.0.0.1:6379> cluster nodes
bf030d5a9570b66c41a38bdfb89b36e6cf654e58 172.18.21.61:6379 master - 0 1466854370204 0 connected
5be8eec2cee607d14ee5cd6f24ee296365d49ec9 172.18.21.60:6379 myself,master - 0 0 1 connected
[root@localhost redis]# cat /etc/redis/nodes-6379.conf
bf030d5a9570b66c41a38bdfb89b36e6cf654e58 172.18.21.61:6379 master - 0 1466854584926 0 connected
5be8eec2cee607d14ee5cd6f24ee296365d49ec9 172.18.21.60:6379 myself,master - 0 0 1 connected
vars currentEpoch 1 lastVoteEpoch 0
http://blog.sina.com.cn/s/blog_48c95a190101dhe9.html
kill -9 `cat /var/run/redis_6379.pid`
启动
redis-server /etc/redis/redis.conf
#主服务器
redis-cli -p 6379 set hello world
#从服务器
redis-cli -p 6379 get hello
"world"
#主服务器
redis-cli -p 6379 set hello world2
#从服务器
redis-cli -p 6379 get hello
"world2"
redis-cli -p 6379 set hello world
(error) READONLY You can't
yum -y install ruby rubygems
pkgs.org
yum localinstall
backlog 等待队列
事务:
muti exec
jenkins 监控
@connection
auth
echo
ping
quit
select
glient
config
config resetstat
config set
config rewrite
dbsize
help info
info memory
lastsave
monitor
shutdown
slaveof
slowlog
sync
time
订阅与发布:
subscribe
subscribe news
publish news hello
psubscribe:模式订阅
持久化:
rdb和aof
rdb:snapshot,二进制格式,事先定制策略,周期性的保存至磁盘,数据文件默认为dump.rdb
客户端可显示使用save或bgsave命令自动执行保存机制。
save(同步):在主线程中保存快照,此时会阻塞所有客户端请求。
bgsave(异步):
aof:append only file:合并重写aof文件,
记录每一次写操作至指定的文件尾部实现持久化。当redis重启时,可通过重新执行文件的命令在内存重建数据库,
不会读取正在使用的aof文件,而通过将内存中的数据以命令的方式保存到临时文件中,完成之后替换原来的aof文件。
bgsave bgrewriteaof 不会同时执行,
恢复数据时优先使用aof
复制:
特点:
一个master可以有多个slave
支持链式复制
master以非阻塞方式同步数据至slave
slaveof 172.18.21.60 6379 指明主库
列出所有key
keys *
config get slaveof
主服务器使用认证,从服务器要使用 masterauth password 才能正常进行主从复制。
sentinel:用于管理多个redis服务器实现ha
监控
通知
自动化故障迁移
程序:
redis-sentinel /path/to/file.conf
redis-server /path/to/file.conf --sentinal
/*
redis 使用
查看所有key
~]# keys *
切换数据库
~]# select 1
删除当前数据库中的所有Key
~]# flushdb
删除所有数据库中的key
~]# flushall
删除某个key
~]# del key
*/
--------------------------------file start---------------------------------------------
#!/usr/bin/env bash
#
# redis start up the redis server daemon
#
# chkconfig: 345 99 99
# description: redis service in /etc/init.d/redis \
# chkconfig --add redis or chkconfig --list redis \
# service redis start or service redis stop
# processname: redis-server
# config: /etc/redis.conf
PATH=/usr/local/bin:/sbin:/usr/bin:/bin
REDISPORT=6379
EXEC=/usr/local/bin/redis-server
REDIS_CLI=/usr/local/bin/redis-cli
PIDFILE=/var/run/redis.pid
CONF="/etc/redis.conf"
#make sure some dir exist
if [ ! -d /var/lib/redis ] ;then
mkdir -p /var/lib/redis
mkdir -p /var/log/redis
fi
case "$1" in
status)
ps -A|grep redis
;;
start)
if [ -f $PIDFILE ]
then
echo "$PIDFILE exists, process is already running or crashed"
else
echo "Starting Redis server..."
$EXEC $CONF
fi
if [ "$?"="0" ]
then
echo "Redis is running..."
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE does not exist, process is not running"
else
PID=$(cat $PIDFILE)
echo "Stopping ..."
$REDIS_CLI -p $REDISPORT SHUTDOWN
while [ -x ${PIDFILE} ]
do
echo "Waiting for Redis to shutdown ..."
sleep 1
done
echo "Redis stopped"
fi
;;
restart|force-reload)
${0} stop
${0} start
;;
*)
echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2
exit 1
esac
--------------------------------file end---------------------------------------------