五分钟了解Redis4.0新特性

2016-12-09 11:05:05

看到redis版本变成4.0,好多同学可能会有疑惑,咋的从3.x直接就跳到4.0了么,这里引用antirez大神的博客来说明原因:
Redis 4.0 is not called 3.4 because it is a major release that adds a number
of important and non trivial features. Many core functionalities of Redis were
seriously reworked.

这段话大意是说,新版本的 Redis 出现了多项改变, 所以他决定从原来的 3.x 版本直接跳到 4.0 版本, 以此来强调这次更新的变化之大

闲言少续,我们来看看到底有哪些变化呢

  • Redis modules system
    Redis允许开发者开发modules去扩展Redis功能,这样开发者可以使用新的数据类型,Module api 与Redis内核完全分离,互不干扰
  • Partial Replication (PSYNC) version 2
    Redis解决了旧版本从服务器重启,必须与主服务器重新进行全量复制,在新版中,只要条件允许,主从在处理这种情况时将使用部分复制
    Redis解决了从服务器在failover后成为新的主节点,在旧版中其他从节点在复制这个新主的时候就必须进行全量复制,新版中将在条件允许的情况下使用部分复制
  • Cache eviction improvements
    添加了Last Frequently Used 缓存驱逐策略,对已有的缓存策略进行了优化。
  • Lazy freeing of keys
    在旧版中,使用del、flushdb、flushall删除包含体积较大的键,都可能造成服务器阻塞
    新版中,增加ulink命令,是del命令的异步版本,将删除制动键的曹组放在后台线程执行,尽可能避免服务器阻塞
    由于历史原因,del将会继续保留,flushdb和flushall命令都新添加了async选项,带这个选项的数据库删除都将在后台线程进行

  • Mixed RDB-AOF format
    在开启了这个功能之后, AOF 重写产生的文件将同时包含 RDB 格式的内容和 AOF 格式的内容, 其中 RDB 格式的内容用于记录已有的数据, 而 AOF 格式的内存则用于记录最近发生了变化的数据, 这样 Redis 就可以同时兼有 RDB 持久化和 AOF 持久化的优点 —— 既能够快速地生成重写文件, 也能够在出现问题时, 快速地载入数据

  • A new MEMORY command
    命令可以用于视察内存使用情况, 并进行相应的内存管理操作
    redis> MEMORY HELP
    1) “MEMORY USAGE [SAMPLES ] - Estimate memory usage of key”
    2) “MEMORY STATS - Show memory usage details”
    3) “MEMORY PURGE - Ask the allocator to release memory”
    4) “MEMORY MALLOC-STATS - Show allocator internal stats”
    redis> SET msg “hello world”
    OK
    redis> SADD fruits apple banana cherry
    (integer) 3
    redis> MEMORY USAGE msg
    (integer) 62
    redis> MEMORY USAGE fruits
    (integer) 375

  • Redis Cluster support for NAT / Docker. There are new functionalities in order to force cluster instances to announce specific sets of IP address, client and bus ports, to the rest of the cluster, regardless of the auto detected IP. This required a bus protocol change that will force users to mass-restart all the nodes of a Redis 3.2 installation in order to upgrade to 4.0

  • Redis uses now less memory in order to store the same amount of data

这里基本都是比较大的特性了,还有些小惊喜等着你哦

  • Improvements to the RDB format to support 64 bit lengths, binary sorted set scores, and more.The RDB file check utility now uses the same code base of the one used by Redis itself in order to load the RDB file in memory.

  • SWAPDB command: ability to completely and immediately (no latency) replace two Redis databases.
    可以对指定的两个数据库进行互换: 比如说, 通过执行命令 SWAPDB 0 1 , 我们可以将原来的数据库 0 变成数据库 1 , 而原来的数据库 1 则变成数据库 0

  • Improvements to dict.c, the Redis hash table implementation.

  • Security improvements mapping POST and Host: commands to QUIT in order to prevent cross protocol scripting attacks.

  • RPUSHX and LPUSHX now accept a variable number of elements.

  • Reporting of additional memory used by copy on write in the INFO output.

  • Serious refactoring of many core parts of Redis.

ref

Redis 4.0 release notes


您的鼓励是我写作最大的动力

俗话说,投资效率是最好的投资。 如果您感觉我的文章质量不错,读后收获很大,预计能为您提高 10% 的工作效率,不妨小额捐助我一下,让我有动力继续写出更多好文章。