Xia*_*Jia 8 haskell connection-string unix-socket redis
我正在寻找如何使用hedis通过Unix域套接字连接到redis服务器,如hackage页面中所宣传的那样:
通过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)
Run Code Online (Sandbox Code Playgroud)
我根本不是Haskell用户,我无法测试它,但我会说你必须在这个字符串中提供套接字文件的路径.
代替:
connectPort = PortNumber 6379
Run Code Online (Sandbox Code Playgroud)
你将会拥有:
connectPort = UnixSocket "/tmp/redis.sock"
Run Code Online (Sandbox Code Playgroud)
当然,应使用以下参数在服务器端Redis配置文件中声明/tmp/redis.sock:
# 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
Run Code Online (Sandbox Code Playgroud)
请注意,默认情况下,unix域套接字参数已注释掉.
| 归档时间: |
|
| 查看次数: |
8904 次 |
| 最近记录: |