博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
redis配置
阅读量:7067 次
发布时间:2019-06-28

本文共 6147 字,大约阅读时间需要 20 分钟。

redis是业界主流的key-value nosql 数据库之一。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

1、安装

[root@node2 ~]# yum install redis[root@node2 ~]# rpm -ql redis/etc/logrotate.d/redis/etc/redis-sentinel.conf/etc/redis.conf/etc/systemd/system/redis-sentinel.service.d/etc/systemd/system/redis-sentinel.service.d/limit.conf/etc/systemd/system/redis.service.d/etc/systemd/system/redis.service.d/limit.conf/usr/bin/redis-benchmark/usr/bin/redis-check-aof/usr/bin/redis-check-rdb/usr/bin/redis-cli/usr/bin/redis-sentinel/usr/bin/redis-server/var/lib/redis/var/log/redis/var/run/redis.....

2、配置

################################## NETWORK #####################################bind 127.0.0.1protected-mode yes    保护模式  只能在本地访问,前提是在没有设置密码和绑定清空下生效port 6379# unixsocket /tmp/redis.socktcp-backlog 511       tcp 队列timeout 0             不超时,建议超时  tcp-keepalive 300      tcp握手################################# GENERAL #####################################daemonize no          #如果是systemd管理就不是守护进程pidfile /var/run/redis_6379.pid################################## SECURITY ###################################requirepass 123456# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52    #很危险的命令  在aof 跟 replocation中不推荐使用################################### LIMITS ####################################maxclients 10000   最大并发连接数maxmemory 
最大内存 建议设置maxmemory-policy noeviction noeviction 不启动淘汰机制,告诉客户端内存已经满了 volatile-lru -> 淘汰过期键 allkeys-lru -> 淘汰任意键 volatile-random -> 淘汰所有设置过过期时间的键 allkeys-random -> 随机淘汰任意键 volatile-ttl -> 淘汰设置过过期时间的,按照时间顺序淘汰maxmemory-samples 5 上述策略每批样本5个################################## SLOW LOG ###################################slowlog-log-slower-than 10000 0.01sslowlog-max-len 128 记录语句最大字节############################### ADVANCED CONFIG ###############################client-output-buffer-limit normal 0 0 0 常规客户端输出缓冲大小
client-output-buffer-limit slave 256mb 64mb 60 硬限制最大 软限制(可超出) 超出部分60s清除client-output-buffer-limit pubsub 32mb 8mb 60

3、启动

[root@node2 ~]# systemctl start redis[root@node2 ~]# ss -lntup|grep redistcp    LISTEN     0      128    127.0.0.1:6379                  *:*                   users:(("redis-server",pid=101175,fd=4))

4、客户端连接程序

[root@node2 ~]# redis-cli -h[root@node2 ~]# redis-cli -h 127.0.0.1 -p 6379  -a '123456'

数据持久化

RDB:snapshotting, 二进制格式;按事先定制的策略,周期性地将数据从内存同步至磁盘;数据文件默认为dump.rdb;

客户端显式使用SAVE或BGSAVE命令来手动启动快照保存机制;
SAVE:同步,即在主线程中保存快照,此时会阻塞所有客户端请求;
BGSAVE:异步;

同步,即在主线程中保存快照,此时会阻塞所有客户端请求;

192.168.1.201:6379> saveOK

异步,即在主线程中保存快照

192.168.1.201:6379> BGSAVEBackground saving started

数据完整恢复AOF

AOF:Append Only File, fsync

记录每次写操作至指定的文件尾部实现的持久化;当redis重启时,可通过重新执行文件中的命令在内存中重建出数据库;
BGREWRITEAOF:AOF文件重写;
不会读取正在使用AOF文件,而是通过将内存中的数据以命令的方式保存至临时文件中,完成之后替换原来的AOF文件;

2种配置

################################ SNAPSHOTTING  ################################save 900 1       900s发生一次改变    保存save 300 10      300s发生10次改变    保存save 60 10000    60s发生10000改变    保存stop-writes-on-bgsave-error yes     快照发生错误,拒绝所有写操作rdbcompression yes                  快照文件压缩  cpu资源跟磁盘io相关rdbchecksum yes                     快照做校验dbfilename "dump.rdb"                快照名称dir "/var/lib/redis"                放到高性能磁盘############################## APPEND ONLY MODE ###############################工作方式,基于内存时时生产aof,追加到文件appendonly noappendfilename "appendonly.aof"   #存放位置同上appendfsync everysec   #每秒写一次,降低io压力,会丢失1秒的数据变化               always     #内核同步到磁盘 性能严重低效            no         #由内核决定什么时候写到磁盘no-appendfsync-on-rewrite no   覆盖老的aof,优化aof,这个no是说在追加时候继续rewrite,  yes的话是追加时候不要rewirteauto-aof-rewrite-percentage 100    键的变化超过原有键100%  和下面那项一起满足auto-aof-rewrite-min-size 64mb     最小64mb   启动重写aof-load-truncated yes             意外终止情况下清空清楚aof文件,重新构建
[root@node1 ~]# ls /var/lib/redis/dump.rdb  appendonly.aof

