Redis5.0的新功能和新数据类型Streams的概述

由于Redis5.0的GA版本即将发布,我想简要总结一下Redis5的新功能。

重要的增加/修改

从发布说明中摘录的内容。

1. The new Stream data type. https://redis.io/topics/streams-intro
2. New Redis modules APIs: Timers and Cluster API.
3. RDB now store LFU and LRU information.
4. The cluster manager was ported from Ruby (redis-trib.rb) to C code
   inside redis-cli. Check `redis-cli --cluster help` for more info.
5. New sorted set commands: ZPOPMIN/MAX and blocking variants.
6. Active defragmentation version 2.
7. Improvemenets in HyperLogLog implementations.
8. Better memory reporting capabilities.
9. Many commands with sub-commands now have an HELP subcommand.
10. Better performances when clients connect and disconnect often.
11. Many bug fixes and other random improvements.
12. Jemalloc was upgraded to version 5.1

对命令产生影响的变更

添加Stream数据类型

可以处理日志(时间序列数据)的数据类型,并且还可以像消息队列一样使用。关于如何将其用作消息队列的区别,将在另外说明。

向Sorted Set类型的ZPOPMIN/MAX添加功能

Sorted Setをスコア順に並べた時の、先頭と末尾からデータをポップ(取得して削除)できます。
ブロッキング版のBZPOPMIN/MAXも追加されているので、キューのような使い方も可能になります。

向具有子命令的命令中添加HELP子命令。

这个标题不变,但可以通过HELP子命令查看帮助文本。
例如:OBJECT HELP。

其他的更改

剩下的大部分是关于CPU/内存效率的改进。

据Redis作者Antierz的推特所述,Redis模块API添加了Cluster和Timers API,其中的Cluster并非指的是传统意义上的Redis Cluster,而是一种利用Redis实现分布式处理的机制。这两个API都是作者为了开发基于Redis技术的分布式消息队列系统Disque而添加的。

流动

これはログ(時系列データ)を扱うためのデータ型です。基本的に追記のみ可能なデータ型で、各データはタイムスタンプとハッシュのような連想配列データのペアになります。
StreamはPub/SubやListのBRPOPなどのようにリアルタイムに読み取りでき、Consumer Groupsという機能を使うことで、特定のグループ内で一度しかデータを読まないようにするといったことが可能になります。Consumer Groupsにおいては、データに処理済みをマークすることができ、メッセージキューとしての利用も意識した作りになっています。

在使用BRPOP或类似方式将List作为队列使用时的区别。

    • 読み出してもデータが消えることはない

 

    複数のインスタンスから同じ内容を読み出すことができる

Pub/Sub的差异是什么?

    • データ追加時に読み取り元が待機している必要がない

 

    読み取り元が複数いる場合に、一つの読み取り元だけに読み取りをさせることができる(Consumer Groups機能)

更加注重用作为消息队列来使用的实现。

Consumer Groups機能ではグループ内の1つのConsumer(読み取り元)にだけデータを読み取らせることができます。また、読み取ったデータが滞留中データとして保持されます。XACKというコマンドで処理済みにすることで、滞留中データから削除されます。
これらの仕組みによって、ListやPub/Subと比べてメッセージキューとしてより安全に便利に使えるようになります。

请参考以下内容。

    • https://github.com/antirez/redis/blob/5.0/00-RELEASENOTES

 

    https://redis.io/topics/streams-intro
bannerAds