在昨天我们谈完如何使用Azure Kubernetes Service部署Container应用程序後
今天我们来聊聊Azure Cache for Redis,若你有在布署Instant Messaging
服务,建议可以使用Azure Cache for Redis可以快速传送和存取,确保讯息的
图片和文字会一起传送,使用caching read-only data with Redis来最佳化
Web应用程序,Redis Cache是可作为database,cache或message broker的
记忆体内部资料结构存放区。
今天早上操作Azure Redis Cache的SandBox(免费但有限制3小时)卡关,
晚上20:45再冲一波总算弄好
有些时候您必须保证可同时执行多个作业。 例如,在Onf 的即时讯息应用程序中
,使用者可以传送:个别图片、个别文字简讯,或图片和文字简讯。 当使用者选择
一起传送图片和文字简讯时,您必须确定群组的其他成员能够同时接收它们,因为
如果图片和文字简讯未一起接收,就有可能会在图片和文字简讯之间传送个别讯息
。 这样会让整体对话令人感到困惑。
Redis 中的交易运作方式,是将多个要执行的命令以群组方式排入伫列。 当执行
交易时,在交易中排入伫列的命令保证会执行,而不会有来自其他用户端的任何
其他命令交错在其当中,若要开始交易区块,请输入 MULTI 命令。 後续的命令会
被排入伫列,而不会立刻执行。 执行 EXEC 命令会将所有已排入伫列的命令当作
交易单位来执行。 如果你决定要在命令正在排入伫列时中止开启的交易,执行
DISCARD 命令将会关闭交易区块,而不会执行「任何」已排入伫列的命令。
Redis 交易不支援复原的概念。 如果您使用不正确的语法将命令排入伫列至交易
区块中,区块将会维持开启,但如果您尝试以 EXEC 执行,将会自动舍弃该交易
区块。 在交易「执行期间」(呼叫 EXEC 之後) 失的命令不会导致交易中止
或复原 — Redis 仍会执行所有命令,并将交易视为已成功完成。
从资料库读取资料通常是缓慢的程序。 这涉及到编译复杂的查询、准备查询执行
计画、执行查询,然後准备结果。 在某些情况下,此程序也可能会从磁碟读取
资料。 你可以在资料库层级进行最佳化,例如预先编译查询,以及将部分资料
载入记忆体。 不过,从资料库撷取资料时,一律会执行查询及准备结果。
使用另行快取模式可解决这个问题。 在另行快取模式中,仍有应用程序和资料库
,但现在也有快取,快取会将其资料储存在记忆体中,因此不需要与档案系统互动
,快取也会以非常简单的资料结构(例如索引键值组)来储存资料,因此不需要执行
复杂的查询来收集资料,或在写入资料时维护索引。 基於上述原因,快取的效能
一般会高於资料库。 当您使用应用程序时,它会尝试先从快取读取资料。 如果
要求的资料不在快取中,则应用程序会如往常般从资料库撷取它。 不过,它会
接着将资料储存在快取中,以供後续要求使用。 下次当任何使用者要求该资料
时,则会直接从快取传回它。
当你实作cache-aside模式时,会引进一个小问题。 由於你的资料现在储存於
快取和资料存放区中,因此当你尝试进行更新时,可能会遇到问题。 例如,若要
更新你的资料,你必须同时更新快取和资料存放区。
若要解决此问题,使用cache-aside模式让快取中的资料失效。 当您更新应用
程序中的资料时,你应该先删除快取中的资料,再直接对资料来源进行变更。
如此一来,下次要求资料时,快取中就不会有资料,而会重复此程序。
Lifetime:若要让另行快取有效,请确定到期原则符合资料的存取频率。
设定太短的到期时间,可能会造成应用程序持续从资料存放区撷取资料,并将它
新增至快取。
Evicting:快取相较於一般资料存放区有大小限制,因此必要时会收回资料
。 请务必为你的资料选择适当的收回原则。
Priming:为了让另行快取模式生效,许多解决方案会在快取中预先填入需要
经常存取的资料。
Consistency:实作另行快取模式并不保证资料存放区与快取之间的一致性
。 资料存放区中的资料可能会在未通知快取的情况下变更。 这可能会导致严重
的同步处理问题。
当你必须从使用磁碟的资料来源经常存取资料时,另行快取模式会很有用。 使用
另行快取模式,您会将重要的资料储存在快取中,以协助加快撷取资料的速度。
手把手在Azure Cache for Redis建立transaction步骤
手把手实作Azure Redis Cache Data Expir步骤
Day28教学讲义:
https://docs.microsoft.com/zh-tw/learn/modules/work-with-mutable-and-partial-data-in-a-redis-cache/
>>: [Day29] AWS Wavelength (5G)
传值(Call by value) 在 JavaScript 中,只有原始型别为传值(Call by...
前面我们虽然有讲到除了基本的数值类型资料以外,一共主要会有文字、图片、声音这三大类型,而在数值类型的...
值得一题的是我是用Microsoft Edge浏览器顺利完成报名的, 我也不知道是什麽原因, 要准...
我们在之前有说过c的输入输出有scanf跟printf,这两个也都可以拿来输入及输出字串,但scan...
昨天我们让 Reply Message 成功从 Read Mail 读取到验证码,今天要进一步让 R...