Redis RU202课程 Redis Streams 第1周学习笔记

Overview of RU202

  • https://github.com/redislabs-training/ru202
  • https://redis.io/topics/streams-intro

Welcome to RU202

此课程的前提是RU101。

申请一个免费的云端Redis,即Redis Cloud Essentials,参见这里

Redis Cloud Essentials适用于开发环境或低吞吐量应用,其特点为:

  • 30MB 存储,无需信用卡
  • 关键企业级特性
  • 新功能: RediSearch 2, RedisGraph, RedisJSON, RedisBloom, and RedisTimeSeries modules are now available for free
  • 开发工具,包括RedisInsight GUI

邮件注册,并在邮件中激活。然后需要在AWS,Azure和GCS中选择一个,然后选择region,最后选择free tier,输入一个subscribtion name即可完成。

选择了AWS新加坡数据中心。
Endpoint:redis-11496.c1.ap-southeast-1-1.ec2.cloud.redislabs.com:11496
Default User Password = WnSW5OD*******
在这里插入图片描述

然后就可以连接了:

$ redis-cli -h redis-11496.c1.ap-southeast-1-1.ec2.cloud.redislabs.com -p 11496 -a <password>
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
redis-11496.c1.ap-southeast-1-1.ec2.cloud.redislabs.com:11496> info
# Server
redis_version:6.0.5
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:0000000000000000000000000000000000000000
redis_mode:standalone
os:Linux 4.4.0-1066-aws x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:5.4.0 20160609
process_id:10153476
run_id:9c1080511e10afa2e050fd3c1c71cdf590511a32
tcp_port:11496
uptime_in_seconds:13371
uptime_in_days:0
hz:10
lru_clock:0
config_file:

# Clients
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0

# Memory
used_memory:1955984
used_memory_human:1.86M
used_memory_rss:1955984
used_memory_peak:2832672
used_memory_peak_human:2.70M
used_memory_lua:37888
mem_fragmentation_ratio:1
mem_allocator:jemalloc-5.1.0

# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1611279033
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:0
rdb_current_bgsave_time_sec:-1
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok

# Stats
total_connections_received:2
total_commands_processed:4
instantaneous_ops_per_sec:2
total_net_input_bytes:2005444
total_net_output_bytes:13739716
instantaneous_input_kbps:0.16
instantaneous_output_kbps:1.90
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
evicted_keys:0
keyspace_hits:0
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:0
migrate_cached_sockets:0

# Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

# CPU
used_cpu_sys:0.00
used_cpu_user:0.00
used_cpu_sys_children:0.00
used_cpu_user_children:0.00

# Cluster
cluster_enabled:0

# Keyspace
redis-11496.c1.ap-southeast-1-1.ec2.cloud.redislabs.com:11496>

Introduction to Distributed Systems

REDIS即REmote DIctionary Server

Redis是分布式系统中的一个组件,C/S结构也是分布式系统。

Leslie B. Lamport,分布式系统专家。

A distributed system is one in which the failure of a computer you didn’t even know existed can render your own computer unusable

分布式系统不仅包括组件,还包括组件之间的通信,如消息,类似于Kafka。

  • 组件越多,错误几率越大。
  • 有状态的组件更可靠,如数据库,存储
  • 容器和虚机使得错误组件易于替换

Stream Processing

什么是流式处理:

  • 实时操作数据
  • 处理持续的数据(stream)
  • 例如温度监测,降到0度以下报警

例如apache storm 和 kafka都是流式处理系统。

流式处理的好处:

  • 处理最近数据
  • 实时洞察
  • 平缓数据接入

流式处理场景:

  • 时序数据
  • 连续数据流
  • 数据太大,无法置入内存
  • 流式数据的聚合与汇总

1.4 Stream Pipelines

data source - data stream - data processing - data sink

Introduction to Redis Streams

Redis Streams Overview

redis stream的特点:

  • 是一种新数据结构,2018年,5.0版本引入。类似于hash数据类型(因为可以有多个subkey)
  • 类似于尾部追加的list,也就是有序的,并且顺序不可改变
  • list中的每一个entry都有哈希值
  • entry有唯一ID,格式为timestamp加序列号
  • 支持基于ID的范围查询
  • 支持consumer group,即多个消费者组成的group,共同消费stream,但不能重复消费。

Comparison to Standard Redis Data Structures

3个维度:

  1. Blocking还是Non-Blocking: 从stream读取数据时,可选择阻塞或非阻塞
  2. Mutability还是immutability:后者,不可改变,只能从尾部添加元素,元素本身也不可改变。但是你可以删除列表中的元素
  3. Storage和Delivery: 存储当然是在内存中。Delivery可以看下和Pub/Sub的对比,客户端在重新连到stream时,可以接受到以前的信息,而pub/sub不可以。

Redis Streams Example in Python

每次运行前需激活虚拟环境:

cd ru202
python3 -m venv env
. env/bin/activate
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 撸撸猫 设计师:C马雯娟 返回首页