Linux redis day3

redis 服务端命令

time 当前服务器时间戳、微妙数

dbsize 当前数据库key的数量

BGREWRITEAOF 后台进程重写AOF

BGSAVE 后台保存rdb快照

SAVE 保存rdb快照

LASTSAVE 上次保存rdb时间戳

Slaveof master-Host port  , 把当前实例设为master的slave

Flushall 清空所有库所有键

Flushdb 清空当前库所有键

Showdown [save/nosave]


: 如果不小心运行了flushall,立即 shutdown nosave ,关闭服务器

然后 手工编辑aof文件, 去掉文件中的 “flushall ”相关行, 然后开启服务器,就可以导入回原来数据.

 

如果,flushall之后,系统恰好bgrewriteaof了,那么aof就清空了,数据丢失.

 

Slowlog 显示慢查询

:多慢才叫慢?

答: 由slowlog-log-slower-than 10000 ,来指定,(单位是微秒)

 

服务器储存多少条慢查询的记录?

答: 由 slowlog-max-len 128 ,来做限制

 

Info [Replication/CPU/Memory..]

查看redis服务器的信息


Redis运维时需要注意的参数

1: 内存

# Memory

used_memory:859192 数据结构的空间

used_memory_rss:7634944 实占空间

mem_fragmentation_ratio:8.89 前2者的比例,1.N为佳,如果此值过大,说明redis的内存的碎片化严重,可以导出再导入一次.

2: 主从复制

# Replication

role:slave

master_host:192.168.1.128

master_port:6379

master_link_status:up

 

3:持久化

# Persistence

rdb_changes_since_last_save:0

rdb_last_save_time:1375224063

 

4: fork耗时

#Status

latest_fork_usec:936  上次导出rdb快照,持久化花费微秒

注意: 如果某实例有10G内容,导出需要2分钟,

每分钟写入10000,导致不断的rdb导出,磁盘始处于高IO状态.

 

5: 慢日志

config get/set slowlog-log-slower-than

CONFIG get/SET slowlog-max-len

slowlog get N 获取慢日志


主从复制

运行时更改master-slave

修改一台slave(设为A)为new master

1) 命令该服务不做其他redis服务的slave

   命令: slaveof no one

2) 修改其readonly为yes

 

其他的slave再指向new master A

1) 命令该服务为new master A的slave

   命令格式 slaveof IP port


二、修改配置文件

配置slave服务器的配置文件  

slaveof masterIP masterPORT

如果master设置了验证密码,还需配置masterauth。楼主的master设置了验证密码为admin,所以配置masterauth admin。


监控工具 sentinel

Linux redis day3_第1张图片

Sentinel不断与master通信,获取master的slave信息.

监听master与slave的状态

如果某slave失效,直接通知master去除该slave.

 

如果master失效,,是按照slave优先级(可配置), 选取1个slave做 new master

,把其他slave--> new master

 

疑问: sentinelmaster通信,如果某次因为masterIO操作频繁,导致超时,

此时,认为master失效,很武断.

解决: sentnel允许多个实例看守1个master, 当N台(N可设置)sentinel都认为master失效,才正式失效.

 

Sentinel选项配置

port 26379 # 端口

sentinel monitor mymaster127.0.0.1 63792,

给主机起的名字(不重即可),

2sentinel实例都认为master失效时,正式失效

 

sentinel down-after-milliseconds mymaster30000  多少毫秒后连接不到master认为断开

sentinel can-failover mymaster yes #是否允许sentinel修改slave->master. 如为no,则只能监控,无权修改./

sentinel parallel-syncs mymaster 1 , 一次性修改几个slave指向新的new master.

sentinel client-reconfig-script mymaster/var/redis/reconfig.sh ,# 在重新配置new master,new slave过程,可以触发的脚本

Redis Sentinel机制与用法(一)

https://my.oschina.net/dyyweb/blog/513680

搭建Redis Sentinel集群

https://my.oschina.net/shelltea/blog/698105


Redis key 设计技巧

1: 把表名转换为key前缀 如, tag:

2: 第2段放置用于区分区key的字段--对应mysql中的主键的列名,如userid

3: 第3段放置主键值,如2,3,4...., a , b ,c

4: 第4段,写要存储的列名

 

用户表 user  , 转换为key-value存储

userid

username

passworde

email

9

Lisi

1111111

[email protected]

 

set user:userid:9:username lisi

set user:userid:9:password 111111

set user:userid:9:email   [email protected]

 

keys user:userid:9*

2 注意:

在关系型数据中,除主键外,还有可能其他列也步骤查询,

如上表中, username也是极频繁查询的,往往这种列也是加了索引的.

 

转换到k-v数据中,则也要相应的生成一条按照该列为主的key-value

Set user:username:lisi:uid  9 

 

这样,我们可以根据username:lisi:uid ,查出userid=9,

再查user:9:password/email...


php-redis扩展编译

 

1: pecl.php.net 搜索redis

2: 下载stable(稳定版)扩展

3: 解压,

4: 执行/php/path/bin/phpize --with-php-config=/path/php-config(作用是检测PHP的内核版本,并为扩展生成相应的编译配置)

5: configure--with-php-config=/php/path/bin/php-config

6: make && makeinstall

 

编辑php.ini文件 引入编译出的redis.so插件

1: 编辑php.ini

2: 添加









你可能感兴趣的:(linux)