Module jumpscale.tools.redis.redis

Expand source code
from jumpscale.loader import j
from jumpscale.core.base import Base, fields
import shutil


class RedisServer(Base):

    host = fields.String(default="127.0.0.1")
    port = fields.Integer(default=6379)

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self._cmd = j.tools.startupcmd.get(f"redis_{self.instance_name}")

    @property
    def cmd(self):
        self._cmd.start_cmd = f"redis-server --bind {self.host} --port {self.port}"
        self._cmd.ports = [self.port]
        return self._cmd

    @property
    def installed(self) -> bool:
        """check if redis server is installed

        Returns:
            bool: True if redis server is installed
        """
        return shutil.which("redis-server")

    def start(self):
        """start redis server in tmux
        """
        # Port is not busy (Redis is not started)
        if not j.sals.nettools.tcp_connection_test(self.host, self.port, timeout=1):
            self.cmd.start()

    def stop(self):
        """stop redis server
        """
        self.cmd.stop(force=True)

    def restart(self):
        """restart redis server
        """
        self.stop()
        self.start()

Classes

class RedisServer (*args, **kwargs)

A simple attribute-based namespace.

SimpleNamespace(**kwargs)

base class implementation for any class with fields which supports getting/setting raw data for any instance fields.

any instance can have an optional name and a parent.

class Person(Base):
    name = fields.String()
    age = fields.Float()

p = Person(name="ahmed", age="19")
print(p.name, p.age)

Args

parent_ : Base, optional
parent instance. Defaults to None.
instance_name_ : str, optional
instance name. Defaults to None.
**values
any given field values to initiate the instance with
Expand source code
class RedisServer(Base):

    host = fields.String(default="127.0.0.1")
    port = fields.Integer(default=6379)

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self._cmd = j.tools.startupcmd.get(f"redis_{self.instance_name}")

    @property
    def cmd(self):
        self._cmd.start_cmd = f"redis-server --bind {self.host} --port {self.port}"
        self._cmd.ports = [self.port]
        return self._cmd

    @property
    def installed(self) -> bool:
        """check if redis server is installed

        Returns:
            bool: True if redis server is installed
        """
        return shutil.which("redis-server")

    def start(self):
        """start redis server in tmux
        """
        # Port is not busy (Redis is not started)
        if not j.sals.nettools.tcp_connection_test(self.host, self.port, timeout=1):
            self.cmd.start()

    def stop(self):
        """stop redis server
        """
        self.cmd.stop(force=True)

    def restart(self):
        """restart redis server
        """
        self.stop()
        self.start()

Ancestors

  • Base
  • types.SimpleNamespace

Instance variables

var cmd
Expand source code
@property
def cmd(self):
    self._cmd.start_cmd = f"redis-server --bind {self.host} --port {self.port}"
    self._cmd.ports = [self.port]
    return self._cmd
var host

getter method this property

will call _get_value, which would if the value is already defined and will get the default value if not

Returns

any
the field value
Expand source code
def getter(self):
    """
    getter method this property

    will call `_get_value`, which would if the value is already defined
    and will get the default value if not

    Returns:
        any: the field value
    """
    return self._get_value(name, field)
var installed : bool

check if redis server is installed

Returns

bool
True if redis server is installed
Expand source code
@property
def installed(self) -> bool:
    """check if redis server is installed

    Returns:
        bool: True if redis server is installed
    """
    return shutil.which("redis-server")
var port

getter method this property

will call _get_value, which would if the value is already defined and will get the default value if not

Returns

any
the field value
Expand source code
def getter(self):
    """
    getter method this property

    will call `_get_value`, which would if the value is already defined
    and will get the default value if not

    Returns:
        any: the field value
    """
    return self._get_value(name, field)

Methods

def restart(self)

restart redis server

Expand source code
def restart(self):
    """restart redis server
    """
    self.stop()
    self.start()
def start(self)

start redis server in tmux

Expand source code
def start(self):
    """start redis server in tmux
    """
    # Port is not busy (Redis is not started)
    if not j.sals.nettools.tcp_connection_test(self.host, self.port, timeout=1):
        self.cmd.start()
def stop(self)

stop redis server

Expand source code
def stop(self):
    """stop redis server
    """
    self.cmd.stop(force=True)

Inherited members