Neuer Datenprovider für Redis

Redis ist eine In-Memory Schlüssel-Werte-Datenbank, also eine typische NoSQL-Datenbank. Seit der ersten Veröffentlichung im Jahr 2009 erfreut sich Redis steigender Beliebtheit und ist laut db-engines.com die mit Abstand beliebteste Schlüssel-Werte-Datenbank auf dem Markt. Mit dem neuen RedisDataProvider können Sie Ihre Redis-Datenbank nun innerhalb von List & Label oder Report Server verwenden.

Erste Schritte

Sie müssen in Ihrem Projekt einen Verweis auf die combit.ListLabel24.RedisDataProvider.dll und StackExchange.Redis (NuGet) hinzufügen.

Für eine einfache Verbindung ohne registrierte Hash-Tabellen (für Hash-Tabellen siehe unten) müssen Sie nur eine Instanz von RedisDataProvider erstellen und die Verbindungsinformationen im Konstruktor angeben (Dokumentation zu den Optionen: https://stackexchange.github.io/StackExchange.Redis/Configuration#configuration-options):

var provider = new RedisDataProvider.RedisDataProvider("<YourServerURL or IP>");
ListLabel ll = new ListLabel();
ll.DataSource = provider;
ll.Design();

 

Verwendung einer Hash-Tabelle

Da Redis eine Schlüssel-Werte-Datenbank ist, gibt es keine regulären Tabellen, wie man es von einem schematisierten RDBMS erwarten würde. Jeder Eintrag ist ein eindeutiger Schlüssel, daher besteht eine Tabelle in Redis aus vielen Schlüsseln, die zu einer Tabelle gehören: z. B. „user:001“, „user:002“,…

Da List & Label nicht wissen kann, wie die Datenbank aufgebaut ist und nur erraten könnte, welcher Schlüssel zu welcher Tabelle gehört, müssen Sie das Layout für jede zu verwendende Hash-Tabelle definieren.

Dies kann einfach durch Hinzufügen eines neuen Lambda zu den RegisteredHashTables erreicht werden. Die Eingabe des Lambda ist der Schlüsselname, der gerade überprüft wird, der Rückgabewert ist der Name der Tabelle oder Zeichenkette. Leer/Null, wenn der Schlüssel zu keiner Tabelle passt.

Beispiel

var provider = new RedisDataProvider.RedisDataProvider("<YourServerURL or IP>");
provider.RegisteredHashTables.Add((s) =>
{
if (s.StartsWith("user"))
return "user";
return null;
});

 

Verwendung im Report Server

Für die Verwendung von Redis mit dem Report Server müssen Sie die Datenquelle „Redis“ (unter der Kategorie NoSQL) hinzufügen. Sie müssen mindestens die Verbindungszeichenfolge für die Datenquelle angeben (Dokumentation der Optionen: https://stackexchange.github.io/StackExchange.Redis/Configuration#configuration-options).

Wenn Sie Hash-Tabellen verwenden möchten, müssen Sie angeben, wie die Hash-Tabellen registriert werden sollen. Für die Registrierung einer Hash-Tabelle müssen Sie den Wert angeben, gegen den die ausgewählte Vergleichsfunktion prüft und der auch als Tabellenname verwendet wird.

Beispiel

Diese Konfiguration verbindet sich mit dem Redis-Server unter 192.168.10.204, registriert die Hash-Tabellen „user“ und „items“ (getrennt durch „|“) und verwendet den Wert als Eingabe für die Vergleichsfunktion (Starts with) und als resultierenden Tabellennamen.

Um dieses Beispiel zu verdeutlichen, würde diese Konfiguration, übersetzt in Code (vereinfacht), so aussehen:

var provider = new RedisDataProvider.RedisDataProvider("192.168.10.204"); // connection string
provider.RegisteredHashTables.Add((s) =>
{
if (s.StartsWith("user"))
return "user";
return null;
});
provider.RegisteredHashTables.Add((s) =>
{
if (s.StartsWith("items"))
return "items";
return null;
});

 

Aktuell unterstützte Datenstrukturen

Name Unterstützt
Bitmaps
Hash
HyperLogLogs 
List
Set
SortedSet
String

 

Zusätzliche Informationen

  • Unterstützt seit List & Label 24.001
  • Unterstützt seit Report Server 24.001
  • Minimum .NET Framework Version: 4.6.1

Der RedisDataProvider ist IDisposable. Stellen Sie sicher, dass Sie für den Provider nach der Nutzung Dispose() aufrufen. Die Sourcen für den Provider sind auch in unserem GitHub-Repository verfügbar, falls Sie gegen eine andere Version kompilieren müssen.

Empfohlene Artikel

Schreibe einen Kommentar