一、redis认证
二、redis事务
三、Connection&server相关命令
四、Redis的发布与订阅//充当mq的功能
五、Redis持久化
六、redis复制
七、master-slave实现
八、sentinal哨兵
九、redis限制
十、redis性能测试
一、redis认eredis认证:
vim /etc/redis.conf
requirepass redispass //密码
[root@node1 ~]# systemctl restart redis
[root@node1 ~]# redis-cli -h 192.168.4.106
192.168.4.106:6379> select 0
(error) NOAUTH Authentication required.
192.168.4.106:6379> auth redispass
OK
192.168.4.106:6379> select 0
OK
清空数据库
flushdb:清空当前库
flushall:清空所有库
二、redis事务1.MULTI用来组装一个事务;
2.EXEC用来执行一个事务;
3.DISCARD用来取消一个事务;
4.WATCH用来监视一些key,一旦这些key在事务执行之前被改变,则取消事务的执行。
我们来看一个MULTI和EXEC的例子:
RDBMS的事务:一组相关操作,是原子性的:满足ACID :原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)
redis的事务:可以将多个命令绑定在一起,顺序执行。通过multi,exec,watch等命令实现事务功能;
在事务执行过程中,redis不会中断当前事务去执行其他client的指令。
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set ip 192.168.0.1
QUEUED
127.0.0.1:6379> set port 800 //放到队列中
QUEUED
127.0.0.1:6379> exec //一起执行
1) OK
2) OK
watch:在事务执行过程中,施加乐观锁 //不支持回滚
在exec之前,监视 指定的数据key是否在 multi和exec之间发生修改操作,有变动则不予执行事务
事务中关联的 键 的监视操作。
//乐观锁,只是看他是否被修该,一旦被修改了,就不予执行。在事务过程中仍然可以被修改
redis不支持回滚操作,这是和mysql事务最大的区别
事务有10个操作,第5个命令错误。redis事务会忽略第5个错误,执行到最后。
redis目标:简单、高效
redis的原子性:事务队列中的任务,要么全部执行,要么全都不执行
redis的一致性:在检查入队时的一致性,例如输入为错误命令 //语法级别
redis的隔离性:单线程,在执行事务中,不会执行其他操作,但是可以接受用户请求到queue中
redis的持久性:依赖于server是否启用持久化功能
rdb或者aof //快照和追加到文件
示例:乐观锁终端1:
127.0.0.1:6379> watch ip
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set ip 10.0.0.1
QUEUED
127.0.0.1:6379> get ip
QUEUED
终端2:
127.0.0.1:6379> set ip 172.16.100.1
OK
127.0.0.1:6379> get ip
"172.16.100.1"
终端1:
127.0.0.1:6379> exec
(nil) //事务执行失败
redis的一致性************
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set jsidfjd
(error) ERR wrong number of arguments for 'set' command
127.0.0.1:6379> exec
(error) EXECABORT Transaction discarded because of previous errors.
redis的原子性************
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set ip 10.0.0.1
QUEUED
127.0.0.1:6379> set aa
(error) ERR wrong number of arguments for 'set' command
127.0.0.1:6379> exec //因为有语法错误,因此都没有执行
(error) EXECABORT Transaction discarded because of previous errors.
三、Connection&server相关命令help @connectionsauth:
ping: 验证服务器是否在线
echo “hello redis"
quit:
select:选择指定的DB
help @serverbgsave:异步存储数据到disk
client setname: 为连接设置名字 //只能为自己修改名字
client getname :获取当前客户端的链接名
client kill ip:port //kill client的一个连接
client list :查看链接
config get //redis的多数配置都可以在运行时修改
config set //配置file中的参数 ,可以在内存中修改
config rewrite //在内存中修改的操作,写入到配置文件
info //服务器的所有统计数据
info Memory //指定只看内存信息
info Cluster //获取指定section的内容
config resetstat //重置info的所有数据
dbsize: 限制所有的键的数量
bgsave: //
save:
lastsave:获取最近一次成功保存到disk的 timestamp
monitor:实时监控接受到的请求
shutdown [nosave/save ]:同步所有数据到disk后,关闭
slaveof :配置主从
slowlog:管理慢查询日志
sync:复制功能的内建命令 //同步master
time:获取当前server时间
四、Redis的发布与订阅//充当mq的功能发布与订阅:发布者在订阅者订阅之前的发布数据默认是收取不到的
redis的发布与订阅功能:(publish/subscribe)
生产者把信息发布在指定频道上,订阅者从指定的频道去订阅自己关注的信息即可
SUBSCRIBE:订阅一个或多个 队列/频道
unsubscribe 退订此前订阅的频道
psubscribe "new.i[to]" //订阅2个频道
psubscribe "new.*" //也可以
示例:发布与订阅终端1:
127.0.0.1:6379> SUBSCRIBE news //可以同时订阅多个channel
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "new