Buscar pacotes, repositórios e categorias de apps

Detalhes do pacotev1.2.0

resp_client

Um cliente RESP (Redis Serialization Protocol) para Dart. Ele fornece uma API de baixo nível e uma API de alto nível para executar comandos Redis.

AndroidiOSLinuxmacOSWindows
Downloads em 30 dias
115 mil
Curtidas
7
Pontos Pub
140

Instalar pacote

flutter pub add resp_client

Visão geral do pacote

Orientação gerada a partir de informações públicas. Apenas para referência.

Um pacote Dart que implementa o Redis Serialization Protocol (RESP) para interagir com bancos de dados Redis. Oferece APIs de baixo e alto nível para enviar comandos Redis, permitindo comunicação eficiente com servidores Redis. Projetado para desenvolvedores que precisam de controle direto sobre mensagens RESP ou uma interface simplificada para operações comuns, suporta todas as plataformas principais, incluindo Android, iOS, Linux, macOS e Windows. O pacote é leve e adequado para aplicações que exigem integração rápida e confiável com o Redis.

Casos de uso

  • Conectando ao Redis a partir de aplicativos Flutter
  • Executar comandos Redis programaticamente
  • Construindo serviços de dados em tempo real
  • Integração do Redis em sistemas backend
  • Manipulação de mensagens de publicação/subscrição do Redis

Principais recursos

  • Manipulação de mensagens RESP de baixo nível
  • API de comando de alto nível
  • Suporte multiplataforma
  • Leve e eficiente
  • Suporta pooling de conexões Redis

Indicado para

  • Desenvolvedores Dart trabalhando com Redis
  • Aplicativos Flutter que precisam de integração com Redis
  • Serviços de backend usando Redis
  • Desenvolvedores de aplicativos em tempo real
  • Sistemas que exigem armazenamento de dados de alto desempenho

Considerações

  • Requer tratamento manual de erros em respostas RESP
  • Documentação limitada em comparação com bibliotecas de nível superior
  • Mais adequado para desenvolvedores familiarizados com o protocolo RESP
  • Não ideal para casos de uso complexos do Redis sem abstração adicional
  • Pode ser necessário wrappers personalizados para recursos avançados do Redis

README original

Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.

resp_client

A RESP (REdis Serialization Protocol) client for Dart. This package contains 3 libraries. resp_server implements the connectionn to the server, resp_client implements the Redis serialization protocol. resp_commands provides implementations of Redis commands in differents levels of convenience from low-level to easy-to-use.

3 Building blocks

There 3 fundamental building block:

  • RespServerConnection - A connection to a RESP server
  • RespClient - A RESP client connected to a RESP server implementing the request/response model and the RESP types
  • RespCommandsTierN - Implementation of Redis commands

Usage

Initialization and cleanup


import 'package:resp_client/resp_client.dart';
import 'package:resp_client/resp_commands.dart';
import 'package:resp_client/resp_server.dart';

void main(List<String> args) async {
  // create a server connection using sockets
  final server = await connectSocket('localhost');

  // create a client using the server connection
  final client = RespClient(server);

  // create commands of tier 2 using the client
  final commands = RespCommandsTier2(client);

  // execute some commands...

  // close connection to the server
  await server.close();
}

RESP Types

The RESP types are implemented by the classes:

  • RespSimpleString - payload type String
  • RespBulkString - payload type String?
  • RespInteger - payload type int
  • RespArray - payload type List<RespType>?
  • RespError - payload type String

All classes extends the class RestType. You can access the payload of a type using the getter payload.

The class RespType provides methods to convert to a concrete type and getters to check if it is a concrete type.

Use commands

Not all Redis commands are implemented in all tiers yet. Nevertheless, it is possible to execute very Redis command using tier 0. You can create a command object of every tier using a RespClient. It is allowed to create multiple command objects on the same client. Command objects of tier 1 and 2 provides a getter to the underlying tier.

Tier 0

This is the most basic and flexible tier. You can execute every Redis command using this tier. You have to provide a list of elements. All elements are converted to bulk strings using toString(). The result is a RespType. It is up to the user to convert the result to a concrete RESP type.


import 'package:resp_client/resp_server.dart';
import 'package:resp_client/resp_client.dart';
import 'package:resp_client/resp_commands.dart';

void main(List<String> args) async {

  // ... setup connection and client
  
  // create commands using the client
  final commands = RespCommandsTier0(client);

  // execute a command
  final result = await commands.execute(['SET', 'myKey', 'myValue', 'NX']);
  print(result.payload);

  // ... close connection
}

Tier 1

Commands of tier 1 provide some convenience on the parameter side. The user no longer has to build the commands from ground up. Instead, the commands are calle in a more Dart-like style. The result is always a RespType like in tier 0.


import 'package:resp_client/resp_server.dart';
import 'package:resp_client/resp_client.dart';
import 'package:resp_client/resp_commands.dart';

void main(List<String> args) async {

  // ... setup connection and client
  
  // create commands using the client
  final commands = RespCommandsTier1(client);

  // Execute the GET command. You don't have to build the command from ground up.
  // The result is a RespType. This is flexible but you have to convert to the
  // concrete type yourself.
  final result = await commands.get('mKey', 'myValue', mode: SetMode.onlyIfNotExists);
  print(result.toBulkString().payload);

  // ... close connection
}

Tier 2

Commands of tier 2 provide the same convenience on the parameter side as tier 1 commands. Additionally, the result of a command is converted for easy handling.

To convert the result, assumptions are made. As an example the GET command returns a bulk string. Thus, the implementation tries to convert the result from a RespType to a RespBulkString and then return the payload of type String?. But, if a GET command is executed as part of a transaction, the result is a RespSimpleString and the payload has different meaning. Thus, the command will fail. To get out of this, use the same command of the underlying tier.


void main(List<String> args) async {

  // ... setup connection and client
  
  // create commands using the client
  final commands = RespCommandsTier2(client);

  // Like tier 1 commands but the result is already convert.
  // In this case, result is of type String?.
  final result = await commands.get('mKey', 'myValue', mode: SetMode.onlyIfNotExists);
  print(result)

  // ... close connection
}

Categorias

Repositório-fonte

Projetos que usam este pacote

Ainda não há dados.

Rankings