数据访问层(DAL)如何优雅的协调存取缓存数据库(如redis)和持久数据库(如mysql)?
假设dal用php举例。
原来使用php单独操作mysql,现在需要压榨服务器,考虑增加一个redis,但同时面对两个数据源的存取策略产生了疑惑,希望帮助梳理一下。
用伪代码解释一下更好,谢谢。
回复内容:
假设dal用php举例。
原来使用php单独操作mysql,现在需要压榨服务器,考虑增加一个redis,但同时面对两个数据源的存取策略产生了疑惑,希望帮助梳理一下。
用伪代码解释一下更好,谢谢。
仅仅把redis当做缓存, 没必要写在DAL里吧(我不知道DAL的意思,只用过DAO、AR,ORM,听名字都是类似的东西?),就仅仅以缓存的形式去拓展它,比如继承你Cache类,如果还有用作永久存储需求,去继承DAL类,用redis给它实现出来,如果用做队列、或交集并集、计数器等等,同样去通过redis数据库去实现既有的接口。
最后用一个通用入口文件,通过构造方法调用不同的实现。
伪代码不会写,既然PHP直接贴开源项目吧Yii2-redis, 看看其中ActiveRecord.php与Cache.php,大概想法就是这样。

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

Causes and solutions for errors when using PECL to install extensions in Docker environment When using Docker environment, we often encounter some headaches...

Arrays are linear data structures used to process data in programming. Sometimes when we are processing arrays we need to add new elements to the existing array. In this article, we will discuss several ways to add elements to the end of an array in PHP, with code examples, output, and time and space complexity analysis for each method. Here are the different ways to add elements to an array: Use square brackets [] In PHP, the way to add elements to the end of an array is to use square brackets []. This syntax only works in cases where we want to add only a single element. The following is the syntax: $array[] = value; Example

The page is blank after PHP connects to MySQL, and the reason why die() function fails. When learning the connection between PHP and MySQL database, you often encounter some confusing things...

Problems and solutions encountered when compiling and installing Redis on Apple M1 chip Mac, many users may...

Nexo Exchange: Swiss cryptocurrency lending platform In-depth analysis Nexo is a platform that provides cryptocurrency lending services, supporting the mortgage and lending of more than 40 crypto assets, fiat currencies and stablecoins. It dominates the European and American markets and is committed to improving the efficiency, security and compliance of the platform. Many investors want to know where the Nexo exchange is registered, and the answer is: Switzerland. Nexo was founded in 2018 by Swiss fintech company Credissimo. Nexo Exchange Geographical Location and Regulation: Nexo is headquartered in Zug, Switzerland, a well-known cryptocurrency-friendly region. The platform actively cooperates with the supervision of various governments and has been in the US Financial Crime Law Enforcement Network (FinCEN) and Canadian Finance
