Coder Social home page Coder Social logo

fred.rs's Introduction

Fred

License License CircleCI Crates.io API docs

A fast and ergonomic async client for Redis and Valkey.

Example

use fred::prelude::*;

#[tokio::main]
async fn main() -> Result<(), RedisError> {
  let client = RedisClient::default();
  client.init().await?;

  // convert responses to many common Rust types
  let foo: Option<String> = client.get("foo").await?;
  assert!(foo.is_none());

  client.set("foo", "bar", None, None, false).await?;
  // or use turbofish to declare response types
  println!("Foo: {:?}", client.get::<String, _>("foo").await?);

  client.quit().await?;
  Ok(())
}

See the examples for more.

Features

See the build features for more information.

Client Features

Name Default Description
transactions x Enable a Transaction interface.
enable-native-tls Enable TLS support via native-tls.
enable-rustls Enable TLS support via rustls with the default crypto backend features.
enable-rustls-ring Enable TLS support via rustls and the ring crypto backend.
vendored-openssl Enable the native-tls/vendored feature.
metrics Enable the metrics interface to track overall latency, network latency, and request/response sizes.
full-tracing Enable full tracing support. This can emit a lot of data.
partial-tracing Enable partial tracing support, only emitting traces for top level commands and network latency.
blocking-encoding Use a blocking task for encoding or decoding frames. This can be useful for clients that send or receive large payloads, but requires a multi-thread Tokio runtime.
custom-reconnect-errors Enable an interface for callers to customize the types of errors that should automatically trigger reconnection logic.
monitor Enable an interface for running the MONITOR command.
sentinel-client Enable an interface for communicating directly with Sentinel nodes. This is not necessary to use normal Redis clients behind a sentinel layer.
sentinel-auth Enable an interface for using different authentication credentials to sentinel nodes.
subscriber-client Enable a subscriber client interface that manages channel subscription state for callers.
serde-json Enable an interface to automatically convert Redis types to JSON via serde-json.
mocks Enable a mocking layer interface that can be used to intercept and process commands in tests.
dns Enable an interface that allows callers to override the DNS lookup logic.
replicas Enable an interface that routes commands to replica nodes.
default-nil-types Enable a looser parsing interface for nil values.
sha-1 Enable an interface for hashing Lua scripts.
unix-sockets Enable Unix socket support.

Interface Features

The Redis interface has many command functions and compile times can add up quickly. Interface features begin with i- and control which public interfaces are built.

Name Default Description
i-all Enable the interfaces included with a basic Redis installation. This does not include redis-stack features.
i-std x Enable the common data structure interfaces (lists, sets, streams, keys, etc).
i-acl Enable the ACL command interface.
i-client Enable the CLIENT command interface.
i-cluster Enable the CLUSTER command interface.
i-config Enable the CONFIG command interface.
i-geo Enable the GEO command interface.
i-hashes Enable the hashes (HGET, etc) command interface.
i-hyperloglog Enable the hyperloglog command interface.
i-keys Enable the main keys (GET, SET, etc) command interface.
i-lists Enable the lists (LPUSH, etc) command interface.
i-scripts Enable the scripting command interfaces.
i-memory Enable the MEMORY command interfaces.
i-pubsub Enable the publish-subscribe command interfaces.
i-server Enable the server control (SHUTDOWN, BGSAVE, etc) interfaces.
i-sets Enable the sets (SADD, etc) interface.
i-sorted-sets Enable the sorted sets (ZADD, etc) interface.
i-slowlog Enable the SLOWLOG interface.
i-streams Enable the streams (XADD, etc) interface.
i-tracking Enable a client tracking interface.
i-time-series Enable a Redis Timeseries interface.
i-redis-json Enable a RedisJSON interface.
i-redisearch Enable a RediSearch interface.
i-redis-stack Enable the Redis Stack interfaces (i-redis-json, i-time-series, etc).

Debugging Features

Name Default Description
debug-ids Enable a global counter used to differentiate commands in logs.
network-logs Enable additional TRACE logs for all frames on all sockets.

fred.rs's People

Contributors

aembke avatar khodzha avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.