一、Redis3.0 与 3.2 配置文件对比

1. clone redis

git clone https://github.com/antirez/redis.git

2. checkout分支

cd redis
git checkout 3.0
git checkout 3.2

3. 比较

(1) 比较3.0和3.2文件变化数

> git rev-list 3.0..3.2 --count
1708

(2) 比较3.0和3.2文件变化统计

> git diff 3.0..3.2 --shortstat

​​​​比较3.0和3.2文件变化数

二、Redis3.0与3.2默认配置文件变化

1.配置变化

Redis3.2添加了两个配置:

protected-mode yes
supervised no

Redis3.2修改了个配置:

有关list的优化,由配置一改为配置二,虽然还没详细了解,应该是list的底层数据结构做了一些新的变化或者优化。

配置一:

list-max-ziplist-entries 512
list-max-ziplist-value 64

配置二:

list-max-ziplist-size -2
list-compress-depth 0

配置三:

bind 127.0.0.1

bind 在 Redis3.2.0 中默认改为 127.0.0.1

2.新配置说明

(1).protected-mode(默认是yes)

# Protected mode is a layer of security protection, in order to avoid that
# Redis instances left open on the internet are accessed and exploited.
#
# When protected mode is on and if:
#
# 1) The server is not binding explicitly to a set of addresses using the
# "bind" directive.
# 2) No password is configured.
#
# The server only accepts connections from clients connecting from the
# IPv4 and IPv6 loopback addresses 127.0.0.1 and ::1, and from Unix domain
# sockets.
#
# By default protected mode is enabled. You should disable it only if
# you are sure you want clients from other hosts to connect to Redis
# even if no authentication is configured, nor a specific set of interfaces
# are explicitly listed using the "bind" directive.

说明

用一段代码就可以说明什么是protected-mode

if (protected-mode && !requirepass && !bind) {
Allow only 127.0.0.1,::1 or socket connections
Deny (with the long message ever!) others
}

其实设置成默认是为了保护对redis不了解的人,提供安全性,但是对于对于不需要bind和requirepass的使用者(例如内网),需要将protected-mode设置为no

(2).supervised (默认是no)

# If you run Redis from upstart or systemd, Redis can interact with your
# supervision tree. Options:
# supervised no - no supervision interaction
# supervised upstart - signal upstart by putting Redis into SIGSTOP mode
# supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET
# supervised auto - detect upstart or systemd method based on
# UPSTART_JOB or NOTIFY_SOCKET environment variables
# Note: these supervision methods only signal "process is ready."
# They do not enable continuous liveness pings back to your supervisor.

说明

可以通过upstart和systemd管理Redis守护进程,这个参数是和具体的操作系统相关的。

(3).bind (Redis3.2.0中bind默认是127.0.0.1)

# By default, if no "bind" configuration directive is specified, Redis listens
# for connections from all the network interfaces available on the server.
# It is possible to listen to just one or multiple selected interfaces using
# the "bind" configuration directive, followed by one or more IP addresses.
#
# Examples:
#
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1 ::1
#
# ~~~ WARNING ~~~ If the computer running Redis is directly exposed to the
# internet, binding to all the interfaces is dangerous and will expose the
# instance to everybody on the internet. So by default we uncomment the
# following bind directive, that will force Redis to listen only into
# the IPv4 lookback interface address (this means Redis will be able to
# accept connections only from clients running into the same computer it
# is running).
#
# IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES
# JUST COMMENT THE FOLLOWING LINE.
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bind 127.0.0.1

说明

bind在Redis3.2.0之前默认是0.0.0.0或者说””,为了保证不太了解Redis安全性的人,在Redis3.2.0中bind默认是127.0.0.1,也就是只有本机回环地址可以访问。如果需要配置sentinel、cluster或者需要机器机器可以访问该Redis实例请修改为0.0.0.0或者指定的内网IP.

(4).list-max-ziplist-size(默认-2)

# Lists are also encoded in a special way to save a lot of space.
# The number of entries allowed per internal list node can be specified
# as a fixed maximum size or a maximum number of elements.
# For a fixed maximum size, use -5 through -1, meaning:
# -5: max size: 64 Kb <-- not recommended for normal workloads
# -4: max size: 32 Kb <-- not recommended
# -3: max size: 16 Kb <-- probably not recommended
# -2: max size: 8 Kb <-- good
# -1: max size: 4 Kb <-- good
# Positive numbers mean store up to _exactly_ that number of elements
# per list node.
# The highest performing option is usually -2 (8 Kb size) or -1 (4 Kb size),
# but if your use case is unique, adjust the settings as necessary.

