redis 配置和使用
一、安装:
cd /usr/src
tar xzf redis-3.0.7.tar.gz
cd redis-3.0.7
make
cd src
make install PREFIX=/usr/local/redis
mkdir /usr/local/redis/etc/
mv redis.conf /usr/local/redis/etc/
启动:
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
/usr/local/redis/bin/redis-cli shutdown
二、配置
echo 1 > /proc/sys/vm/overcommit_memory
echo 511 > /proc/sys/net/core/somaxconn
echo never > /sys/kernel/mm/transparent_hugepage/enabled
1、允许外部访问:
firewall-cmd --zone=public --add-port=6379/tcp
/usr/local/redis/bin/redis-cli
CONFIG SET protected-mode no
CONFIG REWRITE
2、配置文件例子:
include /usr/local/redis/etc/redis.conf
port 6379
pidfile "/root/workspace/java/redis_6379.pid"
# debug notice warning
loglevel notice
logfile "/root/workspace/java/redis.log"
dbfilename "dump.rdb"
dir "/usr/src/redis-3.2.9"
3、使用lua脚本 , 两边的空格代表key和参数
redis-cli -p 6379 --ldb --eval api.lua k1 k2 , arg1 arg2
三、主从复制replication
增加冗余可靠性,扩展性,主库避免io。一定程度上保证CAP中的C。
1、过程
1》slave -> mastr SYNC
2> master bgsave(rdb)
3》发给slave 后续修改
2、配置:
从服务器
SLAVEOF 192.168.1.1 10086
config set masterauth <password> 或 masterauth pwd
主服务器:
min-slaves-to-write <number of slaves>
min-slaves-max-lag <number of seconds>
四、HA 高可用性
1、CAP理论:
C(一致性):所有的节点上的数据时刻保持同步
A(可用性):每个请求都能接受到一个响应,无论响应成功或失败
P(分区容错):系统应该能持续提供服务,即使系统内部有消息丢失(分区)
高可用、数据一致是很多系统设计的目标,但是分区又是不可避免的事情:
CA without P:如果不要求P(不允许分区),则C(强一致性)和A(可用性)是可以保证的。但其实分区不是你想不想的问题,而是始终会存在,因此CA的系统更多的是允许分区后各子系统依然保持CA。
CP without A:如果不要求A(可用),相当于每个请求都需要在Server之间强一致,而P(分区)会导致同步时间无限延长,如此CP也是可以保证的。很多传统的数据库分布式事务都属于这种模式。
AP wihtout C:要高可用并允许分区,则需放弃一致性。一旦分区发生,节点之间可能会失去联系,为了高可用,每个节点只能用本地数据提供服务,而这样会导致全局数据的不一致性。现在众多的NoSQL都属于此类。
CP适合于金融,AP适合于游戏
2、redis 持久化格式
rdb:快
aof:类似于mysql binlog,更可靠
容灾:拷贝rdb文件
3、Sentinel:故障迁移,保证可用性
redis-server /path/to/sentinel.conf --sentinel
配置例子:
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 60000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1
sentinel monitor resque 192.168.1.3 6380 4
sentinel down-after-milliseconds resque 10000
sentinel failover-timeout resque 180000
sentinel parallel-syncs resque 5
五、集群cluster(服务端透明sharding和failover)
1、工具 redis-trib.rb 半自动化