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知识点的主要内容,如果未能解决你的问题,请参考以下文章