(5).list-compress-depth(默认是0)

# Lists may also be compressed.
# Compress depth is the number of quicklist ziplist nodes from *each* side of
# the list to *exclude* from compression. The head and tail of the list
# are always uncompressed for fast push/pop operations. Settings are:
# 0: disable all list compression
# 1: depth 1 means "don't start compressing until after 1 node into the list,
# going from either the head or tail"
# So: [head]->node->node->...->node->[tail]
# [head], [tail] will always be uncompressed; inner nodes will compress.
# 2: [head]->[next]->node->node->...->node->[prev]->[tail]
# 2 here means: don't compress head or head->next or tail->prev or tail,
# but compress all nodes between them.
# 3: [head]->[next]->[next]->node->node->...->node->[prev]->[prev]->[tail]
# etc.

说明

Redis3.2.0引入了新的quicklist的数据结构做了list的底层存储方案。废弃了原来的两个配置参数,list-max-ziplist-entries 和 list-max-ziplist-value

127.0.0.1:6388> config get list-max-ziplist-size
1) "list-max-ziplist-size"
2) "-2"
127.0.0.1:6388> config get list-compress-depth
1) "list-compress-depth"
2) "0"
127.0.0.1:6388> lpush user_list u1 u2 u5 u7 u99 u10 u3
(integer) 7
127.0.0.1:6388> object encoding user_list
"quicklist"

在Redis3.2.0中设置原来的参数已经不生效了,应该是无法使用了。

127.0.0.1:6388> config set list-max-ziplist-entries 512
(error) ERR Unsupported CONFIG parameter: list-max-ziplist-entries
127.0.0.1:6388> config set list-max-ziplist-value 64
(error) ERR Unsupported CONFIG parameter: list-max-ziplist-value

有关quicklist的详细使用还需要查询文档和源码来研究

三、 Redis3.0与3.2关于Cluster的一些变化 (来自3.2-release-notes)

原文:

写道

Redis Cluster changes:

All the Redis Cluster changes in 3.2 were backported to 3.0, so there is
technically nothing new for now in this release. The most important things
are:

* Cluster rebalancing.
* A pipelined MIGRATE command which is 10x faster and makes resharding
and rebalancing faster.
* Improved replicas migration.
* As a side effect of quicklists encoding (see above items), moving big
lists between nodes is now a lot faster.

Redis3.2.0的cluster完全兼容Redis3.0,也就是说可以混合部署组成集群,在Redis Cluster上Redis3.2.0没有做什么新的技术,但是也有一些比较重要的事情:

Redis Cluster均衡(应该是指redis-trib.rb中实现类将slot进行负载均衡的功能)

提供了一个基于流水线的migrate命令,用于水平迁移数据,速度是原来的10倍多。

提升了从几点迁移的功能。

在quicklist这种新的数据结构的帮助下,在节点之间迁移大的big list快了很多.

注意:上述特性均在Redis3.0.7有体现,如果对于Redis3.2.0不太放心的话,可以使用Redis3.0.7。

四、 Redis3.0与3.2关于Sentinel的一些变化 (来自3.2-release-notes)

原文:

Redis Sentinel changes:

* [NEW] Sentinel connection sharing. Makes Sentinels able to scale to
monitor many masters. (Salvatore Sanfilippo)
* [NEW] New SENTINEL INFO-CACHE command. (Matt Stancliff)
* More things backported to Redis 3.0 in the past, so no longer news of 3.2.

Sentinel connection sharing

不太了解,看着像是添加新的sentinel节点后,可以共享其他sentinel节点的master,对于sentinel监控多个master比较有用,这样扩展sentinel节点时候比较方便配置,有关这个后面会继续试验。

提供info-cache命令

