收藏此站 联系我们 宿迁腾云网络公司
全部 网站建设 SEO优化 技术日志
当前位置:网站首页 > 网站建设

新版redis特性以及Stream流数据类型使用的简单教程

作者: 腾云网络 . 阅读量: . 发表时间:2019-05-01

事实上Redis的数据类型一直都是二进制安全的,几乎每一种数据类型都是可以用来存储流的。那为什么Redis 5.0要引用Stream数据类型呢? 具体如何使用?

Stream是什么

在一般的编程概念里,流是一种主要用于优化内存的数据类型,它不需要一次性把大量数据,比如说大文件一次性读取到内存再处理,可以边读取边处理,这样可以用少量内存就可以处理大文件。

因此简单地说,流是Redis一种新的数据结构,不需要读取原有key的值,就可以在此key中添加新内容的数据类型。

Stream添加

Stream可以用更抽象的方式来记录数据,比如说日志。

Stream类型存储的不是一个字符串,而是多个键值对,比如:

XADD mystream * sensor-id 1234 temperature 19.8
> 1518951480106-0

代表往mystream添加新的数据 { "sensor-id": 1234, "temperature": 19.8 }, *代表服务器端生成一个新的EntryID

1518951480106-0 是代表这组数据的EntryID值,可以理解为日志中的行号。1518951480106是当前时间的毫秒值,0代表这一时侯的第几个数据。可以用XLEN查看总数据个数。

> XLEN mystream
(integer) 1

也可以自己指定EntryID的值,如:

> XADD somestream 0-1 field value
0-1
> XADD somestream 0-2 foo bar
0-2

流是只增不减的,所以如果entryid值比之前的小,则会报错:

> XADD somestream 0-1 foo bar
(error) ERR The ID specified in XADD is equal or smaller than the target stream top item

Stream查询

可以用 XRANGE/XREVRANGE 来查找,- + 代表查找所有的。

> XRANGE mystream - +
1) 1) 1518951480106-0
   2) 1) "sensor-id"
      2) "1234"
      3) "temperature"
      4) "19.8"
2) 1) 1518951482479-0
   2) 1) "sensor-id"
      2) "9999"
      3) "temperature"
      4) "18.2"

可以指定EntryID的值范围,可以理解为取某个时间段的日志内容

> XRANGE mystream 1518951480106 1518951480107
1) 1) 1518951480106-0
   2) 1) "sensor-id"
      2) "1234"
      3) "temperature"
      4) "19.8"

可以只取前两个

> XRANGE mystream - + COUNT 2
1) 1) 1519073278252-0
   2) 1) "foo"
      2) "value_1"
2) 1) 1519073279157-0
   2) 1) "foo"
      2) "value_2"

Redis流介绍 https://redis.io/topics/streams-intro

Redis 5.0的主要改进:

1.新的Stream数据类型。 

2.新的Redis模块API:Timers and Cluster API。

3.RDB 现在可存储 LFU 和 LRU 信息

4.集群管理器从Ruby(redis-trib.rb)迁移到C。`redis-cli —cluster help`了解更多。

5.新sorted set命令:ZPOPMIN / MAX 和 (blocking variants)

6.升级 Active defragmentation V2。

7.增强HyperLogLog实现。

8.更好的内存统计报告。

9.许多带有子命令的命令现在都有一个HELP子命令。

10.改进客户端经常连接断开时的性能

11.错误修复和改进。

12. 升级Jemalloc到5.1版

13. 引入 CLIENT UNBLOCK 和 CLIENT ID

14. 新增 LOLWUT 命令 http://antirez.com/news/123

15. 在不存在需要保持向后兼容性的地方,弃用 "slave" 术语

16. 网络层优化

17. Lua 相关的改进

18. 引入 Dynamic HZ 平衡CPU空闲时的使用率和响应性

19. 重构了Redis 核心代码,并进行多方面改进

详情: https://raw.githubusercontent.com/antirez/redis/5.0/00-RELEASENOTES



标签:
转载请注明来源:https://www.tyweb.net/news/171.html
现在咨询免费送诊断方案,每天限3名
马上填写资料获取方案
腾云网络产品
网站建设 微信小程序 微商城 APP开发 SEO优化
腾云网络服务
7x24小时售后支持 市内上门服务 免费后台培训 定期回访
关于腾云网络
关于我们
网站建设案例 小程序案例 APP开发案例
联系腾云网络
联系腾云网络
紧急问题处理电话
131-6035-5545 131-6035-5545
131-6035-5545
扫一扫关注腾云网络公众号