Серия статей
Каталог статей
Предисловие
Официальное руководство: 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));
}
}
}