Redis基础实践

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: Redis基础实践

pubsub 模式


顾名思义,即发布订阅模式(类似生产消费者模式)。订阅者创建一个 channel 并订阅它,发布者将消息发布到指定 channel 中,这样订阅者就能从这个 channel 中获取消息,从而完成整个订阅发布流程。


订阅


channel 的创建由订阅者在订阅过程中创建。


terminal 1 中进行订阅操作。


127.0.0.1:6379> SUBSCRIBE c1
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "c1"
3) (integer) 1
复制代码


  1. 第一步理解为提示
  2. 第二步理解为返回值
  3. 第三部理解为返回码


发布


terminal 2 中进行发布操作。


127.0.0.1:6379> PUBLISH c1 halo
(integer) 1
127.0.0.1:6379> PUBLISH c1 haha
(integer) 1
复制代码


以上,我们向 c1 channel 中发布了两条消息,分别为 halohaha


terminal 1 中查看消息。


1) "message"
2) "c1"
3) "halo"
1) "message"
2) "c1"
3) "haha"
复制代码


如上,订阅者收到了两条 message 类型的数据,返回值分别为发布者发布的两条消息。


查询 channel


127.0.0.1:6379> PUBSUB channels
1) "c1"
复制代码


其他操作&命令


# 批量订阅指定模式的频道
PSUBSCRIBE c1 c2
# 批量订阅多个频道
SUBSCRIBE c1 c2
# 批量退订
PUNSUBSCRIBE c1 c3
复制代码


事务


事务可以一次执行多条命令。其有几个特点:

  1. 批量命令在 EXEC 命令前加入队列缓存。
  2. EXEC 执行过程中,一个命令失败,其他命令继续执行。
  3. 在执行事务过程中,其他客户端提交的明林不会插入到事务队列中。


事务实践


我们计划在事务中执行多条命令,查看其运行结果。


127.0.0.1:6379> multi
OK
127.0.0.1:6379> set name fly
QUEUED
127.0.0.1:6379> get name
QUEUED
127.0.0.1:6379> get err
QUEUED
127.0.0.1:6379> del name
QUEUED
127.0.0.1:6379> exec
1) OK
2) "fly"
3) (nil)
4) (integer) 1
127.0.0.1:6379>
复制代码


如上,在进入事务模式后,输入了 4 条命令,在 exec 执行后才出发事务 4 条命令的执行。


执行过程中如何放弃事务


命令:DISCARD


127.0.0.1:6379> multi
OK
127.0.0.1:6379> set h name
QUEUED
127.0.0.1:6379> discard
OK
127.0.0.1:6379> get h
(nil)
127.0.0.1:6379>
复制代码


如上,事务中的 set h name 命令在 discard 后没有执行。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2月前
|
存储 缓存 NoSQL
深入理解Django与Redis的集成实践
深入理解Django与Redis的集成实践
77 0
|
7月前
|
存储 缓存 NoSQL
蚂蚁金服P7私藏的Redis原理与实践内部笔记
Redis 是完全开源免费的,是一个高性能的key-value类型的内存数据库。整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。
112 1
|
7月前
|
缓存 NoSQL Java
Spring Cache 缓存原理与 Redis 实践
Spring Cache 缓存原理与 Redis 实践
368 0
|
NoSQL Unix Linux
Redis核心技术与实践 03 | 高性能IO模型:为什么单线程Redis能那么快?
Redis核心技术与实践 03 | 高性能IO模型:为什么单线程Redis能那么快?
|
存储 NoSQL Linux
VLDB顶会论文Async-fork解读与Redis在得物的实践(1)
VLDB顶会论文Async-fork解读与Redis在得物的实践
128 0
|
NoSQL 测试技术 Linux
VLDB顶会论文Async-fork解读与Redis在得物的实践(3)
VLDB顶会论文Async-fork解读与Redis在得物的实践
155 0
VLDB顶会论文Async-fork解读与Redis在得物的实践(3)
|
NoSQL 测试技术 Linux
VLDB顶会论文Async-fork解读与Redis在得物的实践(2)
VLDB顶会论文Async-fork解读与Redis在得物的实践
117 0
VLDB顶会论文Async-fork解读与Redis在得物的实践(2)
|
20天前
|
NoSQL Java 数据处理
基于Redis海量数据场景分布式ID架构实践
【11月更文挑战第30天】在现代分布式系统中,生成全局唯一的ID是一个常见且重要的需求。在微服务架构中,各个服务可能需要生成唯一标识符,如用户ID、订单ID等。传统的自增ID已经无法满足在集群环境下保持唯一性的要求,而分布式ID解决方案能够确保即使在多个实例间也能生成全局唯一的标识符。本文将深入探讨如何利用Redis实现分布式ID生成,并通过Java语言展示多个示例,同时分析每个实践方案的优缺点。
38 8
|
1月前
|
缓存 NoSQL Redis
Redis 缓存使用的实践
《Redis缓存最佳实践指南》涵盖缓存更新策略、缓存击穿防护、大key处理和性能优化。包括Cache Aside Pattern、Write Through、分布式锁、大key拆分和批量操作等技术,帮助你在项目中高效使用Redis缓存。
241 22
|
2月前
|
NoSQL 关系型数据库 MySQL
MySQL与Redis协同作战:百万级数据统计优化实践
【10月更文挑战第21天】 在处理大规模数据集时,传统的单体数据库解决方案往往力不从心。MySQL和Redis的组合提供了一种高效的解决方案,通过将数据库操作与高速缓存相结合,可以显著提升数据处理的性能。本文将分享一次实际的优化案例,探讨如何利用MySQL和Redis共同实现百万级数据统计的优化。
107 9