SQL Server-Cache-Abhängigkeit
Es gibt verschiedene Mechanismen in NCache um die Daten im gesamten Cache synchronisiert zu halten. Es kann ein Szenario geben, in dem der Benutzer die Daten mit der Datenbank synchron halten möchte, sodass jede Datenbankaktualisierung den Cache benachrichtigt. Auf diese Weise bleiben die Daten im Cache aktuell und Vorgänge werden für den aktualisierten Datensatz ausgeführt.
NCache Bietet die Funktion der SQL-Abhängigkeit, um den Cache mit Microsoft SQL Server 2005 und höher zu synchronisieren. Ein Artikel wird mit hinzugefügt SqlCacheDependency (zur Verfügung gestellt von NCache), die eine SQL-Anweisung angibt, die eine Abfrageergebnismenge in der Datenbank darstellt. NCache Anschließend wird anhand des Ergebnissatzes eine Verknüpfung mit der Datenbank hergestellt. Wenn eine Anwendung aktualisiert wird, löst der SQL Server Ereignisbenachrichtigungen aus NCache fängt das entsprechende Element ab und entfernt es aus dem verteilten Cache.
Bevor Sie die SQL-Abhängigkeit verwenden, richten Sie die SQL Server-Umgebung ein. So erstellen Sie eine SQL-Abhängigkeit:
- Aktivieren Sie den Broker-Dienst
- Datenbankberechtigungen aktivieren
Weitere Einzelheiten entnehmen Sie bitte der Richten Sie die SQL Server-Umgebung ein Abschnitt im Administratorhandbuch.
Voraussetzungen für die Verwendung der SQL Server-Cache-Abhängigkeit
- Umgebung einrichten für die Verwendung von SQL-Abhängigkeit.
- Lernen Sie die Standardvoraussetzungen kennen, die für die Arbeit mit allen erforderlich sind NCache Weitere Informationen zu clientseitigen Funktionen finden Sie auf der angegebenen Seite Clientseitige API-Voraussetzungen.
- Einzelheiten zur API finden Sie unter: ICache, CacheItem, Abhängigkeit, SqlCacheDependency.
- Stellen Sie sicher, dass Makler ist aktiviert.
- Stellen Sie sicher, dass die Berechtigungen sind aktiviert um zu verwenden NCache SQL-Cache-Abhängigkeit.
Fügen Sie Daten mit SQL Server-Abhängigkeit über die API hinzu
Um mithilfe der SQL-Abhängigkeit Daten zum Cache hinzuzufügen, NCache bietet die SqlCacheDependency
Klasse. Dadurch werden Elemente mit SQL-Abhängigkeit zum Cache hinzugefügt.
Das folgende Beispiel fügt einem Element eine SQL-Abhängigkeit hinzu und fügt das Element dann mithilfe von zum Cache hinzu Insert
Methode. Das Insert
Die Methode fügt ein neues Element mit Abhängigkeit hinzu. Wenn diese Daten bereits im Cache vorhanden sind, werden sie überschrieben.
// Creating connection string to get connected with database.
string connectionString = "your_connection_string_here";
// Getting products from database.
List<Product> products = FetchProductFromDB();
foreach (Product product in products)
{
string productKey = $"Product: {product.ProductID}";
// Creating an SQL dependency on the UnitPrice of product. Whenever the UnitPrice changes, the product is removed from the cache.
string query = $"SELECT UnitPrice FROM dbo.Products WHERE ProductID = {product.ProductID}";
// Creating dependency.
SqlCacheDependency dependency = new SqlCacheDependency(connectionString, query);
CacheItem productItem = new CacheItem(product);
// Adding Dependency to product item
productItem.Dependency = dependency;
// Adding CacheItem in cache
_cache.Add(productKey, productItem);
}
Note
Um sicherzustellen, dass der Vorgang ausfallsicher ist, wird empfohlen, alle potenziellen Ausnahmen in Ihrer Anwendung zu behandeln, wie in erläutert Umgang mit Fehlern.
Hinzufügen von Daten mit SQL-Abhängigkeit mithilfe von Stored Procedures
NCache ermöglicht Ihnen die Bereitstellung einer SQL-Abhängigkeit für ein Element mithilfe einer gespeicherten Prozedur. Sie können auch die Parameter angeben, die zusammen mit dieser Prozedur übergeben werden sollen, indem Sie die verwenden SqlCacheDependency
Methode.
Im folgenden Beispiel wird mithilfe der gespeicherten Prozedur ein Element mit SQL-Abhängigkeit zum Cache hinzugefügt Insert Methode. Das Insert
Die Methode fügt ein neues Element mit Abhängigkeit hinzu und überschreibt ihre Eigenschaften, wenn diese Daten bereits im Cache vorhanden sind.
// Creating connection string to get connected with database.
string connectionString = "your_connection_string_here";
string spGetUnitPriceByProductID = "sp_GetUnitPriceByProductID";
// Getting products from database.
List<Product> products = FetchProductFromDB();
// Creating dictionary of CacheItems.
Dictionary<string, CacheItem> cacheItems = new Dictionary<string, CacheItem>();
foreach (Product product in products)
{
string productKey = $"Product: {product.ProductID}";
// Creating Param to be passed in stored procedure dictionary.
SqlCmdParams paramProductID = new SqlCmdParams
{
Type = CmdParamsType.Int,
Value = product.ProductID
};
// Creating stored procedure params.
Dictionary<string, SqlCmdParams> parameters = new Dictionary<string, SqlCmdParams>();
parameters.Add("@ProductID", paramProductID);
CacheItem productItem = new CacheItem(product);
// Creating an SQL dependency on the UnitPrice of product. Whenever the UnitPrice changes, the product is removed from the cache.
SqlCacheDependency dependency = new SqlCacheDependency(connectionString, spGetUnitPriceByProductID, SqlCommandType.StoredProcedure, parameters);
// Adding Dependency to product item
productItem.Dependency = dependency;
cacheItems.Add(productKey, productItem);
}
// Adding CacheItems in cache
_cache.AddBulk(cacheItems);
Wichtig
- In einer Umgebung, in der der Benutzer eingeschränkteren Zugriff auf die Datenbank hat, sollten Benutzer SQL-Dienste und Warteschlangen pro erstellen NCache Prozess, indem Sie das „Verwenden Sie den benutzerdefinierten SQL-BenachrichtigungsmodusKontrollkästchen im Optionen Registerkarte in der NCache Managementzentrum.
- Sie können den erforderlichen SQL-Dienst und die erforderliche SQL-Warteschlange auch mithilfe eines Skripts erstellen NCacheServiceQueue.sql befindet sich %NCHOME%\bin\resources.
Weitere Informationen
NCache stellt eine Beispielanwendung für die SQL-Abhängigkeit bereit GitHub.
Siehe auch
.NETZ: Alachisoft.NCache.Laufzeitabhängigkeiten Namespace.
Java: com.alachisoft.ncache.Laufzeitabhängigkeiten Namespace.
Node.js: SqlCacheDependency Klasse.
Python: ncache.Laufzeitabhängigkeiten Klasse.