SaltStack源碼分析之使用Redis模組

來源:互聯網
上載者:User

標籤:redis   saltstack   

Redis模組路徑

/usr/lib/python2.6/site-packages/salt/modules/redismod.py

Redis模組會首先檢查是否安裝有Redis的Python驅動

# -*- coding: utf-8 -*-‘‘‘Module to provide redis functionality to Salt.. versionadded:: 2014.7.0:configuration: This module requires the redis python module and uses the    following defaults which may be overridden in the minion configuration:.. code-block:: yaml    redis.host: ‘localhost‘    redis.port: 6379    redis.db: 0    redis.password: None‘‘‘# Import third party libstry:    import redis    HAS_REDIS = Trueexcept ImportError:    HAS_REDIS = False__virtualname__ = ‘redis‘
def __virtual__():    ‘‘‘    Only load this module if redis python module is installed    ‘‘‘    if HAS_REDIS:        return __virtualname__    else:        return False

只有當Redis的Python驅動安裝了才返回SaltStack的Redis模組名稱redis

def _connect(host=None, port=None, db=None, password=None):    ‘‘‘    Returns an instance of the redis client    ‘‘‘    if not host:        host = __salt__[‘config.option‘](‘redis.host‘)    if not port:        port = __salt__[‘config.option‘](‘redis.port‘)    if not db:        db = __salt__[‘config.option‘](‘redis.db‘)    if not password:        password = __salt__[‘config.option‘](‘redis.password‘)    return redis.StrictRedis(host, port, db, password)

如果沒有指定Redis執行個體的IP,連接埠和DB名稱以及密碼就去讀取設定檔。這裡使用redis的Python驅動串連Redis



def bgrewriteaof(host=None, port=None, db=None, password=None):    ‘‘‘    Asynchronously rewrite the append-only file    CLI Example:    .. code-block:: bash        salt ‘*‘ redis.bgrewriteaof    ‘‘‘    server = _connect(host, port, db, password)    return server.bgrewriteaof()

非同步重寫AOF檔案


測試

$ sudo salt ‘jialebi-qa-server‘ redis.bgrewriteaof 127.0.0.1 6379 0 jialebi-qa-server:    True
def bgsave(host=None, port=None, db=None, password=None):    ‘‘‘    Asynchronously save the dataset to disk    CLI Example:    .. code-block:: bash        salt ‘*‘ redis.bgsave    ‘‘‘    server = _connect(host, port, db, password)    return server.bgsave()

非同步儲存資料到磁碟

測試:

$ sudo salt ‘jialebi-qa-server‘ redis.bgsave 127.0.0.1 6379 0 jialebi-qa-server:    True
def config_get(pattern=‘*‘, host=None, port=None, db=None, password=None):    ‘‘‘    Get redis server configuration values    CLI Example:    .. code-block:: bash        salt ‘*‘ redis.config_get        salt ‘*‘ redis.config_get port    ‘‘‘    server = _connect(host, port, db, password)    return server.config_get(pattern)

擷取配置資訊


測試:

$ sudo salt ‘jialebi-qa-server‘ redis.config_get ‘*‘ 127.0.0.1 6379 0 jialebi-qa-server:    ----------    activerehashing:        yes    appendfsync:        everysec    appendonly:        no    auto-aof-rewrite-min-size:        67108864    auto-aof-rewrite-percentage:        100    bind:        127.0.0.1    client-output-buffer-limit:        normal 0 0 0 slave 268435456 67108864 60 pubsub 33554432 8388608 60    daemonize:        yes    databases:        16    dbfilename:        dump.rdb    dir:        /data/app_data/redis/data    hash-max-ziplist-entries:        512    hash-max-ziplist-value:        64    list-max-ziplist-entries:        512    list-max-ziplist-value:        64    logfile:        /data/app_data/redis/logs/redis.log    loglevel:        notice    lua-time-limit:        5000    masterauth:            maxclients:        10000    maxmemory:        0    maxmemory-policy:        volatile-lru    maxmemory-samples:        3    no-appendfsync-on-rewrite:        no    pidfile:        /var/run/redis.pid    port:        6379    rdbchecksum:        yes    rdbcompression:        yes    repl-ping-slave-period:        10    repl-timeout:        60    requirepass:            save:        900 1 300 10 60 10000    set-max-intset-entries:        512    slave-priority:        100    slave-read-only:        yes    slave-serve-stale-data:        yes    slaveof:            slowlog-log-slower-than:        10000    slowlog-max-len:        128    stop-writes-on-bgsave-error:        yes    timeout:        0    unixsocket:            unixsocketperm:        0    watchdog-period:        0    zset-max-ziplist-entries:        128    zset-max-ziplist-value:        64
$ sudo salt ‘jialebi-qa-server‘ redis.config_get ‘maxmemory‘ 127.0.0.1 6379 0 jialebi-qa-server:    ----------    maxmemory:        0
def config_set(name, value, host=None, port=None, db=None, password=None):    ‘‘‘    Set redis server configuration values    CLI Example:    .. code-block:: bash        salt ‘*‘ redis.config_set masterauth luv_kittens    ‘‘‘    server = _connect(host, port, db, password)    return server.config_set(name, value)

設定某個參數的值


測試

$ sudo salt ‘jialebi-qa-server‘ redis.config_set ‘maxmemory‘ 300000000  127.0.0.1 6379 0 jialebi-qa-server:    True
def dbsize(host=None, port=None, db=None, password=None):    ‘‘‘    Return the number of keys in the selected database    CLI Example:    .. code-block:: bash        salt ‘*‘ redis.dbsize    ‘‘‘    server = _connect(host, port, db, password)    return server.dbsize()

返回選擇庫的key的數量

測試:

$ sudo salt ‘jialebi-qa-server‘ redis.dbsize 127.0.0.1 6379 3jialebi-qa-server:    12502
def delete(*keys, **connection_args):    ‘‘‘    Deletes the keys from redis, returns number of keys deleted    CLI Example:    .. code-block:: bash        salt ‘*‘ redis.delete foo    ‘‘‘    # Get connection args from keywords if set    conn_args = {}    for arg in [‘host‘, ‘port‘, ‘db‘, ‘password‘]:        if arg in connection_args:            conn_args[arg] = connection_args[arg]    server = _connect(**conn_args)    return server.delete(*keys)

刪除一個KEY

def exists(key, host=None, port=None, db=None, password=None):    ‘‘‘    Return true if the key exists in redis    CLI Example:    .. code-block:: bash        salt ‘*‘ redis.exists foo    ‘‘‘    server = _connect(host, port, db, password)    return server.exists(key)

檢查一個KEY是否存在


測試

$ sudo salt ‘jialebi-qa-server‘ redis.exists foo  127.0.0.1 6379 0jialebi-qa-server:    True




本文出自 “Linux SA John” 部落格,請務必保留此出處http://john88wang.blog.51cto.com/2165294/1628981

SaltStack源碼分析之使用Redis模組

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.