redis集群的学习(一)
redis配置文件详解
redis默认是不作为守护进程来运行的,你可以把这个设置为yes,让它作为守护进程来运行
注意,当作为守护进程的时候,redis 会把进程ID 写到/var/run/redis.pid
daemonize no
# 当以守护进程方式运行的时候,redis会把进程ID 默认写到/var/run/redis.pid 可以在这里修改路径
pidfile /var/run/redis.pid
接受连接的特定端口.默认是 6379
如果端口设置为0 redis就不会监听TCP 套接字
port 6379
如果你想的话,你可以绑定单一接口,如果这里没单独设置,那么所有接口的连接都会被监听
#bind 127.0.0.1
# 指定用来监听时连接的 unix 套接字的路径,你可以绑定单一接口,如果不指定就不会通过unix套接字监听
unixsocket /tmp/redis.sock
unixsocketperm 755
#一个客户端空闲多少秒后关闭连接(0代表禁用,永不关闭)
timeout 0
#设置服务器调试等级
#可能值:
#debug (很多信息,对开发/测试有用)
#verbose(很多精简的有用信息,但是不像debug 等级那么多)
#notice (适量的意思,基本上是生产环境中需要的程度)
#warning (只有狠重要/严重的信息会记录下来)
#指定日志文件名,也可以使用stdout 来强制redis把日志信息写到标准输出上
#注意:如果redis以守护进程方式运行,而你设置日志显示的标准输出的话,那么日志会发送到 /dev/null
logfile stdout (可以写一个日志文件的路径)
#要使用系统日志记录器很简单,只要设置 syslog-enabled 为yes 就可以了
#然后根据需要设置其他一些 syslog 参数就可以了
#syslog-enabled no
#指明 syslog身份
syslog ident redis
指明syslog 的设备,必须是一个用户或者是 local0-local7之一
#syslog-fadlity local 0
database 16
把数据库存到磁盘上
save <seconds> <changes>
会在指定秒数和数据变化次数之后把数据库写到磁盘上
下面的列子将会进行把数据库写入磁盘的操作
#900 秒 (15分钟) 之后,且至少1次变更
#300秒 (5分支) 之后, 且至少10次变更
# 60秒之后,且至少 10000次变更
#注意: 要想不写磁盘的话就把所有 save 设置 注释就行了
save 900 1
save 300 10
save 60 10000
只需要一个参数即可
# 当导出到 .rdb 数据库时 是否用 LZF 压缩字符串对象
#默认设置为yes,所以几乎总是生效的
#如果你想节省CPU 的话你可以把这个设置为 no,但是如果你有可压缩的key的话,那数据文件夹会更大了
rdbcompression yes
#数据库的文件名
dbfilename dump.rdb
#工作目录
#数据库会写到这个目录下,文件名叫是上面的 dbfilename 的值
#累加文件也放在这里
#注意你这里指定的必须是目录,不是文件名
dir
##############################
# 主从同步 通过slaveof 配置来实现redis实例的备份
#注意 这里是本地从远端复制数据 ,也就是说 本地可以有不同的数据库文件 ,绑定不同的IP ,监听不同的IP 监听不同的端口
#
# slaveof <masterip><masterport>
#如果master 设置了密码 (通过下面的"requirepass" 选项来配置),那么slave 在开始同步之前必须进行身份验证,否则它的同步请求会被拒绝
#
#masterauth <master-password>
#当一个 slave失去和 master的连接,或者同步正在进行中,slave的行为有两种可能
1)如果 slave-serve-stale-data设置为yes (默认值),slave 会继续响应客户端请求,可能是正常的数据,
也可能是还没获得值的空数据
2) 如果slave-server-stale-data设置为no,slave 会回复正在从 master同步 SYNC with master in process)
来处理各种请求,除了info和slaveof命令
#
slave-sever-stale-data yes
#下面的选项设置了大块数据I/O 向master请求数据和ping响应的过期时间
#默认值 60秒
#
#一个很重要的事情:确保这个值比 repl-ping-slave-period 大,否则master 和slave之间的传输过期时间比预想的要短
#repl-timeout 60
#要求客户端在处理任何命令时都要验证身份和密码
#警告:因为redis太快了,所以居心不良的人可以每秒尝试150k的密码来试图破解
requirepass redispassword 密码
# 命令重命名
#在共享环境,可以为危险的命令改变名字.比如,你可以为config改个其他不太容易猜到的名字,这样你自己仍然可以使用,而别人却没法做坏事了
#列如
rename-command CONFIG "你自己想命名的名字"
#甚至也可以通过给命令赋值 一个空字符串来完全禁用这条命令
#
# rename-command CONFIG ""
#############限制##########################
#设置最多同时连接客户的数量
#默认没有限制,这个关系到redis进程能够打开的文件描述符数量
#特殊值 0 表示没有限制
#一旦达到这个限制,redis会关闭所有新连接并发送错误 达到最大用户数上限
#maxclients 128
#不要用比设置的上限更多的内存,一旦内存使用达到上限,redis会根据选定的回收策略
参见(maxmemory-policy) 删除key
#如果 因为删除策略问题 redis无法删除key,或者策略设置为noeviction redis会回复需要更多内存的错误信息给命令
例如:set LPUSH 等等,但是会继续合理响应只读命令:比如 get
#在使用redis作为LRU 缓存 ,或者为实例设置了硬性内存限制的时候,(使用noeviction 策略)的时候,这个选项还是蛮有用的)
#警告:当一推slave连上达到内存上限的实例的时候,响应slave需要的输出缓存所需内存不计算在使用内存当中
#这样当请求 一个删除掉的key的时候就不会触发网格问题,重新同步的事件,然后slave就会收到一堆删除指令,直到数据库空了为止
简而言之,如果你用slave 连上一个master的话,那建议你把master内存限制设小点儿,确保有足够的内存用做输出缓存
maxmemory <bytes>
内存策略,如果内存限制了,redis如何删除key,你可以在下面5个里面选
#volatile-lru - 根据lru算法生成 的过期时间来删除
#allkeys-lru - 根据lru算法删除任何key
#volatile-random -根据过期设置来随机删除Key
#allkeys--random -无差别随机删
#volatile-ttl -根据最近过期时间来删除
#noeviction - 谁也不删,直接在写操作时返回错误
# 注意:对所有策略来说,如果redis找不到合适的可以删除的key都会在写操作时返回一个错误
默认值如下
maxmemory-policy volatile-lru
# 默认情况下,redis是异步的把数据导出到磁盘上,这种情况下,当redis挂掉的时候,最新的数据就丢了
#如果不希望丢掉任何一条数据的话就该用纯累加模式,一旦开启这个模式,redis就会把每次写入的数据在接收
后都写入appendonly.aof 文件
#每次启动时redis都会把这个文件的数据读入内存中
#注意,异步导出的数据库文件和纯累加文件可以并存
#如果纯累加模式开启了,那么redis会在启动时载入日志文件而忽略导出的 dump.rdb文件
#重要 查看BGREWRITEAOF 来了解当累加日志文件太大了之后,怎么在后台重新处理这个日志文件
#纯累加文件名字 (默认appendonly.aof)
appendfilename appendonly.aof
# fsync() 请求操作系统马上把 数据写到磁盘上,不要再等了
#有些 操作系统会真的把数据马上刷到磁盘上,有些则要磨蹭一下,但是会尽快去做
#redis支持三种不同的模式
#no:不要立刻写,只有在操作系统需要写的时候再写,比较快
#always:每次写操作都立刻写入到aof文件,慢,但是最安全
# everysec:每秒写一次,折中方案
默认的everysec 通常来说能在速度和数据之间取得比较好的平衡
如果真的理解了这个意味着什么,那么设置no 可以获得更好的性能表现(如果丢数据的话,则只能拿到一个不是很新的快照)
#或者相反的,你选择always 来牺牲速度确保数据安全,完整
如果拿不准 就使用everysec
#appendfsync always
appendfsync everysec
#appendfsync no
#如果你有延迟的问题那就把这个设为yes,否则就保持 no,这是保存持久数据最安全的方式
no-appendfsync-no-rewrite no
#自动重写AOF 文件
如果AOF日志文件大到指定百分比,redis能够通过BGREWRITEAOF 自动重写AOF日志文件
#
#工作原理:redis 记住上次重写时AOF 日志的大小(或者重启后没有写操作的话,那好直接用此时的AOF 文件)
基准尺寸和当前尺寸做比较,如果当前尺寸超过指定比例,就会触发重写操作
你还需要指定被重写日志的最小尺寸,这样避免了达到约定百分比但尺寸仍然很小的情况还要重写
#指定百分比为0 会禁用AOF 自动重写特性
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
redis慢查询日志可以记录超过指定时间的查询
例如;连接客户端,发送响应数据等,只计算命令运行的实际时间(这是唯一一种命令运行线程阻塞而无法同时为其他请求服务的场景)
你可以为慢查询日志配置两个参数:一个是超标的时间,单位为微妙
另一个是慢查询日志的长度.当 一个新的命令被写进日志的时候,最老的那个记录会被删掉
下面的时间单位是微妙,所以1000000 就是1秒,注意,负数时间会禁用慢查询日志,而0则会强制记录所有命令
slowlog-log-slower-than 10000
#这个长度没有限制,只要有足够的内存就行,你可以通过 slowlog reset来释放内存
slow-max-len 128
#警告!虚拟内存在redis2.4是反对的
### 非常不鼓励使用虚拟内存
#虚拟内存可以使redis在内存不够的情况下仍然可以将所有数据库序列保存在内存里
为了做到这一点,高频key会调到内存里,而低频key会转到交换文件里,就像操作系统使用内存页一样
#要使用虚拟内存,只要把vm-enabled 设置为yes,并根据需要设置下面三个虚拟内存参数就可以了
vm-enabled no
#vm-enabled yes
#这是交换文件的路径,估计你猜到了,交换文件不能在多个redis实例之间共享,所以确保每个redis实例使用一个独立交换文件
vm-swap-file /tmp/redis.swap
appendonly no
redis集群的学习(一)的更多相关文章
- 入门大数据---Redis集群分布式学习
Redis是什么? 官方介绍: Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 它支持多种类型的数据结构,如 字符串(strings), 散列( ...
- Redis集群教程(Redis cluster tutorial)
本博文翻译自Redis官网:http://redis.io/topics/cluster-tutorial 本文档以温和的方式介绍Redis集群,不使用复杂的方式来理解分布式系统的概念. ...
- Redis集群学习笔记
Redis集群学习笔记 前言 最近有个需求,就是将一个Redis集群中数据转移到某个单机Redis上. 迁移Redis数据的话,如果是单机Redis,有两种方式: a. 执行redis-cli shu ...
- Redis学习总结(七)--Redis集群之客户端访问
我们来试试进行数据的存储 127.0.0.1:7000> set name marklogzhu OK 127.0.0.1:7000> get name "marklogzhu& ...
- Dubbo入门到精通学习笔记(十五):Redis集群的安装(Redis3+CentOS)、Redis集群的高可用测试(含Jedis客户端的使用)、Redis集群的扩展测试
文章目录 Redis集群的安装(Redis3+CentOS) 参考文档 Redis 集群介绍.特性.规范等(可看提供的参考文档+视频解说) Redis 集群的安装(Redis3.0.3 + CentO ...
- 从零开始学习docker之在docker中搭建redis(集群)
docker搭建redis集群 docker-compose是以多容器的方式启动,非常适合用来启动集群 一.环境准备 云环境:CentOS 7.6 64位 二.安装docker-compose #需要 ...
- redis集群学习
转载: http://arganzheng.life/redis-cluster.html Redis3.0版本加入了cluster功能,解决了Redis单点无法横向扩展的问题. 分布式系统要解决的不 ...
- Redis Cluster集群知识学习总结
Redis集群解决方案有两个: 1) Twemproxy: 这是Twitter推出的解决方案,简单的说就是上层加个代理负责分发,属于client端集群方案,目前很多应用者都在采用的解决方案.Twem ...
- 【Redis学习之八】Redis集群:主从复制
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 redis-2.8.18 Redis集群分类: 主从复制 R ...
随机推荐
- Git 学习第二天(三)
删除文件: 先新建一个test文件到webgit版本库中,然后 git add git commit 当然,我们可以在文件夹中删除文件,git 也提供了命令 rm file 此时 ...
- 剑指offer——42最小的K个数
题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 题解: 原以为书中会有好方法,想不到还是排序和STL这两种方法 ...
- Apache POI环境设置
本章将指导完成Apache POI在Windows和Linux系统为基础的设置过程. Apache POI可以轻松地安装和集成,下面没有任何复杂的设置过程,通过几个简单步骤,目前Java环境,用户管理 ...
- 使用Python将字符串转换为格式化的日期时间字符串
我正在尝试将字符串“20091229050936”转换为“2009年12月29日(UTC)” >>>import time >>>s = time.strptime ...
- 天道神诀--linux双网卡绑定
# linux6 双网卡绑定操作步骤 1.彻底关闭NetworkManager service NetworkManager stopchkconfig NetworkManager off 2.编辑 ...
- beforeEach的深入研究,及beforeEach和beforeRouteEnter区别?
之前一直困惑它俩的区别,也没找到合适的文档,直到有天看到一篇博客,一起来学习下: 之前是在created钩子函数里面,发现这是在今天当前页面之后了.先回顾一下钩子函数beforeEach const ...
- python--面向对象:多态与封装
一.多态 :python 天生支持多态多态指的是一类事物有多种形态 eg:文件有多种形态:文本文件,可执行文件鸭子类型:python中崇尚鸭子类型,不崇尚根据继承所得来的相似 优点 : 松耦合 每个相 ...
- 初识微服务框架ServiceComb
https://blog.csdn.net/zengdongwen/article/details/93486257 后续跟进学习.
- 2019-9-2-win10-uwp-布局
title author date CreateTime categories win10 uwp 布局 lindexi 2019-09-02 12:57:38 +0800 2018-2-13 17: ...
- github合并分支到master
(1)切换到master分支 git checkout master (2) 将backup分支的代合并到master git merge backup (3) 查看状态 git status (4) ...