Как подключиться к серверу redis через сокет домена Unix с помощью hedis в Haskell?

Я ищу, как подключиться к серверу redis через сокет домена Unix с помощью в HEDIS, как рекламируется на странице здесь:

подключение через сокет домена TCP или Unix:
Сокеты TCP являются по умолчанию для подключения к серверу Redis. Для подключений к серверу на том же машина, сокеты домена Unix предлагают более высокую производительность, чем стандартное подключение TCP.

от строителей ConnectInfo, а также defaultConnectInfo, кажется, мы должны заполнить connectPort, так как он имеет тип PortID, который имеет конструктор по имени UnixSocket. Но это только показывает UnixSocket это String, без деталей формата и т. д.

Итак, как заполнить connectPort для подключения через сокет Unix? Спасибо.


обновление: я попробовал и обнаружил, что это не так сложно. Ниже мой привет мир.

{-# LANGUAGE OverloadedStrings #-}
import Control.Monad.Trans
import Database.Redis

myConnectInfo :: ConnectInfo
myConnectInfo = defaultConnectInfo { connectPort = UnixSocket "/tmp/redis.sock" }

main :: IO ()
main = do
    conn <- connect myConnectInfo
    runRedis conn $ do
        set "hello" "hello"
        set "world" "world"
        hello <- get "hello"
        world <- get "world"
        liftIO $ print (hello,world)

1 ответов


Я вообще не пользователь Haskell, и я не могу его проверить, но я бы сказал, что вам просто нужно указать путь к файлу сокета в этой строке.

вместо:

connectPort           = PortNumber 6379

вы бы:

connectPort           = UnixSocket "/tmp/redis.sock"

конечно, /tmp / redis.носок должен быть объявлен в файле конфигурации Redis на стороне сервера, используя следующие параметры:

# Specify the path for the unix socket that will be used to listen for
# incoming connections. There is no default, so Redis will not listen
# on a unix socket when not specified.
#
unixsocket /tmp/redis.sock
unixsocketperm 755

обратите внимание, что по умолчанию параметры сокета домена unix закомментированы.