How to Use memcached on different port

navin kumar picture navin kumar · Aug 14, 2013 · Viewed 9.4k times · Source
i have excuted c:\memcached>memcached -l 0.0.0.0:11211,0.0.0.0:11212
getaddrinfo(): No such host is known.
failed to listen on TCP port 11211: No error.
and that was the response i got
if i will execute c:\memcached>memcached -p 11211 -d
memcached: option requires an argument -- d
Illegal argument "?" this was the response i got. so i tried these following commands
c:\memcached>memcached -p 11211 -d start
c:\memcached>memcached -p 11212 -d start

but still its listening to port 11211 not on 11212.why?

Answer

Petesh picture Petesh · Aug 14, 2013

memcached for windows will not listen on multiple ports with the same instance, you will need multiple instances of the service to get it to run as a service on different ports.

To accomplish this, you will need to use a different mechanism for installing the service, rather than the memcached -d install mechanism.

We can use sc to accomplish this. All these commands will need to be run from an elevated command prompt.

sc create "Memcached11211" binPath= "C:\memcached\memcached.exe -d runservice -p 11211"  DisplayName= "Memcached11211" start= auto
sc create "Memcached11212" binPath= "C:\memcached\memcached.exe -d runservice -p 11212"  DisplayName= "Memcached11212" start= auto

Then we start them:

C:\memcached>sc start Memcached11211

SERVICE_NAME: Memcached11211
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 4  RUNNING
                                (STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0
        PID                : 5412
        FLAGS              :

C:\memcached>sc start Memcached11212

SERVICE_NAME: Memcached11212
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 4  RUNNING
                                (STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0
        PID                : 7976
        FLAGS              :

C:\memcached>netstat -an | grep 112
File STDIN:
  TCP    0.0.0.0:11211          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:11212          0.0.0.0:0              LISTENING
  TCP    [::]:11211             [::]:0                 LISTENING
  TCP    [::]:11212             [::]:0                 LISTENING
  UDP    0.0.0.0:11211          *:*
  UDP    0.0.0.0:11211          *:*
  UDP    [::]:11211             *:*
  UDP    [::]:11211             *:*�

Note however that as configured, the udp port is still 11211, so it would need to be changed to ensure that udp can be used as well for both services.

You would add a -u 11211 and -u 11212 to the sc configuration lines.

To stop and individual memcached service you would use:

sc stop memcached11211
sc stop memcached11212

to remove the services do:

sc delete memcached11211
sc delete memcached11212

If however you're just trying it out on different ports then just use multiple cmd windows and run it that way.