Redis(二)

来源:互联网 发布:淘宝十大名店 编辑:程序博客网 时间:2024/06/15 09:48

一、Redis高级命令及特性

返回满足的所有键,可以模糊匹配 KEYS *
是否存在指定的Key EXISTS
expire设置某个key的过期时间,使用ttl查看剩余时间
PERSIST 取消过期时间
select 选择数据库,数据库0到15(一共16个数据库),默认进入的是0数据库
move [key] [数据库下标] 将当前数据中的key转移到其他数据库中
randomkey 随机返回数据库里的一个key
rename 重命名key
dbsize 查看数据看key数量
flushdb 清空当前数据库
config get * 获取配置信息

二、主从复制

主从复制:
1.Master可以拥有多个slave2.多个slave可以连接同一个master外,还可以连接到其他的slave3.主从复制不会阻塞master,在同步数据时,master可以继续处理client请求4.提供系统的伸缩性
主从复制过程:
1.slave与master建立连接,发动sync同步命令2.master会开启一个后台进程,将数据库快照保存到文件,同时master主进程会开始收集新的写命令并缓存3.后台完成保存后,就将文件发送给slave4.slave将此文件保存到硬盘上
主从复制配置
修改配置文件redis.conf1.开发的话建议把 bind 属性设置为 bind 0.0.0.02.slaveof <masterip><masterport>3.masterauth <master-password>

三、哨兵

有了主从复制的实现以后,如果想对主从服务器进行监控,那么就应该使用哨兵的机制。
主要功能特点:
1.监控主数据库和从数据库是否正常运行
2.主数据库出现故障,可以将从数据库转换为主数据库,实现自动切换。

哨兵启动:/usr/local/redis/bin/redis-server /usr/local/redis/etc/sentinel.conf --protected-mode no --sentinel &
查看哨兵相关信息/usr/local/redis/bin/redis-cli -h <SentinelIP> -p 26379 info Sentinel

四、Redis的持久化机制

什么是持久化?简单来讲就是将数据放到断电后数据不会丢失的设备中,也就是我们通常理解的硬盘上。
首先我们来看一下数据库在进行写操作时到底做了哪些事,主要有下面五个过程

  • 客户端向服务端发送写操作(数据在客户端的内存中)。
  • 数据库服务端接收到写请求的数据(数据在服务端的内存中)。
  • 服务端调用write这个系统调用,将数据往磁盘上写(数据在系统内存的缓冲区中)。
  • 操作系统将缓冲区中的数据转移到磁盘控制器上(数据在磁盘缓存中)。
  • 磁盘控制器将数据写到磁盘的物理介质中(数据真正落到磁盘上)。

Redis提供了RDB持久化和AOF持久化

RDB

snapshortting 快照默认方式,将内存中以快照的方式写入二进制文件中,默认位dump.rdb,可以通过配置设置自动做快照持久化方式,可以配置Redis在n秒内如果超过m个Key则修改,自动做快照。

# 900秒内如果超过1个key被修改,则发起快照保存save 900 1
AOF

aof方式实际类似mysql的基于语句的binlog方式,即每条会使Redis内存数据发生改变的命令都会追加到一个log文件中,也就是说这个log文件就是Redis的持久化数据。
aof的方式的主要缺点是追加log文件可能导致体积过大,当系统重启恢复数据时如果是aof的方式则加载数据会非常慢,几十G的数据可能需要几小 时才能加载完,当然这个耗时并不是因为磁盘文件读取速度慢,而是由于读取的所有命令都要在内存中执行一遍。另外由于每条命令都要写log,所以使用aof 的方式,Redis的读写性能也会有所下降。

appendonly yes // 启动AOF持久化方式有三种修改方式# appendfsync always //收到写命令就立即写入到磁盘,效率最慢,但是保证完全的持久化(生产上推荐)# appendfsync everysec //每秒钟写入磁盘一次,在性能和持久化方面做了很好的折中# appendfsync no //完全依赖os,性能最好,持久化没保证

五、发布订阅消息

Redis提供了简单的发布订阅功能
使用subscribe[频道] 进行订阅监听
会用publis [频道][发布内容] 进行发布消息广播

原创粉丝点击