Redis运维笔记:一文记录常见的redis知识点

Posted 键客李大白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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优化

内存优化

设置
Maxmemory #最大内存
Maxmemory-policy #定义使用策略
Maxmemory-samples #选取key模板的个数(针对lru和ttl策略)

数据从内存保存到硬盘的频率
save 900 1 #15分钟有1个key改变即存盘
save 300 10 #5分钟有10个key改变即存盘
save 60 10000 #1分钟有10000个key改变即存盘

手动存盘
save #阻塞写存盘
bgsave 不阻塞写存盘

#

以上是关于Redis运维笔记:一文记录常见的redis知识点的主要内容,如果未能解决你的问题,请参考以下文章

一文搞懂百度强推的Redis天花板笔记,原来数据库是这样理解的

一文读懂Redis常见对象类型的底层数据结构

Redis常见客户端异常汇总(Jedis篇) | 运维进阶

常见运维漏洞-Rsync-Redis

《Redis开发与运维》读书笔记

薪资界的天花板!一文带你深入原理学习阿里巴巴Redis全能笔记