hask-redis-mux: A RESP protocol implementation and multiplexed Redis client library

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain] [Publish]

Warnings:

hask-redis-mux provides a full RESP protocol parser, Redis client with TLS support, CRC16 hash slot computation, and a multiplexed Redis Cluster client with connection pooling and automatic topology discovery.


[Skip to Readme]

Properties

Versions 0.1.0.0, 0.1.0.0, 0.1.0.1
Change log CHANGELOG.md
Dependencies attoparsec (>=0.14 && <0.15), base (>=4.19 && <4.22), bytestring (>=0.12 && <0.13), containers (>=0.6 && <0.8), crypton-x509-system (>=1.6 && <1.7), data-default-class (>=0.1 && <0.3), dns (>=4.2 && <4.3), file-embed (>=0.0.16 && <0.1), hask-redis-mux, iproute (>=1.7 && <1.8), mtl (>=2.3 && <2.4), network (>=3.2 && <3.3), stm (>=2.5 && <2.6), text (>=2.1 && <2.2), time (>=1.12 && <1.13), tls (>=2.1 && <2.2), vector (>=0.13 && <0.14) [details]
License MIT
Author Seth Speaks
Maintainer sspeaks610@gmail.com
Category Network
Home page https://github.com/sspeaks/redis-client
Bug tracker https://github.com/sspeaks/redis-client/issues
Source repo head: git clone https://github.com/sspeaks/redis-client.git
Uploaded by sspeaks at 2026-02-16T20:03:32Z

library hask-redis-mux

Modules

[Index] [Quick Jump]

  • Database
    • Database.Redis
      • Database.Redis.Client
      • Database.Redis.Cluster
        • Database.Redis.Cluster.Client
        • Database.Redis.Cluster.Commands
        • Database.Redis.Cluster.ConnectionPool
        • Database.Redis.Cluster.SlotMapping
      • Database.Redis.Command
      • Database.Redis.Connector
      • Database.Redis.Crc16
      • Database.Redis.FromResp
      • Internal
        • Database.Redis.Internal.MultiplexPool
        • Database.Redis.Internal.Multiplexer
      • Database.Redis.RedisError
      • Database.Redis.Resp
      • Database.Redis.Standalone

library hask-redis-mux:redis

Modules

[Index] [Quick Jump]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


Readme for hask-redis-mux-0.1.0.0

[back to package description]

hask-redis-mux

Hackage CI

A multiplexed Redis client library for Haskell with full RESP protocol support, Redis Cluster topology discovery, connection pooling, and TLS.

Features

Installation

Add to your .cabal file:

build-depends: hask-redis-mux >= 0.1 && < 0.2

Quick Start

{-# LANGUAGE OverloadedStrings #-}
import Database.Redis

main :: IO ()
main = do
  -- Connect to localhost:6379, run commands, auto-close
  result <- runRedis defaultStandaloneConfig $ do
    set "greeting" "hello"
    (val :: ByteString) <- get "greeting"
    return val
  print result  -- "hello"

Typed Returns with FromResp

Commands return polymorphic types via the FromResp typeclass. Just add a type annotation and the response is parsed automatically:

runRedis defaultStandaloneConfig $ do
  set "counter" "42"

  (n :: Integer)      <- get "counter"   -- 42
  (bs :: ByteString)  <- get "counter"   -- "42"
  (mt :: Maybe Text)  <- get "missing"   -- Nothing
  (ok :: Bool)        <- set "k" "v"     -- True (from +OK)

Use bracket-style functions for exception-safe resource management:

-- Standalone
withStandaloneClient config $ \client ->
  runStandaloneClient client $ do
    set "key" "value"
    get "key"

-- Cluster
withClusterClient clusterConfig connector $ \client ->
  runClusterCommandClient client $ do
    set "key" "value"
    get "key"

Custom Configuration

import Database.Redis

main :: IO ()
main = do
  let config = StandaloneConfig
        { standaloneNodeAddress     = NodeAddress "redis.example.com" 6379
        , standaloneConnector       = clusterPlaintextConnector
        , standaloneMultiplexerCount = 4  -- 4 multiplexed connections
        }
  withStandaloneClient config $ \client ->
    runStandaloneClient client $ do
      set "key" "value"

Documentation

License

MIT — see LICENSE for details.