Как подключиться к серверу 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 закомментированы.