Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

Using Redis module for SaltStack source code analysis

2025-03-28 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Servers >

Share

Shulou(Shulou.com)06/03 Report--

Redis module path

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

The Redis module will first check if Redis's Python driver is installed.

#-*-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

The Redis module name redis of SaltStack is returned only when the Python driver of Redis is installed.

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)

If the IP, port and DB name and password of the Redis instance are not specified, the configuration file is read. Here you use the Python driver of redis to connect to 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 ()

Rewrite AOF files asynchronously

test

$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 ()

Save data to disk asynchronously

Test:

$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)

Get configuration information

Test:

$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 000 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)

Set the value of a parameter

test

$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 ()

Returns the number of key selected for the library

Test:

$sudo salt 'jialebi-qa-server' redis.dbsize 127.0.0.1 6379 3jialebi-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_ Arg [Arg] = connection_ args [Arg] server = _ connect (* * conn_args) return server.delete (* keys)

Delete a 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)

Check whether a KEY exists

test

$sudo salt 'jialebi-qa-server' redis.exists foo 127.0.0.1 6379 0jialebi-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)

Set the expiration time of a KEY

Test:

$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 expireat given UNIX time CLI Example:. Code-block:: bash salt'* 'redis.expireat foo 1400000000' 'server = _ connect (host, port, db, password) return server.expireat (key, timestamp)

Set a KEY to expire at a given time

$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 ()

Clear all databases

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 ()

Know all the KEY of the selected library

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)

Get the value of a 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)

Gets the value of the specified field of a Redis hash

Test:

$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)

Get all the fields of a hash

Test:

$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 ()

Get server information

$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 percent 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)

Get all the KEY

Test:

$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)

Get the type of a KEY

Test:

$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"))

Gets the UNIX timestamp of the last time the specified library saved data to disk, in seconds

Here you use strftime () to convert a time tuple into seconds

In [27]: import time,redisIn [28]: conn=redis.StrictRedis ('127.0.0.1) conn.lastsave () Out [29]: datetime.datetime (2015, 4, 7, 10, 26, 57) In [30]: conn.lastsave (). Strftime ('% s') Out [30]: '1428373617'

Test:

$sudo salt 'jialebi-qa-server' redis.lastsave 127.0.0.1 6379 0jialebi-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)

Get the length of a Redis list

Test:

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

Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.

Views: 0

*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.

Share To

Servers

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report