[C#] Учебное пособие по использованию Redis в net core

Серия статей



Предисловие

Официальное руководство: https://www.runoob.com/redis/redis-install.html
Remote DIctionary Server (Redis Remote Dictionary Server) — это система хранения ключей и значений, написанная Сальваторе Санфилиппо.
Redis — это база данных «ключ-значение» с открытым исходным кодом, написанная на языке ANSI C, совместимая с протоколом BSD, поддерживающая сеть, может храниться в памяти и быть постоянной, а также предоставляет API на нескольких языках.
Его часто называют сервером структуры данных, поскольку значения могут быть таких типов, как строка, карта, список, наборы и отсортированные наборы.


1. Введение в Redis

Redis и другие продукты кэширования «ключ-значение» имеют следующие три характеристики:

  • Redis поддерживает сохранение данных, что позволяет хранить данные в памяти на диске и их можно снова загрузить для использования при перезапуске.
  • Redis не только поддерживает простые данные типа «ключ-значение», но также обеспечивает хранение таких структур данных, как список, набор, zset и хэш.
  • Redis поддерживает резервное копирование данных, то есть резервное копирование данных в режиме «главный-подчиненный».

1.1 Преимущества Redis

  • Чрезвычайно высокая производительность — Redis может читать со скоростью 110 000 раз в секунду и записывать со скоростью 81 000 раз в секунду.
  • Богатые типы данных. Redis поддерживает операции с типами данных Strings, Lists, Hashes, Sets и Ordered Sets для двоичных случаев.
  • Атомарный. Все операции Redis являются атомарными, и Redis также поддерживает атомарное выполнение нескольких операций после их полного объединения.
    Богатые функции — Redis также поддерживает публикацию/подписку, уведомления, срок действия ключа и другие функции.

1.2 Чем Redis отличается от других хранилищ «ключ-значение»?

  • Redis имеет более сложные структуры данных и выполняет над ними атомарные операции.Этот путь эволюции отличается от других баз данных.
  • Типы данных Redis основаны на базовых структурах данных и прозрачны для программистов без необходимости использования дополнительных абстракций.
  • Redis работает в памяти, но может сохраняться на диске, поэтому при высокоскоростном чтении и записи различных наборов данных необходимо учитывать объем памяти.Объем данных не должен превышать аппаратную память. Еще одним преимуществом баз данных в памяти является то, что по сравнению с такими же сложными структурами данных на диске работа с памятью очень проста, поэтому Redis может делать множество вещей с большой внутренней сложностью. Кроме того, с точки зрения формата диска они компактны и генерируются путем добавления, поскольку не требуют произвольного доступа.

2. Этапы установки Redis

2.1 Ссылка для скачивания

Адрес загрузки: https://github.com/tporadowski/redis/releases
Здесь мы загружаем сжатый пакет Redis-x64-xxx.zip в D:\Program Files. После распаковки переименовываем папку в redis.
Откройте папку со следующим содержимым:
Вставьте сюда описание изображения

2.2 Проверка установки

В текущем каталоге откройте окно cmd и начните работу:

redis-server.exe redis.windows.conf

Если вам нужно удобство, вы можете добавить путь Redis к системной переменной среды, чтобы вам не приходилось вводить путь снова. Следующий файл redis.windows.conf можно опустить. Если он опущен, будет включен файл по умолчанию. . После ввода отобразится следующий интерфейс:
Вставьте сюда описание изображения
В это время откройте другое окно cmd. Не закрывайте исходное, иначе вы не сможете получить доступ к серверу.
Перейдите в каталог redis и запустите:

redis-cli.exe -h 127.0.0.1 -p 6379

Установите пары ключ-значение:

установить myKey abc

Получите пары ключ-значение:

получить мой ключ

Вставьте сюда описание изображения
Успех теста

3. Измените пароль учетной записи в Redis.

Запустить службу redis-server.exe redis.windows.conf
Запустить клиент redis-cli.exe
Посмотреть конфигурацию пароля get requirepass
Установить конфигурацию пароля set requirepass system //Установить пароль для системы
Выйти выйти
и снова войти в систему - Запустить клиент redis-cli.exe
Войдите снова - введите пароль системы аутентификации
Вставьте сюда описание изображения

4. Redis написан как служба Windows.

Кажется очень хлопотно каждый раз запускать окно cmd.Теперь мы пишем его как службу Windows для удобства запуска.

redis-server --service-install redis.windows.conf
Вставьте сюда описание изображения
Вставьте сюда описание изображения

5. .net core — используйте CSRedisCore для управления Redis.

ServiceStack.Redis — коммерческая версия, а бесплатная версия имеет ограничения;
StackExchange.Redis — бесплатная версия, но есть проблемы с ядром, работающим на .NETCore, и частые таймауты, которые пока не могут быть решены;
CSRedis начал поддержка .NETCore в 2016 году и продолжается по сей день, достигая низкого порога, высокой производительности и расширенных возможностей разделения. .NETCore redis-cli SDK;
в обновлении версии v3.0 все имена методов в CSRedis были скорректированы, чтобы сделать их соответствует redis-cli Если вы знакомы с redis-cli Что касается команд, CSRedis можно использовать напрямую, что значительно снижает стоимость обучения.
Вставьте сюда описание изображения
Создайте экземпляр базы данных кэша RedisServer и подключение.

using CSRedis;
using YS.Common;

namespace YS.Core
{
    
    
    /// <summary>
    /// 创建RedisServer缓存型数据库
    /// 说明:需要读取配置文件,里面有连接字符串
    /// </summary>
    public static class RedisServer
    {
    
    
        public static CSRedisClient? Cache;
        public static CSRedisClient? Sequence;
        public static CSRedisClient? Session;

        public static void Initalize()
        {
    
    
            Cache = new CSRedisClient(AppSettings.Configuration["RedisServer:Cache"]);
            Sequence = new CSRedisClient(AppSettings.Configuration["RedisServer:Sequence"]);
            Session = new CSRedisClient(AppSettings.Configuration["RedisServer:Session"]);
        }
    }
}

Вспомогательный класс RedisCache.cs, отвечающий за выполнение операций


using SqlSugar;
using System;
using System.Collections.Generic;

namespace YS.Core
{
    
    
    /// <summary>
    /// Redis操作方法
    /// 说明:添加键值对、添加json,以及修改删除等
    /// </summary>
    public class RedisCache : ICacheService
    {
    
    
        public void Add<V>(string key, V value)
        {
    
    
            RedisServer.Cache.Set(key, value);
        }

        public void Add<V>(string key, V value, int cacheDurationInSeconds)
        {
    
    
            RedisServer.Cache.Set(key, value, cacheDurationInSeconds);
        }

        public bool ContainsKey<V>(string key)
        {
    
    
            return RedisServer.Cache.Exists(key);
        }

        public V Get<V>(string key)
        {
    
    
            return RedisServer.Cache.Get<V>(key);
        }

        public IEnumerable<string> GetAllKey<V>()
        {
    
    
            return RedisServer.Cache.Keys("Cache:SqlSugarDataCache.*");
        }

        public V GetOrCreate<V>(string cacheKey, Func<V> create, int cacheDurationInSeconds = int.MaxValue)
        {
    
    
            if (ContainsKey<V>(cacheKey))
            {
    
    
                return Get<V>(cacheKey);
            }
            else
            {
    
    
                var result = create();
                Add(cacheKey, result, cacheDurationInSeconds);
                return result;
            }
        }

        public void Remove<V>(string key)
        {
    
    
            RedisServer.Cache.Del(key.Remove(0, 6));
        }
    }
}

рекомендация

отblog.csdn.net/youcheng_ge/article/details/133072163