Redis 3.0 与 3.2 配置文件变化的更多相关文章

  1. redis 3.0 集群__配置文件详解(常用配置)

    参考文档 http://www.cnblogs.com/huangjacky/p/3700473.html http://www.cnblogs.com/cxd4321/archive/2012/12 ...

  2. Linux下安装redis 3.0及C语言中客户端实现demo

    1.获取安装文件 wget http://download.redis.io/redis-stable.tar.gz 2.解压文件 tar xzvf redis-stable.tar.gz 3.进入目 ...

  3. Redis 7.0 新功能新特性总览

    说明:本文根据Redis 7 RC2 的release note 整理并翻译 近日,Redis 开源社区发布了7.0的两个预览版.在这两个预览版中,有很多Redis 7.0中新增加的特性,新增加的命令 ...

  4. Redis 3.0 Cluster集群配置

    Redis 3.0 Cluster集群配置 安装环境依赖 安装gcc:yum install gcc 安装zlib:yum install zib 安装ruby:yum install ruby 安装 ...

  5. Redis 3.0正式版发布,正式支持Redis集群

    Redis是一个开源.基于C语言.基于内存亦可持久化的高性能NoSQL数据库,同时,它还提供了多种语言的API.近日,Redis 3.0在经过6个RC版本后,其正式版终于发布了.Redis 3.0的最 ...

  6. Redis 3.0.0 集群部署

    简述: 1.0.1:redis cluster的现状 目前redis支持的cluster特性 1):节点自动发现 2):slave->master 选举,集群容错 3):Hot reshardi ...

  7. Redis 3.0 集群搭建

    Redis 3.0 集群搭建 开启两个虚拟机 分别在两个虚拟机上开启3个Redis实例 3主3从两个虚拟机里的实例互为主备 下面分别在两个虚拟机上安装,网络设置参照codis集群的前两个主机 分别关闭 ...

  8. Redis 3.0.2集群搭建以及相关问题汇总

    Redis3 正式支持了 cluster,是为了解决构建redis集群时的诸多不便 (1)像操作单个redis一样操作key,不用操心key在哪个节点上(2)在线动态添加.删除redis节点,不用停止 ...

  9. Redis 3.0集群 Window搭建方案

    Redis 3.0集群 Window搭建方案 1.集群安装前准备 安装Ruby环境,安装:rubyinstaller-2.3.0-x64.exe http://dl.bintray.com/onecl ...

随机推荐

  1. webapi frombody fromuri的参数绑定规则

    在WebAPI中,请求主体(HttpContent)只能被读取一次,不被缓存,只能向前读取的流. 举例子说明: 1. 请求地址:/?id=123&name=bob 服务端方法: void Ac ...

  2. 地图四叉树一般用在GIS中,在游戏寻路中2D游戏中一般用2维数组就够了

    地图四叉树一般用在GIS中,在游戏寻路中2D游戏中一般用2维数组就够了 四叉树对于区域查询,效率比较高. 原理图

  3. python2.7高级编程 笔记一(Python中的with语句与上下文管理器学习总结)

    0.关于上下文管理器上下文管理器是可以在with语句中使用,拥有__enter__和__exit__方法的对象. with manager as var: do_something(var) 相当于以 ...

  4. [LeetCode] Arithmetic Slices II - Subsequence 算数切片之二 - 子序列

    A sequence of numbers is called arithmetic if it consists of at least three elements and if the diff ...

  5. zabbix利用api批量添加item,并且批量配置添加graph

    关于zabbix的API见,zabbixAPI 1item批量添加 我是根据我这边的具体情况来做的,本来想在模板里面添加item,但是看了看API不支持,只是支持在host里面添加,所以我先在一个ho ...

  6. C#-WebForm-纯HTML提交方式

    此方法常用于 纯.html页面向数据库添加数据 在.aspx网页中可以通过传值的方式提交信息,如何在.html网页中提交数据? 提交数据需要在同一个 form 中,用到两个属性:action.meth ...

  7. 【USACO 3.2】Stringsobits (dp)

    题意:求第k大的最多有l个1的n位二进制. 题解:dp[i][j]表示长度为i最多有j个1的二进制有多少种,则有: 状态转移:dp[i][j]=dp[i-1][j]+dp[i-1][j-1],即第i位 ...

  8. Beta版本冲刺总汇

    DAY ONE: http://www.cnblogs.com/aruba/p/6149032.html posted @ 2016-12-09 12:37 DAY TWO: http://www.c ...

  9. Python为8bit深度图像应用color map

    图片中存在着色版的概念,二维矩阵的每个元素的值指定了一种颜色,因此可以显示出彩色. 迁移调色板 下述python代码将VOC数据集中的某个语义分割的图片的调色板直接应用在一个二维矩阵代表的图像上 #l ...

  10. redis并发问题

    redis中的并发问题 使用redis作为缓存已经很久了,redis是以单进程的形式运行的,命令是一个接着一个执行的,一直以为不会存在并发的问题,直到今天看到相关的资料,才恍然大悟~~ 具体问题实例 ...