linux测试模块redis,SaltStack源码分析之使用Redis模块

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 libs

try:

import redis

HAS_REDIS = True

except 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模块名称redisdef _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:

Truedef 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:

Truedef 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:

0def 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:

Truedef 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 3

jialebi-qa-server:

12502def 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)

删除一个KEYdef 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 0

jialebi-qa-server:

True

def expire(key, seconds, host=None, port=None, db=None, password=None):

'''

Set a keys time to live in seconds

CLI Example:

.. code-block:: bash

salt '*' redis.expire foo 300

'''

server = _connect(host, port, db, password)

return server.expire(key, seconds)

设置一个KEY的过期时间

测试:$ sudo salt 'jialebi-qa-server' redis.expire foo 300 127.0.0.1 6379 0

jialebi-qa-server:

True

def expireat(key, timestamp, host=None, port=None, db=None, password=None):

'''

Set a keys expire at given UNIX time

CLI Example:

.. code-block:: bash

salt '*' redis.expireat foo 1400000000

'''

server = _connect(host, port, db, password)

return server.expireat(key, timestamp)

设置一个KEY在给定的时间过期$ sudo salt 'jialebi-qa-server' redis.expireat foo 1431532800 127.0.0.1 6379 0

jialebi-qa-server:

True

def flushall(host=None, port=None, db=None, password=None):

'''

Remove all keys from all databases

CLI Example:

.. code-block:: bash

salt '*' redis.flushall

'''

server = _connect(host, port, db, password)

return server.flushall()

清空所有数据库

def flushdb(host=None, port=None, db=None, password=None):

'''

Remove all keys from the selected database

CLI Example:

.. code-block:: bash

salt '*' redis.flushdb

'''

server = _connect(host, port, db, password)

return server.flushdb()

清楚选定库的所有KEY

def get_key(key, host=None, port=None, db=None, password=None):

'''

Get redis key value

CLI Example:

.. code-block:: bash

salt '*' redis.get_key foo

'''

server = _connect(host, port, db, password)

return server.get(key)

获取一个KEY的值$ sudo salt 'jialebi-qa-server' redis.get_key foo 127.0.0.1 6379 0

jialebi-qa-server:

test

def hget(key, field, host=None, port=None, db=None, password=None):

'''

Get specific field value from a redis hash, returns dict

CLI Example:

.. code-block:: bash

salt '*' redis.hget foo_hash bar_field

'''

server = _connect(host, port, db, password)

return server.hget(key, field)

获取一个Redis哈希的指定字段的值

测试:$ sudo salt 'jialebi-qa-server' redis.hget myhash field1 127.0.0.1 6379 0

jialebi-qa-server:

foo

def hgetall(key, host=None, port=None, db=None, password=None):

'''

Get all fields and values from a redis hash, returns dict

CLI Example:

.. code-block:: bash

salt '*' redis.hgetall foo_hash

'''

server = _connect(host, port, db, password)

return server.hgetall(key)

获取一个哈希的所有字段

测试:$ sudo salt 'jialebi-qa-server' redis.hgetall myhash 127.0.0.1 6379 0

jialebi-qa-server:

----------

field1:

foo

def info(host=None, port=None, db=None, password=None):

'''

Get information and statistics about the server

CLI Example:

.. code-block:: bash

salt '*' redis.info

'''

server = _connect(host, port, db, password)

return server.info()

获取服务器信息$ sudo salt 'jialebi-qa-server' redis.info 127.0.0.1 6379 0

jialebi-qa-server:

----------

aof_current_rewrite_time_sec:

-1

aof_enabled:

0

aof_last_bgrewrite_status:

ok

aof_last_rewrite_time_sec:

2

aof_rewrite_in_progress:

0

aof_rewrite_scheduled:

0

arch_bits:

64

blocked_clients:

0

client_biggest_input_buf:

0

client_longest_output_list:

0

connected_clients:

3

connected_slaves:

0

db0:

----------

expires:

1

keys:

3

db1:

----------

expires:

0

keys:

10

db2:

----------

expires:

0

keys:

357

db3:

----------

expires:

0

keys:

12502

