首页 > 数据库 > 数据库开发技术 > key redis 分析键数量
Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key - value 数据库。
Redis的全称是 Remote Dictionary Server,它是一款开源的高性能的NoSQL数据库,它可以用作数据库、缓存和消息队列。
有的时候需要统计一下Redis中Key的数量
Redis Info 命令以一种易于理解和阅读的格式,返回关于 Redis 服务器的各种信息和统计数值
命令方式
zb@zb-computer:/home/wwwroot/default/lion/Admin$ /usr/local/redis/bin/redis-clikeys *1) "CAOMALL_doctor::13391840644"keys *
分析键数量对应c# 方法
/// <summary>/// 分析键数量/// </summary>/// <param name="level">分级,计算不同级别的键数量</param>/// <returns>不同模板的键数量</returns>public static List<Dictionary<string, long>> AnalyzeKeyQuantity(int level){return Manager.AnalyzeKeyQuantity(level);}
/// <summary>/// 分析键数量/// </summary>/// <param name="level">分级,计算不同级别的键数量</param>/// <returns>不同模板的键数量</returns>public List<Dictionary<string, long>> AnalyzeKeyQuantity(int level){var result = new List<Dictionary<string, long>>();for (int i = 0; i < level; i++){result.Add(new Dictionary<string, long>(500));}IEnumerable<string> allKeys = null;using (var client = GetClient()){allKeys = client.ScanAllKeys("*", int.MaxValue);}foreach (var key in allKeys){var splitItems = key.Split(new char[] { '_' }, level + 1);for (int i = 0; i < splitItems.Length - 1; i++){var templateItems = new List<string>();for (int j = 0; j <= i; j++){templateItems.Add(splitItems[j]);}string keyTemplate = string.Join("_", templateItems);if (!string.IsNullOrWhiteSpace(keyTemplate)){var dict = result[i];if (dict.ContainsKey(keyTemplate)){dict[keyTemplate] += 1;}else{dict.Add(keyTemplate, 1L);}}}}return result;}
原文作者:后端Q;如有侵权,请联系管理员删除。