天天看点

Redis运维笔记:一文记录常见的redis知识点内存清除策略Redis常用运维指令主从复制哨兵服务数据持久化Redis优化

Redis简介

中文网站: www.redis.cn
           

Redis是一款高性能的key/values分部署吧内存数据库,支持数据持久化(定期把内存里的数据存储到硬盘)。

支持master-slave模式数据备份。

内存清除策略

volatile-lru #最近最少使用(针对设置了TTL的key)

allkeys-lru #删除最少使用的key(针对所有key)

allkeys-lfu #从所有key中清除使用频率最少的key

volatile-lfu #从所有配置了过期时间的key中清除使用频率最少的key

volatile-random #在设置了TTL的key中随机移除

allkeys-random #随机移除key

volatile-ttl (minor TTL) #移除最近过期的key

noeviction #不删除

Redis常用运维指令

127.0.0.1:6379> set {key_name} {value} #存数据

127.0.0.1:6379> get {key_name} #取数据

127.0.0.1:6379> mset {key_list} #存多个key

127.0.0.1:6379> mget #获取多个key值

127.0.0.1:6379> select 数据库编号(0~15) #切换库

127.0.0.1:6379> keys * #显示所有key(会遍历所有key)

127.0.0.1:6379> keys a? #显示指定key

127.0.0.1:6379> exists {key_name} #测试key是否存在

127.0.0.1:6379> ttl key #查看key生存时间

127.0.0.1:6379> type key #查看key类型

127.0.0.1:6379> move key 库编号 #移动key到指定库

127.0.0.1:6379> expire key名 数字 #设置key有效时间

127.0.0.1:6379> del key名 #删除指定key

127.0.0.1:6379> flushall #删除内存里的所有key

127.0.0.1:6379> flushdb #删除所在库的所有key

127.0.0.1:6379> save #保存所有key到硬盘

127.0.0.1:6379> shutdown #停止服务

127.0.0.1:6379> cluster info #查看集群信息

127.0.0.1:6379> cluster nodes #查看集群节点信息

127.0.0.1:6379> info memory #查看内存使用

127.0.0.1:6379> dbsize #返回当前数据库key的总值(不会遍历所有key)

连接redis服务

$ redis-cli -h 192.168.2.22 -p 2379
127.0.0.1:6379> auth lidabai666     #输入密码
           

-h:指定redis服务地址;

-p:指定redis服务端口号(默认6379)

-a:指定redis连接密码(不建议在命令行指定,连接后再使用auth指定)

-c:集群模式

127.0.0.1:6379> slowlog get
           

查看超时参数值:

127.0.0.1:6379> config get timeout
           

查看连接数

127.0.0.1:6379> info clients  
# Clients
connected_clients:1
cluster_connections:0
maxclients:10000
client_recent_max_input_buffer:24
client_recent_max_output_buffer:0
blocked_clients:0
tracking_clients:0
clients_in_timeout_table:0
           

redis修改密码

127.0.0.1:6379> config set requirepass "new_password"
           

读取redis密码信息

127.0.0.1:6379> config get requirepass
           

这个时候这个密码没有刷新到配置文件中,如果redis重启,会丢失这个密码,为了持久生效,需要继续使用config的rewrite命令,这个命令会将当前的修改刷新到配置文件中,执行完这个命令后断开和重启都不会丢失这个密码了。

127.0.0.1:6379> config rewrite
           

主从复制

主从复制结构模式

  • 1主1从
  • 1主n从
  • 主从从

    Redis服务运行后,默认都是master服务器。

工作原理

Slave向master发送sync命令

Master启动后台存盘进程并收集所有修改数据命令;

Master完成后台存盘后,传送整个数据文件到slave;

Slave接收数据文件,加载到内存中完成首次完全同步;

后续有新数据产生时,Master继续收集数据修改命令依次传送给slave,完成同步。

配置从库

127.0.0.1:6379> info replication    #查看复制信息
# Replication
role:master       #角色
connected_slaves:0 
master_failover_state:no-failover
master_replid:0e9cbb4a818718b1e0f5646d489d5a0bfa9f74f5
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:0
命令行指定主库(临时)
127.0.0.1:6379> slaveof 主库IP 主库端口
配置文件指定主库(永久)
$ cat /etc/redis/6379.conf
Slaveof 主库IP 主库端口
           

反客为主(将从库恢复为主库)

命令行临时设置

127.0.0.1:6379> slaveof no one
           

永久配置

$ cat /etc/redis/6379.conf
           

哨兵服务

哨兵服务介绍

监视master服务器,当发现master宕机后,将从服务器升级为主服务器。

配置哨兵服务

  • 安装redis服务
  • 创建主配置文件
  • 启动哨兵服务
$ vim /etc/sentinel.conf
sentinel monitor 主机名  IP地址 端口 票数
bind 0.0.0.0 
sentinel auth-pass 主机名  密码
$ 重启服务
票数: 发现主库宕机的哨兵服务器台数
           

数据持久化

RBD

Redis数据库文件(RedisDataBase)

数据持久化方式之一(默认),按照指定时间间隔,将内存中的数据集快照写入磁盘。

RBD优点

高性能的持久化实现,创建一个子进程来执行持久化,先将数据写入临时文件,持久化过程结束后,再用该临时文件替换上次持久化好的文件。过程主进程不做任何IO操作。

比较适合大规模数据恢复,且对数据完整性要求不高的场合。

RBD缺点

意外宕机时,丢失最后一次持久化的所有数据。

1)定义RBD文件名

dbfilename  "dump.rbd"
           

2)备份数据

备份dump.rbd文件到其它位置

$ cp $PATH/dump.rbd   备份目录
           

3)恢复数据

拷贝备份文件到数据库目录,启动redis服务。

$ cp 备份目录/dump.rbd  数据库目录/
           

AOF

Append Only File

追加方式记录写操作的文件,记录redis服务所有写操作,不段的将新的写操作追加到文件的末尾。默认没有启用,使用cat命令可以查看文件内容。

AOF优点:可以灵活的设置持久化方式,出现意外宕机时,仅可能丢失1秒的数据。

AOF缺点:持久化文件的体积通常会大于RBD方式,执行fsync策略的速度可能比RBD方式慢。

1)启用AOF

> config set appendonly yes
> config rewrite    #写进配置文件
           

2)备份数据

$ cp 数据库目录/appendonly.aof  备份目录
           

3)数据恢复

cp备份文件到数据库目录,启动redis服务。
           

4)优化配置

定义文件名

appendonly yes    #启用aof
appendfilename "appendonly.aof"   #指定文件名
           

AOF文件记录写操作的方式

appendfsync always #实时记录,并完成磁盘同步

appendfsync everysec #每秒记录一次,并完成磁盘同步

appendfsync no #写入aof,不执行磁盘同步

日志重写

auto-aof-rewrite-min-size 64mb   #首次重写触发值
auto-aof-rewrite-percentage 100  #再次重写,增长百分比
           

修复AOF文件

把文件恢复到最后一次的正确操作

$ redis-check-aof --fix  appendonly.aof
           

Redis优化

内存优化

继续阅读