Maison développement back-end tutoriel php Comment utiliser le serveur de cache Redis sous Windows

Comment utiliser le serveur de cache Redis sous Windows

Feb 08, 2017 pm 01:53 PM
redis 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 :

Comment utiliser le serveur de cache Redis sous Windows

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

Comment utiliser le serveur de cache Redis sous Windows

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)


keys * : Afficher toutes les paires clé-valeur (si le serveur Redis a défini un mot de passe, cette commande signalera une erreur, vous devez d'abord saisir le mot de passe , exécutez cette commande : authentifiez votre mot de passe)

set blog oppoic.cnblogs.com : définissez une paire clé-valeur, la clé est : blog, la valeur est : oppoic.cnblogs.com (stockée par répertoire : set directory name: key value)

get blog: Obtenez la valeur correspondant à la clé du blog

keys *: Afficher toutes les paires clé-valeur

Autres commandes couramment utilisées :

config get dir : Récupère le répertoire d'installation redis

ping : Renvoie PONG pour indiquer que le serveur redis est normal

redis-cli.exe : Saisissez la première base de données ( par défaut), redis a un total de 16 bibliothèques de 0 à 15, entrez la troisième bibliothèque redis-cli -n 2 (déjà saisie, sélectionnez 0~15 pour basculer à volonté)

quitter : quittez le programme redis

exit : quitter la fenêtre dos

flushdb : supprimer toutes les clés de la base de données actuellement sélectionnée

flushall : supprimer les bases de données dans toutes les bases de données

Plus de commandes : https://redis.io/commands

À ce stade, un serveur de cache Redis exécuté sur la machine locale a été configuré et peut être lu et écrit. Cependant, la ligne de commande n'est évidemment pas conviviale pour les utilisateurs novices. L'outil de visualisation est ici : Redis Desktop Manager (https://redisdesktop.com/download)

Comment utiliser le serveur de cache Redis sous Windows

L'arborescence. à gauche montre qu'il y en a déjà. Une fois connecté, cliquez sur Se connecter au serveur Redis en bas pour ajouter une autre connexion :

Nom : nom de la connexion, récupérez-le avec désinvolture

Hôte : adresse de l'hôte, cette machine est 127.0.0.1, saisie à distance IP correspondante

Port : Port, port par défaut du serveur Redis 6379

Auth : Mot de passe, saisissez-le s'il est défini, laissez-le vide s'il n'est pas défini

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;
        }
    }
}
Copier après la connexion

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");
Copier après la connexion

Récupérer cet enregistrement :

string key = RedisHelper.StringGet(CacheFolderEnum.Folder1, "name");
Console.WriteLine("键为name的记录对应的值:" + key);
Copier après la connexion

Supprimer cet enregistrement :

bool result = RedisHelper.StringRemove(CacheFolderEnum.Folder1, "name");
if (result)
{
    Console.WriteLine("键为name的记录删除成功");
}
else
{
    Console.WriteLine("键为name的记录删除失败");
}
Copier après la connexion

Vérifier si cet enregistrement existe :

bool ifExist = RedisHelper.KeyExists(CacheFolderEnum.Folder1, "name");
if (ifExist)
{
    Console.WriteLine("键为name的记录存在");
}
else
{
    Console.WriteLine("键为name的记录不存在");
}
Copier après la connexion

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);
Copier après la connexion

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的记录");
}
Copier après la connexion

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 !

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Comment construire le mode Cluster Redis Comment construire le mode Cluster Redis Apr 10, 2025 pm 10:15 PM

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 Comment effacer les données redis Apr 10, 2025 pm 10:06 PM

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.

Comment lire la file d'attente redis Comment lire la file d'attente redis Apr 10, 2025 pm 10:12 PM

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.

Comment utiliser la ligne de commande redis Comment utiliser la ligne de commande redis Apr 10, 2025 pm 10:18 PM

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.

Tutoriel de désinstallation de la base de données Oracle Tutoriel de désinstallation de la base de données Oracle Apr 11, 2025 pm 06:24 PM

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.

Comment définir la politique d'expiration redis Comment définir la politique d'expiration redis Apr 10, 2025 pm 10:03 PM

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.

Comment utiliser redis cluster zset Comment utiliser redis cluster zset Apr 10, 2025 pm 10:09 PM

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.

Optimisation des performances postgresql sous Debian Optimisation des performances postgresql sous Debian Apr 12, 2025 pm 08:18 PM

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

See all articles