写在前面:我读了很多信息,只能找到Redis2.2及以后主要版本的发布日志。让我们一步一步看看2.2中的Redis。
2.2
redis-cli命令是一个非常大的改进。选项卡完成,支持帮助(例如帮助SET,帮助BITCOUNT),本机输出,并使用最新的hiredis C库重写它。
写时复制机制对许多读命令更友好,这意味着如果执行大多数读操作,那么派生的子进程将需要非常少的内存。
新命令WATCH实现CAS事务。
可以写入具有EXPIRE invalidation属性的KEY。
新的SETBIT,GETBIT,SETRANGE,GETRANGE,STRLEN命令,操作字符串就像一个数组,我们可以执行位操作。
支持syslog(在配置文件中指定:syslog-enabled yes)。
List有很多新命令:LINSERT,LPUSHX,RPUSHX,BRPOPLPUSH。
更强大的INFO命令。
在启动时加载RDB或AOF是非阻塞的,并且INFO输出中有进度信息。
Hiredis:一个功能强大的C语言Redis客户端库。
在配置文件中支持重命名命令KEYS afeikeys以禁用(rename-command KEYS'')命令。
系统日志说明:
在Linux世界中,有两种写日志的方法:
1.只需将日志写入文件,随着时间的推移,我们将编写一个新文件。这种方法的问题在于,如果有很多服务生成大量日志,那么它就更麻烦了。
2.使用syslog服务记录在几乎所有可用的Unix和Linux服务器的TCP和UDP端口514上运行名为syslog的服务。 syslog接受发送给它的任何日志消息,并将它们路由到各种消息。在处理旧日志的滚动和删除时记录磁盘上的文件。通过配置,它甚至可以将消息转发到其他服务器以进行进一步处理。它比直接记录到文件更方便,因为滚动和删除所有特殊日志文件对我们有所帮助。2.4
Redis 2.4没有大书的特征,其中大部分都是错误修复或功能增强。这个版本的新功能一目了然:
VM已弃用,也会支持但会发出警报,不建议使用。
添加了CLIENT命令,支持KILL,LIST等操作,以便您可以观察到CLIENT的一些信息;
添加了OBJECT命令来观察对象的一些内在信息,例如对象的编码;
直接使用CONFIG SET关闭密码授权,无需重新启动Redis服务;
如果未设置密码且密码通过AUTH发送以进行身份验证,则返回ERROR。
Redis-cli已实施--latency模式来监控采样的Redis延迟。
当fsync刷新策略是everysec时,AOF fsync在后台执行。
SADD,HDEL,SREM,ZREM,ZADD,L/RPUSH命令增强,支持可变参数(旧版本仅支持一个参数)。
2.6
Redis 2.6的新功能如下:
服务端的Lua脚本支持通过EVAL执行,例如:eval'return redis.call('set','foo','bar')'0。
到期时间支持毫秒级精度,并添加相应的毫秒级故障命令:PEXPIRE,PSETEX和PTTL。
支持只读Slave。
支持位操作命令:BITCOUNT和BITOP,还有许多其他新命令,例如:DUMP,RESTORE,MIGRATE等。
CRC64校验和添加到RDB文件中。
SHUTDOWN支持两种选择:SAVE和NOSAVE。
INFO命令输出按段拆分。
看门狗功能可以找到延迟问题。您只需执行config set watchdog-period 100即可启用该功能。如果值为0,则关闭该功能。应该注意,配置文件中无法启用此功能。
集成内存测试模式,参考执行:redis-server --test-memory 1024。
可以通过redis-server命令行选项指定redis.conf中的所有配置。
哈希表的种子随机化以防止冲突攻击。
从函数中删除虚拟内存(已弃用2.4)。
删除客户端连接数的硬编码限制。看门狗可以参考:https://redis.io/topics/latency,作者还会另外写一篇文章进行进一步分析。
2.8
虽然Redis2.8没有非常重的新功能,但它非常稳定。除了缺乏分布式功能外,我不能选择太多麻烦。 Sentinel可以保证高可用性。我过去经历过一个项目,使用Redis2.8.23版本,独立模式,10G +数据量,实际运行约500天。
即使是现在,如果您的项目不需要几十个G缓存,我仍然认为Redis2.8.x是一个不错的选择,结合Sentinel模式以确保高可用性,并且与Redis3.x分布式集群模式相比它更简单架构,不需要妥协任何功能和命令。 (在Redis群集模式下,许多命令被阉割或限制。当然,更高版本的Redis3.x也只能使用sentinel,没有redis群集架构)。
好的,我们来看看2.8新功能:
从机支持主机部分的同步,避免了主从断开一段时间后(例如网络抖动)通过RDB完全同步的需要。
支持IPv6。
支持config set maxclients 1024。
支持绑定多个IP地址。
CONFIG REWRITE可以通过redis.conf配置文件中的CONFIG SET输出配置。
添加了PUBSUB命令,以实现Pub/Sub的内省能力。
密钥空间的变化通知由Pub/Sub实现,例如,实现过期KEY的通知功能。
如果在最大延迟下没有足够的从站,则主站可以停止写入请求。配置参考如下:
#例如,如果至少有3个从站延迟小于10秒,则主站将正常写入:
#min-slaves-to-write 3
#min-slaves-max-lag 10