9

ハック ページで宣伝されているように、 hedis使用して Unix ドメイン ソケット経由で redis サーバーに接続する方法を探しています。

TCP または Unix ドメイン ソケット経由で接続する:
TCP ソケットは、Redis サーバーに接続するための既定の方法です。同じマシン上のサーバーへの接続の場合、Unix ドメイン ソケットは、標準の TCP 接続よりも高いパフォーマンスを提供します。

のコンストラクターからConnectInfo、 と同様に、をdefaultConnectInfo埋める必要があるようです。ただし、形式などの詳細なしで、のみが表示されます。connectPortPortIDUnixSocketUnixSocketString

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)
4

1 に答える 1

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 ドメイン ソケット パラメータはコメント アウトされていることに注意してください。

于 2013-01-07T15:45:56.480 に答える