2013-01-07 20 views
8

szukam sposobu łączenia się z serwerem Redis poprzez gniazdo domeny Unix przy użyciu hedis, jak reklamowane na stronie hackage:Jak połączyć się z serwerem redis przez gniazdo domeny Unix przy użyciu hedis w Haskell?

Połącz przez TCP lub Unix domeny Gniazdo:
gniazda TCP są domyślny sposób , aby połączyć się z serwerem Redis. W przypadku połączeń z serwerem na tym samym komputerze gniazda domeny uniksowej oferują wyższą wydajność niż standardowe połączenie TCP .

Od konstruktorów ConnectInfo, jak również defaultConnectInfo, wydaje się, że należy wypełnić connectPort, ponieważ ma typ PortID który ma konstruktora o nazwie UnixSocket. Ale pokazuje tylko, że UnixSocket jest String, bez szczegółów formatu itp.

Jak wypełnić connectPort, aby połączyć się przez gniazdo domeny Unix? Dzięki.


UPDATE: Próbowałem go i okazało się, że nie jest to takie trudne. Poniżej jest mój cześć świat.

{-# 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) 

Odpowiedz

7

Nie jestem użytkownikiem Haskell w ogóle, a nie mogę go przetestować, ale chciałbym powiedzieć, po prostu trzeba podać ścieżkę do pliku gniazda w tym ciągu.

Zamiast:

connectPort   = PortNumber 6379 

trzeba:

connectPort   = UnixSocket "/tmp/redis.sock" 

oczywiście /tmp/redis.sock powinny być zadeklarowane w po stronie serwera Redis pliku konfiguracyjnego za pomocą następujących parametrów:

# 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 

Uwaga: domyślnie parametry gniazd domeny unix są wykluczone.

Powiązane problemy