【redis-2.6.12】 ChangeDetail
2013-04-03 00:00
99 查看
Redis 2.6.12
UPGRADE URGENCY: MODERATE, nothing very critical but a few non trivial bugs.
[BUGFIX] redis-cli --bigkeys: don't crash with empty DB.
[BUGFIX] stop-writes-on-bgsave-error now works in redis.conf
[BUGFIX] Don't crash at startup if RDB is there but can't be opened.
[BUGFIX] Initial value for master_link_down_since_seconds is now huge.
[BUGFIX] Allow SELECT while loading the DB.
[BUGFIX] Don't replicate/AOF an empty MULTI/EXEC if the transaction is empty or containing just read-only commands.
[BUGFIX] EXPIRE should not be able to resurrect keys (see issue #1026).
[IMPROVED] Extended SET back ported from Redis 2.8 / unstable
[IMPROVED] Test suite improved.
[BUGFIX] redis-cli --bigkeys: don't crash with empty DB.
对应 commit :
f93d9929d8bc2d97345070c9caa9509c0481496e
说明 :
修复了对空的数据库执行redis-cli --bigkeys因为数据库为空,返回nil由于指针问题会导致SIGSEGV。
所谓bigkeys就是在redis中找到value占用内存最大的key
redis使用RANDOMKEY指令,进行随机采样,暴力的地找出近似最大的key
[BUGFIX] stop-writes-on-bgsave-error now works in redis.conf
对应 commit :
18d16f8592500d54831dde07727a68fcfd243442
说明 :
之前_stop-writes-on-bgsave-error_ 配置不起作用,
因为读配置的函数loadServerConfig在initServer之前。
而initServer里直接给**stop-writes-on-bgsave-error赋值1,所以直接覆盖掉了。
从选项的字面意思大致可以看出作用。bgsave主要由serverCron(_save_配置)或用户指令BGSAVE触发,
执行rdbSaveBackground函数,通过fork子进程来生成内存快照,有CoW技术保证数据一致。
然后serverCron不断等待子进程退出,如果子进程退出码非零,则表示出错。
通常由于磁盘只读引起。Redis在backgroundSaveDoneHandler把lastbgsave_status设成REDIS_ERR**,
此时,如果执行写操作的命令,并且设置了该配置就会直接返回具体的出错信息,"blabla disk blabla error ..."
[BUGFIX] Don't crash at startup if RDB is there but can't be opened.
对应 commit :
b9f8c2a5b0e4a0217ff9c181e61595c89d1ba1f7
说明 :
这儿应该是作者表述有误, 在2.6.11里,只要fopen rdb文件失败都标记为ENOENT
这样当文件存在,但是不可以打开时会直接跳过(没任何日志)。
新版本出现这种问题会直接exit(1)
所以这个BUGFIX的说明有点点问题 :)
[BUGFIX] Initial value for master_link_down_since_seconds is now huge.
对应 commit :
4f8b18f3dd8a4a7feaa8b8d4c41d894b75f73405
说明 : 略... 主要是为了INFO显示时,可以更准确,并不是显示redis启动时间。
[BUGFIX] Allow SELECT while loading the DB.
对应 commit :
68189054067d54bf0c1f697244ff5b6b8842635c
说明 :
类似我上一篇写
3ff0
的[BUGFIX] Allow AUTH while loading the DB in memory.
这里我复制一下过来:
这儿增加了 'l' 标志,在redis中表示REDIS_CMD_LOADING,
直观地说,就是允许redis仍在loading阶段(初始化、读rdb等等)就可以接收指令,
详见populateCommandTable和processCommand两个函数。
同样为'l'标志的有sub/pub相关的cmd和info。
[BUGFIX] Don't replicate/AOF an empty MULTI/EXEC if the transaction is empty or containing just read-only commands.
对应 commit :
611dcb56ee6a07066dd491ffbae102f0498acdcc
说明 :
在execCommand里对批量执行的多个指令进行过滤,跳过REDIS_CMD_READONLY(只读)的指令
[BUGFIX] EXPIRE should not be able to resurrect keys (see issue #1026).
对应 commit :
140260409eef36dd4d155e488eb9531cf119728e
说明 :
默认redis会在serverCron调activeExpireCycle来清理过期的key,但是每次只对每个db最多处理10个。
所以,如果expires dict比较多来不及清理,在后面调用EXPIRE的expireGenericCommand函数时,
因为原来使用dictFind不会检查expires dict,这样相当于原来本应该删除的key复活了...
而lookupKeyRead函数会调expireIfNeeded来避免这种情况
[IMPROVED] Extended SET back ported from Redis 2.8 / unstable
对应 commit :
d785413d868e5817a2bfb5994e3833d6f6ced9c6
说明 :
新特性,详见:http://www.redis.io/commands/set
给SET指令丰富了选项,可以设超时、存在覆盖、非存在写入等。
感觉以后可以把那些SETEX, SEXTNX等等指令归一了。
[IMPROVED] Test suite improved.
对应 commit : 略
说明 : 一堆tcl测试脚本,针对本次bugfix和新特性
UPGRADE URGENCY: MODERATE, nothing very critical but a few non trivial bugs.
[BUGFIX] redis-cli --bigkeys: don't crash with empty DB.
[BUGFIX] stop-writes-on-bgsave-error now works in redis.conf
[BUGFIX] Don't crash at startup if RDB is there but can't be opened.
[BUGFIX] Initial value for master_link_down_since_seconds is now huge.
[BUGFIX] Allow SELECT while loading the DB.
[BUGFIX] Don't replicate/AOF an empty MULTI/EXEC if the transaction is empty or containing just read-only commands.
[BUGFIX] EXPIRE should not be able to resurrect keys (see issue #1026).
[IMPROVED] Extended SET back ported from Redis 2.8 / unstable
[IMPROVED] Test suite improved.
[BUGFIX] redis-cli --bigkeys: don't crash with empty DB.
对应 commit :
f93d9929d8bc2d97345070c9caa9509c0481496e
说明 :
修复了对空的数据库执行redis-cli --bigkeys因为数据库为空,返回nil由于指针问题会导致SIGSEGV。
所谓bigkeys就是在redis中找到value占用内存最大的key
redis使用RANDOMKEY指令,进行随机采样,暴力的地找出近似最大的key
[BUGFIX] stop-writes-on-bgsave-error now works in redis.conf
对应 commit :
18d16f8592500d54831dde07727a68fcfd243442
说明 :
之前_stop-writes-on-bgsave-error_ 配置不起作用,
因为读配置的函数loadServerConfig在initServer之前。
而initServer里直接给**stop-writes-on-bgsave-error赋值1,所以直接覆盖掉了。
从选项的字面意思大致可以看出作用。bgsave主要由serverCron(_save_配置)或用户指令BGSAVE触发,
执行rdbSaveBackground函数,通过fork子进程来生成内存快照,有CoW技术保证数据一致。
然后serverCron不断等待子进程退出,如果子进程退出码非零,则表示出错。
通常由于磁盘只读引起。Redis在backgroundSaveDoneHandler把lastbgsave_status设成REDIS_ERR**,
此时,如果执行写操作的命令,并且设置了该配置就会直接返回具体的出错信息,"blabla disk blabla error ..."
[BUGFIX] Don't crash at startup if RDB is there but can't be opened.
对应 commit :
b9f8c2a5b0e4a0217ff9c181e61595c89d1ba1f7
说明 :
这儿应该是作者表述有误, 在2.6.11里,只要fopen rdb文件失败都标记为ENOENT
这样当文件存在,但是不可以打开时会直接跳过(没任何日志)。
新版本出现这种问题会直接exit(1)
所以这个BUGFIX的说明有点点问题 :)
[BUGFIX] Initial value for master_link_down_since_seconds is now huge.
对应 commit :
4f8b18f3dd8a4a7feaa8b8d4c41d894b75f73405
说明 : 略... 主要是为了INFO显示时,可以更准确,并不是显示redis启动时间。
[BUGFIX] Allow SELECT while loading the DB.
对应 commit :
68189054067d54bf0c1f697244ff5b6b8842635c
说明 :
类似我上一篇写
3ff0
的[BUGFIX] Allow AUTH while loading the DB in memory.
这里我复制一下过来:
这儿增加了 'l' 标志,在redis中表示REDIS_CMD_LOADING,
直观地说,就是允许redis仍在loading阶段(初始化、读rdb等等)就可以接收指令,
详见populateCommandTable和processCommand两个函数。
同样为'l'标志的有sub/pub相关的cmd和info。
[BUGFIX] Don't replicate/AOF an empty MULTI/EXEC if the transaction is empty or containing just read-only commands.
对应 commit :
611dcb56ee6a07066dd491ffbae102f0498acdcc
说明 :
在execCommand里对批量执行的多个指令进行过滤,跳过REDIS_CMD_READONLY(只读)的指令
[BUGFIX] EXPIRE should not be able to resurrect keys (see issue #1026).
对应 commit :
140260409eef36dd4d155e488eb9531cf119728e
说明 :
默认redis会在serverCron调activeExpireCycle来清理过期的key,但是每次只对每个db最多处理10个。
所以,如果expires dict比较多来不及清理,在后面调用EXPIRE的expireGenericCommand函数时,
因为原来使用dictFind不会检查expires dict,这样相当于原来本应该删除的key复活了...
而lookupKeyRead函数会调expireIfNeeded来避免这种情况
[IMPROVED] Extended SET back ported from Redis 2.8 / unstable
对应 commit :
d785413d868e5817a2bfb5994e3833d6f6ced9c6
说明 :
新特性,详见:http://www.redis.io/commands/set
给SET指令丰富了选项,可以设超时、存在覆盖、非存在写入等。
感觉以后可以把那些SETEX, SEXTNX等等指令归一了。
[IMPROVED] Test suite improved.
对应 commit : 略
说明 : 一堆tcl测试脚本,针对本次bugfix和新特性
相关文章推荐
- Windows下Redis2.6.12的使用
- 困擾了我一個星期的問題--detailview的手寫代碼實現修改,踫到detailview.ModeChang()---狀態變化出現的問題的思考--itemcommand編輯命令執行之前必須先ModeChange(Edit)
- 浅谈js中onchange、onkeydown、onpropertychange、onkeyup以及onblur的区别!
- Ubuntu: How to Change the Computer Name
- Redis Admin UI——一个Redis UI管理界面
- 在windows上部署使用Redis
- Redis教程(十一):虚拟内存介绍
- Redis的Java客户端Jedis的八种调用方式(事务、管道、分布式…)介绍
- Redis入门
- Kafka+Spark Streaming+Redis实时计算整合实践
- 了解Redis 和 Memcached 的区别
- 使用redis和zookeeper实现分布式锁
- Redis Cluster 添加/删除 完整折腾步骤
- redis常用语法总结-入门篇
- Java并发 利用多写Redis实现分布式锁原理
- 用redis实现跨服务器session
- DevExpress XtraReports 入门三 创建 Master-Detail(主/从) 报表
- tp的redis驱动
- Java Spring 与 Redis 操作封装源码
- redis 分布式,主从同步