我的知识海洋

What are you following

  • 首页
  • 标签
  • 分类目录
  • 文章归档
  • 行路万里
  • 读书万卷
  • About Me

  • 搜索
面经 解决方案 操作系统 Java源码 开源 GSoC 哲学 中间件 回溯 链表 书 top 数据库 分布式 滑动窗口 配置 动态规划 前缀树 并查集 Redis 总结 年终总结 面试 算法基础

Redis[5-2] Stream、常用指令

发表于 2021-11-13 | 分类于 学习 | 阅读次数 690
# Redis
Redis[5-1] Redis 原理
Redis[6] 主从复制+读写分离

Redis--扩展

Redis5.0---Stream

Redis Stream----它是一个新的强大的支持多播的可持久化消息队列。

它有一个消息链表,将所有加入的消息都串起来,每个消息都有个唯的 和对应的内容 消息是持久化的, Redis 重启后,内容还在。

  1. xadd:向stram 追加消息。
  2. xdel :从 Stream 中删除消息,这里的删除仅仅是设置标志位,不影响消息总长度。
  3. xrange :获取 earn 中的消息列表,会自动过滤已经删除的消息。
  4. len 获取 Stream 消息长度。
  5. del: 删除整个 Strea 消息列表中的所有消息。

Stream 消息太多怎么办

以它提供了一个定长 位巳am 功能。在 add 的指令中提供个定长长度参数 axlen ,就可以将老的消息干掉 确保链表不超过指定长度。

Stream 的高可用

Strea 的高可用是建立在主从复制基础上的,它和其他数据结构的复制机制没

有区别 ,也就是说在 Sentinel 和 cluster 集群环境下 Stream 是可以支持 可用的。

不过鉴于 redis 的指令复制是异步的,在 failover 发生时, Redis 可能会丢失极小部分数据,这一点 Redis 的其他数据结构也是 样的。

Info指令--查询信息

Redis 每秒执行多少次指令

redis- cli inf o stats lgrep ops

instantaneous ops per sec:789

以上表示 ops 789 ,也就是所有客户端每秒会发送 789 条指令到服务器执行。

Redis 连接了多少客户端

这个信息在 Clients 块里,可以通过 info clients 看到

redis-cli info clients

# Clients

connected clients:124 #这个就是正在连接的客户端数量

client longest output st:0

cl ent biggest input buf:0

blocked c lients :0

Redis 内存占用多大

redis- cli info memory I grep used I grep human

used memory human:827.46K #内存分配器( jemalloc )从操作系统分自己的内存总量

used_memory rss_human : 3 .61M #操作系统看到的内存占用, top 命令看到的内存

us ed memory peak_human:829.41K # Redis 内存消耗的峰值

used memory lua human:37 . 00K # lua 脚本引擎占用的内存大小

分布式锁---集群环境

Sentinel 集群中,当主节点挂掉时,从节点会取而代之,但客户端上却并没有明显感知。

比如,原先第一个客户端在主节点中申请成功了 把锁,但是这把锁还没有来得及同步到从节点,主节点突然挂掉了,然后从节点变成了主节点,这个新的主节点内部没有这个锁,所以当另-个客户端过来请求加锁时,立即就批准了。

这样就会导致系统中同样一把锁被两个客户端同时持有,不安全性由此产生。

Redlock 解决方案

加锁时,它会向过半节点发送 set(key, value, nx=True, ex=xxx)指令,只要过半节点 set 成功,就认为加锁成功。释放锁时,需要向所有节点发送 del指令。

不过Red lock 算法还需要考虑出错重试、时钟漂移等很多细节问题,同时因为 Redlock要向多个节点进行读写,意昧着其相比单实例 Redis 性能会下降-些。

 redlock解决了redis集群部署下锁的问题,但降低了redis性能

Redis安全通信

Redis 本身并不支持 SSL 安全链接,不过有了 SSL 理软件,我们可以让通信数据得到加密,就好像 Redis 穿上了一层隐身外套一样

spiped是这样的一款 SSL 代理软件,它是 Redis 官方推荐的代理软件。

spiped 会在客户端、服务器各启动spiped 进程。

spiped 进程a 负责接受来自 Redis Client 发送过来的请求数

加密后传送到spiped 进程b ,b将接收到的数据解密后传递Redis Server 。然后 Redis Server 再走一个反向的流程将响应回复给 Redis Client。

每一个 spiped 进程都会有个监昕端 server socket )用来接收数据,同 时还会作为 个客户端 socket client )将数据转 目标地址。

spiped 进程需要成对 相互之间需要使用相同的共享密 密消息。

2021-11-13 17:59:45

# Redis
Redis[5-1] Redis 原理
Redis[6] 主从复制+读写分离

  • 文章目录
  • 站点概览
erdengk

erdengk

91 日志
5 分类
24 标签
RSS
Github E-mail
Creative Commons
友链
  • 星球球友
  • Joey
  • 北松山(itwaix)-TP在职
  • JooKS' Blog-GSoC 2022 Mentor
  • Chever-John-Shein在职
  • 一堆网页小游戏
  • 飞鸟记
0%
© 2019 — 2025 erdengk
由 Halo 强力驱动
陕ICP备2021015348号-1
川公网安备 51011202000481号
轻点广告,请我喝水,非常感谢 (。・ω・。)ノ(*/ω\*)