mirror of https://github.com/MISP/MISP
chg: [internal] Cleanup Redis code
parent
f53063f8af
commit
5465bd8bd0
|
@ -537,8 +537,7 @@ class AdminShell extends AppShell
|
|||
public function redisReady()
|
||||
{
|
||||
try {
|
||||
$redis = $this->Server->setupRedisWithException();
|
||||
$redis->ping();
|
||||
RedisTool::init()->ping();
|
||||
$this->out('Successfully connected to Redis.');
|
||||
} catch (Exception $e) {
|
||||
$this->error('Redis connection is not available', $e->getMessage());
|
||||
|
@ -979,36 +978,14 @@ class AdminShell extends AppShell
|
|||
$this->out(__('New encryption key "%s" saved into config file.', $new));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Redis $redis
|
||||
* @param string $prefix
|
||||
* @return array[int, int]
|
||||
*/
|
||||
private function redisSize($redis, $prefix)
|
||||
{
|
||||
$keyCount = 0;
|
||||
$size = 0;
|
||||
$it = null;
|
||||
while ($keys = $redis->scan($it, $prefix, 1000)) {
|
||||
$redis->pipeline();
|
||||
foreach ($keys as $key) {
|
||||
$redis->rawCommand("memory", "usage", $key);
|
||||
}
|
||||
$result = $redis->exec();
|
||||
$keyCount += count($keys);
|
||||
$size += array_sum($result);
|
||||
}
|
||||
return [$keyCount, $size];
|
||||
}
|
||||
|
||||
public function redisMemoryUsage()
|
||||
{
|
||||
$redis = $this->Server->setupRedisWithException();
|
||||
$redis = RedisTool::init();
|
||||
$redis->setOption(Redis::OPT_SCAN, Redis::SCAN_RETRY);
|
||||
|
||||
$output = [];
|
||||
|
||||
list($count, $size) = $this->redisSize($redis, 'misp:feed_cache:*');
|
||||
list($count, $size) = RedisTool::sizeByPrefix($redis, 'misp:feed_cache:*');
|
||||
$output['feed_cache_count'] = $count;
|
||||
$output['feed_cache_size'] = $size;
|
||||
|
||||
|
@ -1029,7 +1006,7 @@ class AdminShell extends AppShell
|
|||
}
|
||||
}
|
||||
|
||||
list($count, $size) = $this->redisSize($redis, 'misp:server_cache:*');
|
||||
list($count, $size) = RedisTool::sizeByPrefix($redis, 'misp:server_cache:*');
|
||||
$output['server_cache_count'] = $count;
|
||||
$output['server_cache_size'] = $size;
|
||||
|
||||
|
@ -1050,35 +1027,35 @@ class AdminShell extends AppShell
|
|||
}
|
||||
}
|
||||
|
||||
list($count, $size) = $this->redisSize($redis, 'misp:wlc:*');
|
||||
list($count, $size) = RedisTool::sizeByPrefix($redis, 'misp:wlc:*');
|
||||
$output['warninglist_cache_count'] = $count;
|
||||
$output['warninglist_cache_size'] = $size;
|
||||
|
||||
list($count, $size) = $this->redisSize($redis, 'misp:warninglist_entries_cache:*');
|
||||
list($count, $size) = RedisTool::sizeByPrefix($redis, 'misp:warninglist_entries_cache:*');
|
||||
$output['warninglist_entries_count'] = $count;
|
||||
$output['warninglist_entries_size'] = $size;
|
||||
|
||||
list($count, $size) = $this->redisSize($redis, 'misp:top_correlation');
|
||||
list($count, $size) = RedisTool::sizeByPrefix($redis, 'misp:top_correlation');
|
||||
$output['top_correlation_count'] = $count;
|
||||
$output['top_correlation_size'] = $size;
|
||||
|
||||
list($count, $size) = $this->redisSize($redis, 'misp:correlation_exclusions');
|
||||
list($count, $size) = RedisTool::sizeByPrefix($redis, 'misp:correlation_exclusions');
|
||||
$output['correlation_exclusions_count'] = $count;
|
||||
$output['correlation_exclusions_size'] = $size;
|
||||
|
||||
list($count, $size) = $this->redisSize($redis, 'misp:event_lock:*');
|
||||
list($count, $size) = RedisTool::sizeByPrefix($redis, 'misp:event_lock:*');
|
||||
$output['event_lock_count'] = $count;
|
||||
$output['event_lock_size'] = $size;
|
||||
|
||||
list($count, $size) = $this->redisSize($redis, 'misp:user_ip:*');
|
||||
list($count, $size) = RedisTool::sizeByPrefix($redis, 'misp:user_ip:*');
|
||||
$output['user_ip_count'] = $count;
|
||||
$output['user_ip_size'] = $size;
|
||||
|
||||
list($count, $size) = $this->redisSize($redis, 'misp:ip_user:*');
|
||||
list($count, $size) = RedisTool::sizeByPrefix($redis, 'misp:ip_user:*');
|
||||
$output['user_ip_count'] += $count;
|
||||
$output['user_ip_size'] += $size;
|
||||
|
||||
list($count, $size) = $this->redisSize($redis, 'misp:authkey_usage:*');
|
||||
list($count, $size) = RedisTool::sizeByPrefix($redis, 'misp:authkey_usage:*');
|
||||
$output['authkey_usage_count'] = $count;
|
||||
$output['authkey_usage_size'] = $size;
|
||||
|
||||
|
|
|
@ -83,6 +83,29 @@ class RedisTool
|
|||
return $unlinkSupported ? $redis->unlink($keys) : $redis->del($keys);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Redis $redis
|
||||
* @param string $prefix
|
||||
* @return array[int, int]
|
||||
* @throws RedisException
|
||||
*/
|
||||
public static function sizeByPrefix(Redis $redis, $prefix)
|
||||
{
|
||||
$keyCount = 0;
|
||||
$size = 0;
|
||||
$it = null;
|
||||
while ($keys = $redis->scan($it, $prefix, 1000)) {
|
||||
$redis->pipeline();
|
||||
foreach ($keys as $key) {
|
||||
$redis->rawCommand("memory", "usage", $key);
|
||||
}
|
||||
$result = $redis->exec();
|
||||
$keyCount += count($keys);
|
||||
$size += array_sum($result);
|
||||
}
|
||||
return [$keyCount, $size];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed $data
|
||||
* @return string
|
||||
|
|
|
@ -397,8 +397,7 @@ class Correlation extends AppModel
|
|||
{
|
||||
if ($this->exclusions === null) {
|
||||
try {
|
||||
$redis = $this->setupRedisWithException();
|
||||
$this->exclusions = $redis->sMembers('misp:correlation_exclusions');
|
||||
$this->exclusions = RedisTool::init()->sMembers('misp:correlation_exclusions');
|
||||
} catch (Exception $e) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -16,8 +16,6 @@ class CorrelationExclusion extends AppModel
|
|||
'Containable',
|
||||
);
|
||||
|
||||
private $__redis = null;
|
||||
|
||||
public $validate = [
|
||||
'value' => [
|
||||
'uniqueValue' => [
|
||||
|
@ -54,15 +52,15 @@ class CorrelationExclusion extends AppModel
|
|||
public function cacheValues()
|
||||
{
|
||||
try {
|
||||
$this->__redis = $this->setupRedisWithException();
|
||||
$redis = RedisTool::init();
|
||||
} catch (Exception $e) {
|
||||
return false;
|
||||
}
|
||||
$this->__redis->del($this->key);
|
||||
RedisTool::unlink($redis, $this->key);
|
||||
$exclusions = $this->find('column', [
|
||||
'fields' => ['value']
|
||||
]);
|
||||
$this->__redis->sAddArray($this->key, $exclusions);
|
||||
$redis->sAddArray($this->key, $exclusions);
|
||||
}
|
||||
|
||||
public function cleanRouter($user)
|
||||
|
|
|
@ -489,10 +489,14 @@ class Warninglist extends AppModel
|
|||
|
||||
private function cacheWarninglistEntries(array $warninglistEntries, $id)
|
||||
{
|
||||
$redis = $this->setupRedis();
|
||||
if ($redis !== false) {
|
||||
try {
|
||||
$redis = RedisTool::init();
|
||||
} catch (Exception $e) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$key = 'misp:warninglist_entries_cache:' . $id;
|
||||
$redis->del($key);
|
||||
RedisTool::unlink($redis, $key);
|
||||
if (method_exists($redis, 'saddArray')) {
|
||||
$redis->sAddArray($key, $warninglistEntries);
|
||||
} else {
|
||||
|
@ -502,8 +506,6 @@ class Warninglist extends AppModel
|
|||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
|
|
Loading…
Reference in New Issue