db4:

----------

expires:

0

keys:

5173

evicted_keys:

0

expired_keys:

21366

gcc_version:

4.4.7

instantaneous_ops_per_sec:

0

keyspace_hits:

11673041

keyspace_misses:

115559

latest_fork_usec:

21412

loading:

0

lru_clock:

226477

mem_allocator:

jemalloc-3.2.0

mem_fragmentation_ratio:

0.46

multiplexing_api:

epoll

os:

Linux 2.6.32-431.1.2.0.1.el6.x86_64 x86_64

process_id:

1481

pubsub_channels:

0

pubsub_patterns:

0

rdb_bgsave_in_progress:

0

rdb_changes_since_last_save:

0

rdb_current_bgsave_time_sec:

-1

rdb_last_bgsave_status:

ok

rdb_last_bgsave_time_sec:

1

rdb_last_save_time:

1428327615

redis_git_dirty:

0

redis_git_sha1:

0

redis_mode:

standalone

redis_version:

2.6.9

rejected_connections:

0

role:

master

run_id:

62ec3260542f9bdaa1ead635b1ab4cda55991fd6

tcp_port:

6379

total_commands_processed:

14470609

total_connections_received:

1100003

uptime_in_days:

194

uptime_in_seconds:

16781078

used_cpu_sys:

94220.77

used_cpu_sys_children:

1863.2

used_cpu_user:

32682.53

used_cpu_user_children:

6544.72

used_memory:

65337760

used_memory_human:

62.31M

used_memory_lua:

31744

used_memory_peak:

65875152

used_memory_peak_human:

62.82M

used_memory_rss:

30359552

def keys(pattern='*', host=None, port=None, db=None, password=None):

'''

Get redis keys, supports glob style patterns

CLI Example:

.. code-block:: bash

salt '*' redis.keys

salt '*' redis.keys test*

'''

server = _connect(host, port, db, password)

return server.keys(pattern)

获取所有的KEY

测试:$ sudo salt 'jialebi-qa-server' redis.keys '*'  127.0.0.1 6379 0

jialebi-qa-server:

- myhash

- foo

- foot

$ sudo salt 'jialebi-qa-server' redis.keys 'foo*'  127.0.0.1 6379 0

jialebi-qa-server:

- foo

- foot

def key_type(key, host=None, port=None, db=None, password=None):

'''

Get redis key type

CLI Example:

.. code-block:: bash

salt '*' redis.type foo

'''

server = _connect(host, port, db, password)

return server.type(key)

获取一个KEY的类型

测试:$ sudo salt 'jialebi-qa-server' redis.key_type foo 127.0.0.1 6379 0

jialebi-qa-server:

string

$ sudo salt 'jialebi-qa-server' redis.key_type myhash 127.0.0.1 6379 0

jialebi-qa-server:

hash

def lastsave(host=None, port=None, db=None, password=None):

'''

Get the UNIX time in seconds of the last successful save to disk

CLI Example:

.. code-block:: bash

salt '*' redis.lastsave

'''

server = _connect(host, port, db, password)

return int(server.lastsave().strftime("%s"))

获取指定库上次保存数据到磁盘的UNIX时间戳,以秒计算

这里使用strftime()将一个时间元组转换成秒In [27]: import time,redis

In [28]: conn=redis.StrictRedis('127.0.0.1',6379,0)

In [29]: conn.lastsave()

Out[29]: datetime.datetime(2015, 4, 7, 10, 26, 57)

In [30]: conn.lastsave().strftime('%s')

Out[30]: '1428373617'

测试:$ sudo salt 'jialebi-qa-server' redis.lastsave 127.0.0.1 6379 0

jialebi-qa-server:

1428374519

def llen(key, host=None, port=None, db=None, password=None):

'''

Get the length of a list in Redis

CLI Example:

.. code-block:: bash

salt '*' redis.llen foo_list

'''

server = _connect(host, port, db, password)

return server.llen(key)

获取一个Redis列表的长度

测试:$ sudo salt 'jialebi-qa-server' redis.llen mylist 127.0.0.1 6379 0

jialebi-qa-server:

3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值