OurJS


OurJS-我们的JS, 我们的技术-IT文摘; 专注JS相关领域;
我们热爱编程, 我们热爱技术;我们是高大上, 有品味的码农;

欢迎您订阅我们的技术周刊


我们会向您分享我们精心收集整理的,最新的行业资讯,技术动态,外文翻译,热点文章;
我们使用第三方邮件列表向您推送,我们不保存您的任何个人资料,注重您的隐私,您可以随时退订,

欢迎分享您的观点,经验,技巧,心得

让我们一起找寻程序员的快乐,探索技术, 发现IT人生的乐趣;


本网站使用缓存技术每次加载仅需很小流量, 可在手机中流畅浏览;
如果您发现任何BUG,请即时告知我们: ourjs(at)ourjs.com

redis5.x新特性,Stream流数据类型使用简单教程


分享到


分类 心得体会   关键字 分享   发布 ourjs  1540302471095
注意 转载须保留原文链接,译文链接,作者译者等信息。  
事实上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


社区评论 ( Beta版 )
OnceDoc 您自己的企业内容管理系统——文档、流程、知识库、报表、网盘All In One

访问404页面,寻找丢失儿童
 热门文章 - 分享最多
  1. JavaScript运算出现很多小数导致运算不精确的问题,用toFixed解决
  2. Redis/Python被要求更改Master/Slave程序接口名称和描述
  3. 用JavaScript测试图像上两点之间的距离
  4. 用纯CSS改变html radio/checkbox默认背景颜色样式
  5. 用JavaScript实现basename获取路径中的文件名
  6. css去掉table的td单元格的间距cellspacing,设置隔行显示不同背景颜色
  7. 用 OnceAir 搭建个人Git/Svn/照片备份服务器,每年电费7块钱

 相关阅读 - 心得体会
  1. Debian/Ubuntu Linux搭建SVN服务器,并设置开机默认启动
  2. 怎样将Android手机中的照片和视频,通过APP自动同步备份到OnceAir云盘的共享目录中
  3. OnceAir自动考勤系统,无需手机签到打卡,轻松管理记录员工出勤信息
  4. 如何为OnceAir顽石个人私有云盘设置固定公网访问地址
  5. redis、memcache和mongodb各自的优缺点是什么,怎么选择呢?
  6. 命令行的艺术:linux bash命令大全详解
  7. 开源项目 RethinkDB 关闭,创始人总结失败教训
  8. JavaScript中该如何安排后台任务
  9. Markdown 语法简介和使用说明-详细版
  10. JavaScript正在变成Web界的C++

 关键字 - 分享
  1. Node初学者入门,一本全面的NodeJS教程
  2. IE、Chrome、Firefox浏览器默认首页被改成360导航解决办法(删除daohang88.com)跳转
  3. C语言用指针模拟按引用传递int整型参数
  4. Redis只往zset有序集合添加不存在的数据:关键字索引查询构建+源码分析
  5. redis5.x新特性,Stream流数据类型使用简单教程
  6. 一位自由职业者的分享:程序员怎样找兼职?
  7. 对于现代开发来说,JavaScript就是一种垃圾语言
  8. 我为什么不再用Compass写CSS(缺点分析)
  9. Redis/Python被要求更改Master/Slave程序接口名称和描述
  10. 程序员疑似将MySQL用户名密码上传至Github,导致华柱1.3亿条开房数据泄漏

 欢迎订阅 - 技术周刊

我们热爱编程, 我们热爱技术; 我们是高端, 大气, 上档次, 有品味, 时刻需要和国际接轨的码农; 欢迎您订阅我们的技术周刊; 您只需要在右上角输入您的邮箱即可; 我们注重您的隐私,您可以随时退订.
加入我们吧! 让我们一起找寻码农的快乐,探索技术, 发现IT人生的乐趣;


 关注我们

我们的微信公众号: ourjs-com
打开微信扫一扫即可关注我们:
IT文摘-程序员(码农)技术周刊

ourjs官方微信号