redis INFO コマンドは次のような文字列を返しますredis_version:2.2.14\r\nredis_git_sha1:00000000\r\nredis_git_dirty:0\r\narch_bits:32
文字列を変換して、次のような JSON オブジェクトを取得するにはどうすればよいですか
{
"redis_version":"x",
"key2":"value"
}
redis INFO コマンドは次のような文字列を返しますredis_version:2.2.14\r\nredis_git_sha1:00000000\r\nredis_git_dirty:0\r\narch_bits:32
文字列を変換して、次のような JSON オブジェクトを取得するにはどうすればよいですか
{
"redis_version":"x",
"key2":"value"
}
なぜそれをしたいのかわかりませんが、簡単な例を次に示します。
function parseInfo( info ) {
var lines = info.split( "\r\n" );
var obj = { };
for ( var i = 0, l = info.length; i < l; i++ ) {
var line = lines[ i ];
if ( line && line.split ) {
line = line.split( ":" );
if ( line.length > 1 ) {
var key = line.shift( );
obj[ key ] = line.join( ":" );
}
}
}
return obj;
}
node-redis-infoを使用できます:
npm install redis-info
使用法:
> var parser = require('redis-info');
undefined
> var info = parser.parse(redis_info_str);
undefined
> info.fields.redis_version
2.6.1
> info.startWith('pubsub')
[ [ 'pubsub_channels', '2' ],
[ 'pubsub_patterns', '0' ] ]
> info.contains('memory')
[ [ 'used_memory', '15080416' ],
[ 'used_memory_human', '14.38M' ],
[ 'used_memory_rss', '21258240' ],
[ 'used_memory_peak', '18985904' ],
[ 'used_memory_peak_human', '18.11M' ] ]
単純:
#!/usr/bin/env python
import redis
import json
print(json.dumps(redis.Redis().info()))
zabbixテンプレート DB Redisの場合:
#!/usr/bin/env python
import redis
import json
import sys
r = redis.Redis.from_url(sys.argv[1])
a = {}
sections = ["CPU","Clients","Cluster","Keyspace","Memory","Modules","Persistence","Replication","Server","Stats"]
for section in sections:
a[section]=r.info(section)
print(json.dumps(a))