一:事务
MULTI
标记一个事务块的开始。
事务块内的多条命令会按照先后顺序被放进一个队列当中,最后由 EXEC 命令原子性(atomic)地执行
EXEC
执行所有事务块内的命令
10.10.10.20:6379> MULTI #标记一个事务的开始
OK
10.10.10.20:6379> SADD mykey01 hehe
QUEUED
10.10.10.20:6379> SADD mykey02 hehe
QUEUED
10.10.10.20:6379> EXEC #执行事务快内的命令
1) (integer) 1
2) (integer) 1
#如果事务错误,中间有一条命令错误,其他会正常执行、不支持回滚
二:主从
需要注意:同一台机器不同的配置文件启多个实例、
dir /var/lib/redi pid文件 prot 一定要修改 修改后目录记得要创建
dump.rdb appendonly.aof
cp /etc/redis.conf /etc/redis6378.conf #复制一个配置文件
/usr/bin/redis-server /etc/redis6378.conf #使用新的配置文件启动
#查看启动效果
[root@web01 ~]# netstat -lntup|grep -E "6379|6378"
tcp 0 0 10.10.10.20:6378 0.0.0.0:* LISTEN 44699/redis-server
tcp 0 0 10.10.10.20:6379 0.0.0.0:* LISTEN 14294/redis-server
#方法一:从库在命令行下输入、同步就会开始
10.10.10.20:6378> SLAVEOF 10.10.10.20 6379 #为主库的IP和端口
OK
方法二:从库配置文件修改
slaveof 10.10.10.20 6379
#完成后从库重启、即可同步、
#在redis命令行下输入info查看主从状态
...
# Replication
role:slave
master_host:10.10.10.20
master_port:6379
.....
#for ((i=1;i<=100000;i++));do redis-cli -h 10.10.10.20 SET k$i $i;done
批量插入测试同步
10.10.10.20:6379> BGSAVE #主服务器手动同步到从服务器
Background saving started
1、当主挂掉以后:把从redis提升为主:10.10.10.20:6378> SLAVEOF OFF ON
2、当主重新启动后、从数据库进行: SLAVEOF 10.10.10.20 6379
至次完成手动切换
方案:主禁持久化、从redis持久化
三:Redis集群
1.客户端分片:将redis分片的工作放在业务程序段
实现方法和代码全部自己掌控,随时调整,需要手动迁移(麻烦)
2、代理分片:类似 Mysql Proxy
01、 https://github.com/twitter/twemproxy
3、Codis集群
项目源代码:https://github.com/CodisLabs/codis
不支持redis命令列表:https://github.com/CodisLabs/codis/blob/release3.2/doc/unsupported_cmds.md
不支持redis命令列表:https://github.com/CodisLabs/codis/blob/release3.2/doc/unsupported_cmds.md
参考博客:
https://blog.51cto.com/liweizhong/1639918
https://www.cnblogs.com/xuanzhi201111/p/4425194.html
https://blog.51cto.com/liweizhong/1639918
https://www.cnblogs.com/xuanzhi201111/p/4425194.html
4、官方Redis Cluster