2013-01-07 4 views
8

私はhackageページで宣伝として、hedisを使用してUnixドメインソケット経由でRedisのサーバーへの接続方法を探しています:Haskellでhedisを使用してUnixドメインソケット経由でRedisサーバーに接続するには?

TCPまたはUnixドメインソケット経由で接続します。
TCPソケットがあります既定の方法 をRedisサーバーに接続します。同一の マシン上のサーバに接続する場合、Unixドメインソケットは、標準TCP接続の よりも高いパフォーマンスを提供します。 ConnectInfoのコンストラクタだけでなく、defaultConnectInfoから

は、UnixSocketという名前のコンストラクタを持つPortIDを入力しているので、我々は、connectPortを記入すべきであると思われます。しかしはStringで、フォーマットなどの詳細は表示されません。

Unlockドメインソケット経由で接続するには、connectPortに記入するにはどうすればよいですか?ありがとう。


UPDATE:私はそれを試してみたし、それは難しいことではありません発見しました。以下は私のこんにちは世界です。

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

答えて

7

私はすべてのHaskellのユーザーではない、と私はそれをテストすることはできませんが、私はあなただけで、この文字列のソケットファイルのパスを提供しなければならないと言うでしょう。

の代わりに:

connectPort   = PortNumber 6379 

あなたが持っているでしょう。もちろん

connectPort   = UnixSocket "/tmp/redis.sock" 

を、/tmp/redis.sockは、次のパラメータを使用して、サーバー側の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ドメインソケットパラメータはコメントアウトされています。

関連する問題