appendonly.aof存的都是命令,类似mysql二进制日志,用来数据回放

[root@node2 redis]# cat appendonly.aof*2$6SELECT$10*3$3set$1b$2pp

主从配置

从节点配置主节点,配置主节点认证密码

127.0.0.1:6379> SLAVEOF 192.168.1.201 6379OK127.0.0.1:6379> CONFIG SET masterauth 123456OK127.0.0.1:6379> CONFIG REWRITE

从节点配置文件参数说明

################################# REPLICATION ################################## Generated by CONFIG REWRITEslaveof 192.168.1.201 6379masterauth "123456"slave-serve-stale-data yes   #主节点挂了,从节点数据是有否有效slave-read-only yes          #只读repl-diskless-sync no        #主节点快照,从节点复制快照进行数据同步  这里是no 用的是下面磁盘内容复制      Disk-backed            #主节点把保存下来的文件传送给从即诶单repl-diskless-sync-delay 5   延迟几秒同步,无磁盘复制才有效#repl-ping-slave-period 10    每隔10秒探测主节点#repl-timeout 60              探测一分钟超时repl-disable-tcp-nodelay no  数据同步不延迟,网络io增加#repl-backlog-size 1mb#repl-backlog-ttl 3600         0表示不超时slave-priority 100            从节点优先级(多个从节点优先级比较) 0没有优先级,数字越小优先级越高#min-slaves-to-write 3       #min-slaves-max-lag 10        至少3个从节点在线并且从节点不落后主节点10s,主节点才能写入# slave-announce-ip 5.5.5.5   自己的ip# slave-announce-port 1234    自己的端口

主节点查看从节点信息

192.168.1.201:6379> INFO REPLICATION# Replicationrole:masterconnected_slaves:1slave0:ip=192.168.1.200,port=6379,state=online,offset=781,lag=0master_repl_offset:781repl_backlog_active:1repl_backlog_size:1048576repl_backlog_first_byte_offset:2repl_backlog_histlen:780

主从故障转移简单说明

实现过程:所有节点配置初始化一样,只要配置主节点信息,同步时候,从节点会从主节点拉去信息,同步配置文件,在同步redis。初次配置,最好手动实现主从,让其生产配置文件。

vim  /etc/redis-sentinel.confbind 0.0.0.0   #生产写私有ipsentinel monitor mymaster 192.168.1.201 6379 2sentinel auth-pass mymaster 123456sentinel down-after-milliseconds mymaster 30000sentinel parallel-syncs mymaster 1   一次只给一个从节点同步数据,避免压垮主节点sentinel failover-timeout mymaster 180000   故障转移超时时间  这个可以长点logfile /var/log/redis/sentinel.log

以下这段要么自动生产,要么sentinel运行时修改

sentinel leader-epoch mymaster 3sentinel known-slave mymaster 192.168.1.202 6379sentinel known-slave mymaster 192.168.1.200 6379sentinel current-epoch 3

集群简单介绍

redis官方集群,无中心节点,实现对key用hash slot(0-16383)算法进行存储,还实现sentinel的故障转移功能。

转载于:https://blog.51cto.com/marvin89/2132001

你可能感兴趣的文章
使用JSARToolKit5 开发AR应用 (1) 简介
查看>>
QQ群头像 微信群头像 多图合并框架实现
查看>>
去除UITableViewheader footer黏性
查看>>
Node中的事件循环
查看>>
清除浮动的四种方式及其原理理解
查看>>
Android运行时权限机制解析
查看>>
面向对象详解
查看>>
python提高
查看>>
Codding杂记
查看>>
Jupyter Notebook 在 macOS 系统上的快捷键
查看>>
快速学习小程序的技巧
查看>>
以太坊dapp应用--福利彩票 IDEA+React(简单版)
查看>>
面试错误总结
查看>>
易于理解的Dagger2入门篇
查看>>
如何简单高效地部署和监控分布式爬虫项目
查看>>
mPaaS 服务端核心组件:移动分析服务 MAS 架构解析
查看>>
better-fe 技术周刊 - 2019/05/13
查看>>
springboot集成MyBatis
查看>>
小米手机如何无root激活Xposed框架的经验
查看>>
用 canvas 做一个 DVD 待机动画
查看>>