redis高级命令及特性
1.返回满足的所有键keys (可以模糊匹配)
2.exists是否存在指定的key
3.expire设置某个key的过期时间,使用ttl查看剩余时间
4.persist取消过期时间
5.select 选择数据库 数据库为0到15(一共16个数据库)默认进入的是0数据库
6 move key [数据库下标]将当前数据库中的key转移到其他数据库中
7.randomkey 随机返回数据库里的一个key
8.rename 重命名key
9.dbsize 查看数据库的key数量
10.info获取数据库信息
11.config get 返回所有配置
12 flushdb清空当前数据库,flushall清空所有数据库
主从复制
通俗的讲就是一个用户访问一台服务器,该服务器假设为主服务器,具有读写功能,而在该主服务器下关联了一台从服务器,该从服务只具有读功能不具有写功能,并且数据是从主服务器经过一些列同步算法到该服务器上
配置过程
1.修改redis.conf文件下
找到slaveof
该服务器为从服务器
主从复制对比
分析:
1.master可以拥有多个slave
2.多个slave可以连接同一个master外,还可以连接其他的slave
3.主从复制不会阻塞master在同步数据时,master可以据需处理client请求
4提供系统的伸缩性
主从复制过程
1.slave与master建立连接,发送sync同步命令
2.master会开启一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存
3.后台完成保存后,就将文件发送给slave
4.slave将此文件保存在硬盘上
redis持久化机制
redis需要经常将内存中的数据同步到硬盘来保证持久化
1.快照(默认方式)
将内存中以快照的方式写入到二进制文件中,默认为dump.rdb,可以通过配置设置自动做快照持久化的方式。可以配置redis在n秒内如果超过m个key则修改就自动做快照
具体配置如下
save 900 1 #900秒内如果超过1个key被修改 则发起快照保存
save 300 10
save 60 10000
2.aof(日志方式)
由于快照方式是在一定时间间隔做一次,所以可能发生redis意外down的情况就会丢失最后一次快照后的所有修改的数据。使用aof时,redis会将每一个收到的写命令都通过write函数追加到命令中
aof设置
appendonly yes //启动aof,有三种修改方式
#appendfsync always//收到命令就立即写入到磁盘,效率最慢,但是保证完全的持久化
#appendysync everysec//每秒钟写入磁盘一次,在性能和持久化方面做了很好的折中
#appendysync no //完全依赖os性能,持久化没保证
如图
有了aof我们就可以利用主从复制保证数据的完整性了
发布与订阅消息
使用subscribe [频道] 进行订阅监听
使用publish [频道] [发布内容] 进行发布消息广播