第1章 实验环境准备
1.1 操作系统说明
操作系统: Centos7
数量:3台机器
主机名:db01 db02 db03
IP地址:51,52,53
1.2 关闭防火墙和selinux
停止防火墙并禁止自启动
systemctl stop firewalld.service
systemctl disable firewalld.service
关闭selinux
sed -i.bak 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
setenforce 0
1.3 db01配置hosts和ssh
配置hosts和密钥认证
[root@db01 ~]# cat > /etc/hosts << EOF
10.0.0.51 db01
10.0.0.52 db02
10.0.0.53 db03
EOF
[root@db01 ~]# ssh-keygen
[root@db01 ~]# ssh-copy-id db02
[root@db01 ~]# ssh-copy-id db03
1.4 所有节点安装redis
注意:所有的节点都需要安装redis
mkdir -p /data/soft
mkdir -p /data/redis_cluster/redis_6379
mkdir -p /opt/redis_cluster/redis_6379/{conf,pid,logs}
cd /data/soft/
wget http://download.redis.io/releases/redis-3.2.9.tar.gz
tar zxf redis-3.2.9.tar.gz -C /opt/redis_cluster/
ln -s /opt/redis_cluster/redis-3.2.9/ /opt/redis_cluster/redis
cd /opt/redis_cluster/redis
make && make install
1.5 db01配置ruby环境
yum makecache fast
yum install rubygems
gem sources --remove [https://rubygems.org/](https://rubygems.org/)
gem sources -a http://mirrors.aliyun.com/rubygems/
gem update –system
gem install redis -v 3.3.5
ruby -v
gem -v
1.6 db01安装键值分析工具
yum install python-pip gcc
pip install --upgrade pip
pip install rdbtools
1.7 配置文件
配置文件:
cat > /opt/redis_cluster/redis_6379/conf/redis_6379.conf <
1.8 所有节点部署redis管理脚本
[root@db01 ~]# cat redis_shell.sh
#!/bin/bash
USAG(){
echo "sh $0 {start|stop|restart|login|ps|tail} PORT"
}
if [ "$#" = 1 ]
then
REDIS_PORT='6379'
elif
[ "$#" = 2 -a -z "$(echo "$2"|sed 's#[0-9]##g')" ]
then
REDIS_PORT="$2"
else
USAG
exit 0
fi
REDIS_IP=$(hostname -I|awk '{print $1}')
PATH_DIR=/opt/redis_cluster/redis_${REDIS_PORT}/
PATH_CONF=/opt/redis_cluster/redis_${REDIS_PORT}/conf/redis_${REDIS_PORT}.conf
PATH_LOG=/opt/redis_cluster/redis_${REDIS_PORT}/logs/redis_${REDIS_PORT}.log
CMD_START(){
redis-server ${PATH_CONF}
}
CMD_SHUTDOWN(){
redis-cli -c -h ${REDIS_IP} -p ${REDIS_PORT} shutdown
}
CMD_LOGIN(){
redis-cli -c -h ${REDIS_IP} -p ${REDIS_PORT}
}
CMD_PS(){
ps -ef|grep redis
}
CMD_TAIL(){
tail -f ${PATH_LOG}
}
case $1 in
start)
CMD_START
CMD_PS
;;
stop)
CMD_SHUTDOWN
CMD_PS
;;
restart)
CMD_START
CMD_SHUTDOWN
CMD_PS
;;
login)
CMD_LOGIN
;;
ps)
CMD_PS
;;
tail)
CMD_TAIL
;;
*)
USAG
esac
特点:
1.支持6种数据类型,字符串,哈希,列表,集合,有序集合
2.速度非常快,所有数据存放在内存中
3.持久化存储,快照或日志
安装完成后的可执行文件
redis-benchmark
redis-check-aof
redis-check-rdb
redis-cli #客户端连接工具
redis-sentinel #哨兵服务端
redis-server #服务端
数据类型及相关命令介绍
字符串 优惠券 文本
set
get
mset
mget
incr key
decr key
incrby key num
decrby key num
EXISTS key
DEl key
TTL k1
EXPIRE k1 10
PERSIST k1
-1 永不过期
-2 键不存在
列表 排行榜
rpush
lpush
lrange
rpop
lpop
哈希 mysql的缓存层
HMSET key field value
HMGET key field
HGETALL key
HMSET user:1000 username zhangya age 28 job it
HMGET user:1000
HMGET user:1000 username
HMGET user:1000 username age
HMGET user:1000 username age job
HMGET user:1000 all
HGETALL user:1000
HMSET user:1000 email [email protected]
HGETALL user:1000
集合 推荐系统 兴趣标签 广告精确投放
SADD set1 1 2 3 5 7
SMEMBERS set1
SADD set2 3 6 8 5 7
SMEMBERS set2
SADD set1 1
SADD set1 1 11
SMEMBERS set1
SMEMBERS set2
SDIFF set1 set2
SDIFF set2 set1
SADD set3 1 5 12 9
SDIFF set1 set2 set3
SDIFF set3 set1 set2
SINTER set1 set2
sunion set1 set2 set3
持久化
rdb
优点:恢复速度快,空间小
缺点:可能会丢失
rdb 持久化核心配置参数:
vim /data/6379/redis.conf
dir /data/6379
dbfilename dump.rdb
save 900 1 #900 秒(15 分钟)内有 1 个更改
save 300 10 #300 秒(5 分钟)内有 10 个更改
save 60 10000 #60 秒内有 10000 个更改
aof
优点:数据安全,不容易丢失
缺点:恢复速度慢,空间大
AOF 持久化配置
appendonly yes #是否打开 aof 日志功能
appendfsync always #每 1 个命令,都立即同步到 aof
appendfsync everysec #每秒写 1 次
appendfsync no #写入工作交给操作系统,由操作系统判断缓冲区大小,统一写入到 aof.
redis 持久化方式有哪些?有什么区别?
rdb:基于快照的持久化,速度更快,一般用作备份,主从复制也是依赖于 rdb 持久化功能
aof:以追加的方式记录 redis 操作日志的文件。可以最大程度的保证 redis 数据安全,类似于 mysql 的 binlog
热更新
命令:CONFIG GET *
127.0.0.1:6379> CONFIG GET save
1) "save"
2) ""
127.0.0.1:6379> CONFIG SET save "60 100 300 10 600 1"
OK
127.0.0.1:6379> CONFIG GET save
1) "save"
2) "60 100 300 10 600 1"
隐藏条件:
1.如果同时有AOF和RDB存在,重启的时候,载入的是AOF文件
2.shutdown
- bgsave
- shutdown