Comment utiliser le serveur de cache Redis sous Windows
1. Serveur Redis
Téléchargez d'abord le serveur Redis, cliquez pour télécharger la version .msi, double-cliquez pour installer le serveur Redis, et il sera installé en tant que service. Le système démarre ensemble :
La première chose après l'installation du serveur Redis est de définir un mot de passe et d'entrer dans le répertoire d'installation : C:Program FilesRedis - Recherchez le fichier de configuration : redis.windows-service .conf - Recherchez : # requirepass foobared - Entrez et saut de ligne et ajoutez : requirepass Écrivez votre nouveau mot de passe ici (écrivez-le sur la ligne du haut, sans laisser d'espace devant) - Accédez au service pour redémarrer le service Redis ou redémarrer l'ordinateur
Non Les inconvénients de la définition de mots de passe peuvent être compris en regardant ce qui est arrivé à ce type de Ctrip : Souvenez-vous d'un incident où Redis a été attaqué
2. Client Redis (ligne de commande et outil de visualisation RDM)
Démonstration en ligne de commande : démarrer le client Redis, lire et écrire le serveur Redis
Explication de la commande ci-dessus :
cd C : Program FilesRedis : La commande cd entre dans le répertoire d'installation de Redis, ce qui équivaut à un double-clic pour entrer dans le répertoire d'installation de Redis dans le système Windows <.>
redis-cli.exe : ouvre le programme client redis-cli, ce qui équivaut à un double-clic pour exécuter un exe dans le programme système Windows (après avoir installé le programme serveur Redis ci-dessus, un programme client est requis. pour vous connecter au serveur. Pour vous connecter au serveur redis local, tapez directement cette commande. Pour vous connecter au serveur distant, vous devez ajouter l'adresse IP et le port, par exemple : redis-cli.exe -h 111.11 .11.111 -p. 6379)Vous pouvez le voir après vous être connecté au serveur Redis, la valeur par défaut est de 16 bibliothèques (le fichier de configuration peut être modifié) et l'index commence à 0. Une utilisation courante consiste à avoir un projet et une bibliothèque, et différents modules fonctionnels du projet sont stockés dans différents répertoires de cette bibliothèque. Inutile de dire que l'opération après avoir obtenu l'outil de visualisation consiste à double-cliquer, cliquer avec le bouton droit pour créer et supprimer. . . Quiconque sait utiliser le système Windows utilisera cet outil. Comparé à la ligne de commande, Redis Desktop Manager est un outil visuel plus convivial et il est également plus pratique de déboguer les données sur le serveur distant. Remarque : Cette machine peut faire cela. Pour vous connecter au serveur distant, vous devez accéder au répertoire d'installation Redis sur le serveur, rechercher le fichier redis.windows-service.conf, rechercher bind 127.0.0.1. , commentez-le avec "#" devant, puis faites un clic droit sur le service pour redémarrer le service Redis, ou redémarrez le système Windows
3. Serveur Redis exécutant C#
Les lignes de commande et les outils visuels ci-dessus permettant de faire fonctionner le serveur Redis doivent utiliser StackExchange.Redis (https://github.com/StackExchange/StackExchange.Redis). ), afin de l'appeler uniformément, une classe d'assistance RedisHelper est encapsulée :
using Newtonsoft.Json; using StackExchange.Redis; using System; using System.ComponentModel; using System.Configuration; using System.Reflection; using System.Text; namespace redis_Demo { /// <summary> /// Redis 帮助类 /// </summary> public static class RedisHelper { private static string _conn = ConfigurationManager.AppSettings["redis_connection_string"] ?? "127.0.0.1:6379"; private static string _pwd = ConfigurationManager.AppSettings["redis_connection_pwd"] ?? "123456"; static ConnectionMultiplexer _redis; static readonly object _locker = new object(); #region 单例模式 public static ConnectionMultiplexer Manager { get { if (_redis == null) { lock (_locker) { if (_redis != null) return _redis; _redis = GetManager(); return _redis; } } return _redis; } } private static ConnectionMultiplexer GetManager(string connectionString = null) { if (string.IsNullOrEmpty(connectionString)) { connectionString = _conn; } var options = ConfigurationOptions.Parse(connectionString); options.Password = _pwd; return ConnectionMultiplexer.Connect(options); } #endregion /// <summary> /// 添加 /// </summary> /// <param name="folder">目录</param> /// <param name="key">键</param> /// <param name="value">值</param> /// <param name="expireMinutes">过期时间,单位:分钟。默认600分钟</param> /// <param name="db">库,默认第一个。0~15共16个库</param> /// <returns></returns> public static bool StringSet(CacheFolderEnum folder, string key, string value, int expireMinutes = 600, int db = -1) { string fd = GetDescription(folder); return Manager.GetDatabase(db).StringSet(string.IsNullOrEmpty(fd) ? key : fd + ":" + key, value, TimeSpan.FromMinutes(expireMinutes)); } /// <summary> /// 获取 /// </summary> /// <param name="folder">目录</param> /// <param name="key">键</param> /// <param name="db">库,默认第一个。0~15共16个库</param> /// <returns></returns> public static string StringGet(CacheFolderEnum folder, string key, int db = -1) { try { string fd = GetDescription(folder); return Manager.GetDatabase(db).StringGet(string.IsNullOrEmpty(fd) ? key : fd + ":" + key); } catch (Exception) { return null; } } /// <summary> /// 删除 /// </summary> /// <param name="folder">目录</param> /// <param name="key">键</param> /// <param name="db">库,默认第一个。0~15共16个库</param> /// <returns></returns> public static bool StringRemove(CacheFolderEnum folder, string key, int db = -1) { try { string fd = GetDescription(folder); return Manager.GetDatabase(db).KeyDelete(string.IsNullOrEmpty(fd) ? key : fd + ":" + key); } catch (Exception) { return false; } } /// <summary> /// 是否存在 /// </summary> /// <param name="key">键</param> /// <param name="db">库,默认第一个。0~15共16个库</param> public static bool KeyExists(CacheFolderEnum folder, string key, int db = -1) { try { string fd = GetDescription(folder); return Manager.GetDatabase(db).KeyExists(string.IsNullOrEmpty(fd) ? key : fd + ":" + key); } catch (Exception) { return false; } } /// <summary> /// 延期 /// </summary> /// <param name="folder">目录</param> /// <param name="key">键</param> /// <param name="min">延长时间,单位:分钟,默认600分钟</param> /// <param name="db">库,默认第一个。0~15共16个库</param> public static bool AddExpire(CacheFolderEnum folder, string key, int min = 600, int db = -1) { try { string fd = GetDescription(folder); return Manager.GetDatabase(db).KeyExpire(string.IsNullOrEmpty(fd) ? key : fd + ":" + key, DateTime.Now.AddMinutes(min)); } catch (Exception) { return false; } } /// <summary> /// 添加实体 /// </summary> /// <param name="folder">目录</param> /// <param name="key">键</param> /// <param name="t">实体</param> /// <param name="ts">延长时间,单位:分钟,默认600分钟</param> /// <param name="db">库,默认第一个。0~15共16个库</param> public static bool Set<T>(CacheFolderEnum folder, string key, T t, int expireMinutes = 600, int db = -1) { string fd = GetDescription(folder); var str = JsonConvert.SerializeObject(t); return Manager.GetDatabase(db).StringSet(string.IsNullOrEmpty(fd) ? key : fd + ":" + key, str, TimeSpan.FromMinutes(expireMinutes)); } /// <summary> /// 获取实体 /// </summary> /// <param name="folder">目录</param> /// <param name="key">键</param> /// <param name="db">库,默认第一个。0~15共16个库</param> public static T Get<T>(CacheFolderEnum folder, string key, int db = -1) where T : class { string fd = GetDescription(folder); var strValue = Manager.GetDatabase(db).StringGet(string.IsNullOrEmpty(fd) ? key : fd + ":" + key); return string.IsNullOrEmpty(strValue) ? null : JsonConvert.DeserializeObject<T>(strValue); } /// <summary> /// 获得枚举的Description /// </summary> /// <param name="value">枚举值</param> /// <param name="nameInstead">当枚举值没有定义DescriptionAttribute,是否使用枚举名代替,默认是使用</param> /// <returns>枚举的Description</returns> private static string GetDescription(this Enum value, Boolean nameInstead = true) { Type type = value.GetType(); string name = Enum.GetName(type, value); if (name == null) { return null; } FieldInfo field = type.GetField(name); DescriptionAttribute attribute = Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute)) as DescriptionAttribute; if (attribute == null && nameInstead == true) { return name; } return attribute == null ? null : attribute.Description; } } }
Ajouter un enregistrement avec le nom de la clé et la valeur wangjie au répertoire fd1 de la première bibliothèque du serveur redis :
RedisHelper.StringSet(CacheFolderEnum.Folder1, "name", "wangjie");
Récupérer cet enregistrement :
string key = RedisHelper.StringGet(CacheFolderEnum.Folder1, "name"); Console.WriteLine("键为name的记录对应的值:" + key);
Supprimer cet enregistrement :
bool result = RedisHelper.StringRemove(CacheFolderEnum.Folder1, "name"); if (result) { Console.WriteLine("键为name的记录删除成功"); } else { Console.WriteLine("键为name的记录删除失败"); }
Vérifier si cet enregistrement existe :
bool ifExist = RedisHelper.KeyExists(CacheFolderEnum.Folder1, "name"); if (ifExist) { Console.WriteLine("键为name的记录存在"); } else { Console.WriteLine("键为name的记录不存在"); }
Demander Dans le répertoire fd2 de la deuxième bibliothèque du serveur redis, ajoutez un enregistrement avec la clé sd1 et la valeur an object :
Student student = new Student() { Id = 1, Name = "张三", Class = "三年二班" }; RedisHelper.Set<Student>(CacheFolderEnum.Folder2, "sd1", student, 10, 1);
Récupérez cet objet :
Student sdGet = RedisHelper.Get<Student>(CacheFolderEnum.Folder2, "sd1", 1); if (sdGet != null) { Console.WriteLine("Id:" + sdGet.Id + " Name:" + sdGet.Name + " Class:" + sdGet.Class); } else { Console.WriteLine("找不到键为sd1的记录"); }
Code source : (http ://files.cnblogs.com/files/oppoic/redis_Demo.zip)
L'environnement est VS 2013. S'il ne peut pas s'exécuter, copiez le code dans cs, compilez-le et exécutez-le vous-même
4. Autres
Le serveur de cache Redis développé par MSOpenTech est livré avec persistance Après l'écriture, redémarrez l'ordinateur et la paire clé-valeur existera toujours. . Généralement, le délai d'expiration doit être défini lors de l'écriture de la paire clé-valeur, sinon il restera La mémoire occupée ne sera pas libérée. La méthode de stockage Redis a non seulement des clés correspondant aux chaînes, mais correspond également à List, HashTable, etc. Bien entendu, les utilisations plus avancées de Redis se font toujours sous Linux.
Pour plus d'articles liés à l'utilisation du serveur de cache Redis sous Windows, veuillez faire attention au site PHP chinois !

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Le mode Redis Cluster déploie les instances Redis sur plusieurs serveurs grâce à la rupture, à l'amélioration de l'évolutivité et de la disponibilité. Les étapes de construction sont les suivantes: Créez des instances de redis étranges avec différents ports; Créer 3 instances Sentinel, Moniteur Redis Instances et basculement; Configurer les fichiers de configuration Sentinel, ajouter des informations d'instance Redis de surveillance et des paramètres de basculement; Configurer les fichiers de configuration d'instance Redis, activer le mode de cluster et spécifier le chemin du fichier d'informations de cluster; Créer un fichier nœuds.conf, contenant des informations de chaque instance redis; Démarrez le cluster, exécutez la commande CREATE pour créer un cluster et spécifiez le nombre de répliques; Connectez-vous au cluster pour exécuter la commande d'informations de cluster pour vérifier l'état du cluster; faire

Comment effacer les données Redis: utilisez la commande flushall pour effacer toutes les valeurs de clé. Utilisez la commande flushdb pour effacer la valeur clé de la base de données actuellement sélectionnée. Utilisez SELECT pour commuter les bases de données, puis utilisez FlushDB pour effacer plusieurs bases de données. Utilisez la commande del pour supprimer une clé spécifique. Utilisez l'outil Redis-CLI pour effacer les données.

Pour lire une file d'attente à partir de Redis, vous devez obtenir le nom de la file d'attente, lire les éléments à l'aide de la commande LPOP et traiter la file d'attente vide. Les étapes spécifiques sont les suivantes: Obtenez le nom de la file d'attente: Nommez-le avec le préfixe de "Fitre:" tel que "Fitre: My-Quyue". Utilisez la commande LPOP: éjectez l'élément de la tête de la file d'attente et renvoyez sa valeur, telle que la file d'attente LPOP: My-Queue. Traitement des files d'attente vides: si la file d'attente est vide, LPOP renvoie NIL et vous pouvez vérifier si la file d'attente existe avant de lire l'élément.

Utilisez l'outil de ligne de commande redis (Redis-CLI) pour gérer et utiliser Redis via les étapes suivantes: Connectez-vous au serveur, spécifiez l'adresse et le port. Envoyez des commandes au serveur à l'aide du nom et des paramètres de commande. Utilisez la commande d'aide pour afficher les informations d'aide pour une commande spécifique. Utilisez la commande QUIT pour quitter l'outil de ligne de commande.

Pour désinstaller une base de données Oracle: arrêtez le service Oracle, supprimez l'instance Oracle, supprimez le répertoire d'Oracle Home, effacez la touche de registre (Windows uniquement) et supprimez les variables d'environnement (Windows uniquement). Veuillez sauvegarder les données avant de désinstaller.

Il existe deux types de stratégies d'expiration de données redis: la suppression périodique: analyse périodique pour supprimer la clé expirée, qui peut être définie via des paramètres d'expiration-temps-transport et des paramètres d'expiration-temps-transparence. Suppression paresseuse: vérifiez les clés expirées de suppression uniquement lorsque les clés sont lues ou écrites. Ils peuvent être définis à travers des paramètres Lazyfree-Lazy-Deviction, Lazyfree-Lazy-Expire, Lazyfree-Lazy-User-Del.

Utilisation de Zset dans le cluster Redis: ZSET est une collection ordonnée qui associe les éléments aux scores. Stratégie de rupture: a. Cusage de hachage: distribuez la valeur de hachage en fonction de la touche Zset. né Plage de percussion: diviser en plages en fonction des scores des éléments et attribuer chaque plage à différents nœuds. Opérations de lecture et d'écriture: a. Opérations de lecture: Si la clé ZSET appartient à l'éclat du nœud actuel, il sera traité localement; Sinon, il sera acheminé vers l'éclat correspondant. né Opération d'écriture: toujours acheminé vers des éclats de maintien de la touche Zset.

Pour améliorer les performances de la base de données PostgreSQL dans Debian Systems, il est nécessaire de considérer de manière approfondie le matériel, la configuration, l'indexation, la requête et d'autres aspects. Les stratégies suivantes peuvent optimiser efficacement les performances de la base de données: 1. Extension de mémoire d'optimisation des ressources matérielles: la mémoire adéquate est cruciale pour cacher les données et les index. Stockage à grande vitesse: l'utilisation de disques SSD SSD peut considérablement améliorer les performances d'E / S. Processeur multi-core: utilisez pleinement les processeurs multi-core pour implémenter le traitement des requêtes parallèles. 2. Paramètre de base de données Tuning Shared_Buffers: Selon le réglage de la taille de la mémoire du système, il est recommandé de le définir à 25% -40% de la mémoire système. work_mem: contrôle la mémoire des opérations de tri et de hachage, généralement définies sur 64 Mo à 256m
