Redis和Ssdb读取性能对比
2023-09-11 14:20:54 时间
Console.WriteLine("* -----------------------------------------------");
Console.WriteLine("* redis get");
ConsoleWait.Start();
string result = OnTest(Config.RedisClient,GetHandler);
ConsoleWait.End();
Console.WriteLine(result);
Console.WriteLine("* ssdb get");
ConsoleWait.Start();
result = OnTest(Config.SSDBClient, GetHandler);
ConsoleWait.End();
Console.WriteLine(result);
Console.WriteLine("* -----------------------------------------------");
Console.WriteLine("* redis lregion[1-2]");
ConsoleWait.Start();
result = OnTest(Config.RedisClient, LRegionHandler1TO2);
ConsoleWait.End();
Console.WriteLine(result);
Console.WriteLine("* ssdb lregion[1-2]");
ConsoleWait.Start();
result = OnTest(Config.SSDBClient, LRegionHandler1TO2);
ConsoleWait.End();
Console.WriteLine(result);
Console.WriteLine("* -----------------------------------------------");
Console.WriteLine(result); Console.WriteLine("* -----------------------------------------------"); Console.WriteLine("* redis lregion[100-110]"); ConsoleWait.Start(); result = OnTest(Config.RedisClient, LRegionHandler1TO2); ConsoleWait.End(); Console.WriteLine(result); Console.WriteLine("* ssdb lregion[100-110]"); ConsoleWait.Start(); result = OnTest(Config.SSDBClient, LRegionHandler1TO2); ConsoleWait.End(); Console.WriteLine(result); Console.WriteLine("* -----------------------------------------------"); Console.WriteLine("* redis hget"); ConsoleWait.Start(); result = OnTest(Config.RedisClient, HGetHandler); ConsoleWait.End(); Console.WriteLine(result); Console.WriteLine("* ssdb hget"); ConsoleWait.Start(); result = OnTest(Config.SSDBClient, HGetHandler); ConsoleWait.End(); Console.WriteLine(result); Console.WriteLine("* -----------------------------------------------"); private void HGetHandler(RedisClient e) while (mRuning) long index = System.Threading.Interlocked.Increment(ref mIndex); ProtobufKey key = "user_" + Data.Import.Users[(int)(index % Data.Import.Users.Count)].Name; key.Get Model.Order, Model.Employee, Model.Customer System.Threading.Interlocked.Increment(ref mCount); private void LRegionHandler1TO2(RedisClient e) while (mRuning) ProtobufList Model.Order list = "Orders"; list.Range(1, 2, e); System.Threading.Interlocked.Increment(ref mCount); private void LRegionHandler50TO60(RedisClient e) while (mRuning) ProtobufList Model.Order list = "Orders"; list.Range(50, 60, e); System.Threading.Interlocked.Increment(ref mCount); private void LRegionHandler100TO110(RedisClient e) while (mRuning) ProtobufList Model.Order list = "Orders"; list.Range(100, 110, e); System.Threading.Interlocked.Increment(ref mCount); private void GetHandler(RedisClient e) while (mRuning) long index = System.Threading.Interlocked.Increment(ref mIndex); ProtobufKey key = "user_" + Data.Import.Users[(int)(index % Data.Import.Users.Count)].Name; key.Get Model.User System.Threading.Interlocked.Increment(ref mCount); private string OnTest(RedisClient client,Action RedisClient handler) mCount = 0; mRuning = true; for (int i = 0; i i++) System.Threading.ThreadPool.QueueUserWorkItem((o) = GetHandler((RedisClient)o); }, client); int s = 20; while (s 0) System.Threading.Thread.Sleep(1000); mRuning = false; System.Threading.Thread.Sleep(1000); return string.Format("* [seconds:{1}/total:{0}]", mCount, mCount / 20);
从测试结果看来差距还是非常明显,并不象官网那样说得这么理想.虽然SSDB效率上不如REDIS,但其基于磁盘存储有着其最大的优势,毕竟很多业务数据远超过服务器内存的容量. SSDB的测试结果不理想也许是硬件环境受限,如果有个SSD硬盘的测试环境估计也得到一个更好的结果,但在测试过程中发现一个问题就是SSDB占用的CPU资源也是非常大的,在以上测试过程SSDB的并发效率比不上REDIS,同时CPU损耗上基本要比REDIS高出一倍的样子. 以上测试结果紧紧是是一些情况下的性能测试对比,不能完全表述出两者在应用的差距的结果,如果需要用到这些产品的同学不防在实施前进行一些测试为实施选择提供一个更可靠的结果. 最新内容请见作者的GitHub页:http://qaseven.github.io/
优化logstash从redis中读取日志的配置(下) 1.优化配置思路 之前的logstash读取redis收集来的日志数据配置需要很多步骤,每次新加一个日志都特别繁琐 没有优化前新增一个日志收集的配置步骤:
配置logstash从redis读取filebeat收集的日志(上) logstash读取redis缓存日志 1.logstash从redis读取收集日志原理 常规的日志收集方式都是由filebeat收集完直接输出给es集群,如果当后端应用访问量大,产生的日志也特别巨大,这时再由filebeat收集日志直接传输给es,会给es带来特别大的压力,如果es这时挂掉,filebeat依然在收集日志,这时filebeat找不到es集群,则会把收集来的日志丢弃
在签到统计场景中,可以使用 bitmap 数据类型高效的存储签到数据,但 getbit 命令只能获取某一位值,就无法最优的满足部分业务场景了。
全内存的redis用习惯了?那能突破内存限制类redis产品ssdb呢? 原文:全内存的redis用习惯了?那能突破内存限制类redis产品ssdb呢? 首先说一下背景,在双十一的时候,我们系统接受X宝的订单推送,同事原先的实现方式是使用redis的List作为推送数据的承载,在非大促的场景下, 一切运行正常,内存占用大概3-4G,机器是16G内存。
Console.WriteLine(result); Console.WriteLine("* -----------------------------------------------"); Console.WriteLine("* redis lregion[100-110]"); ConsoleWait.Start(); result = OnTest(Config.RedisClient, LRegionHandler1TO2); ConsoleWait.End(); Console.WriteLine(result); Console.WriteLine("* ssdb lregion[100-110]"); ConsoleWait.Start(); result = OnTest(Config.SSDBClient, LRegionHandler1TO2); ConsoleWait.End(); Console.WriteLine(result); Console.WriteLine("* -----------------------------------------------"); Console.WriteLine("* redis hget"); ConsoleWait.Start(); result = OnTest(Config.RedisClient, HGetHandler); ConsoleWait.End(); Console.WriteLine(result); Console.WriteLine("* ssdb hget"); ConsoleWait.Start(); result = OnTest(Config.SSDBClient, HGetHandler); ConsoleWait.End(); Console.WriteLine(result); Console.WriteLine("* -----------------------------------------------"); private void HGetHandler(RedisClient e) while (mRuning) long index = System.Threading.Interlocked.Increment(ref mIndex); ProtobufKey key = "user_" + Data.Import.Users[(int)(index % Data.Import.Users.Count)].Name; key.Get Model.Order, Model.Employee, Model.Customer System.Threading.Interlocked.Increment(ref mCount); private void LRegionHandler1TO2(RedisClient e) while (mRuning) ProtobufList Model.Order list = "Orders"; list.Range(1, 2, e); System.Threading.Interlocked.Increment(ref mCount); private void LRegionHandler50TO60(RedisClient e) while (mRuning) ProtobufList Model.Order list = "Orders"; list.Range(50, 60, e); System.Threading.Interlocked.Increment(ref mCount); private void LRegionHandler100TO110(RedisClient e) while (mRuning) ProtobufList Model.Order list = "Orders"; list.Range(100, 110, e); System.Threading.Interlocked.Increment(ref mCount); private void GetHandler(RedisClient e) while (mRuning) long index = System.Threading.Interlocked.Increment(ref mIndex); ProtobufKey key = "user_" + Data.Import.Users[(int)(index % Data.Import.Users.Count)].Name; key.Get Model.User System.Threading.Interlocked.Increment(ref mCount); private string OnTest(RedisClient client,Action RedisClient handler) mCount = 0; mRuning = true; for (int i = 0; i i++) System.Threading.ThreadPool.QueueUserWorkItem((o) = GetHandler((RedisClient)o); }, client); int s = 20; while (s 0) System.Threading.Thread.Sleep(1000); mRuning = false; System.Threading.Thread.Sleep(1000); return string.Format("* [seconds:{1}/total:{0}]", mCount, mCount / 20);
从测试结果看来差距还是非常明显,并不象官网那样说得这么理想.虽然SSDB效率上不如REDIS,但其基于磁盘存储有着其最大的优势,毕竟很多业务数据远超过服务器内存的容量. SSDB的测试结果不理想也许是硬件环境受限,如果有个SSD硬盘的测试环境估计也得到一个更好的结果,但在测试过程中发现一个问题就是SSDB占用的CPU资源也是非常大的,在以上测试过程SSDB的并发效率比不上REDIS,同时CPU损耗上基本要比REDIS高出一倍的样子. 以上测试结果紧紧是是一些情况下的性能测试对比,不能完全表述出两者在应用的差距的结果,如果需要用到这些产品的同学不防在实施前进行一些测试为实施选择提供一个更可靠的结果. 最新内容请见作者的GitHub页:http://qaseven.github.io/
优化logstash从redis中读取日志的配置(下) 1.优化配置思路 之前的logstash读取redis收集来的日志数据配置需要很多步骤,每次新加一个日志都特别繁琐 没有优化前新增一个日志收集的配置步骤:
配置logstash从redis读取filebeat收集的日志(上) logstash读取redis缓存日志 1.logstash从redis读取收集日志原理 常规的日志收集方式都是由filebeat收集完直接输出给es集群,如果当后端应用访问量大,产生的日志也特别巨大,这时再由filebeat收集日志直接传输给es,会给es带来特别大的压力,如果es这时挂掉,filebeat依然在收集日志,这时filebeat找不到es集群,则会把收集来的日志丢弃
在签到统计场景中,可以使用 bitmap 数据类型高效的存储签到数据,但 getbit 命令只能获取某一位值,就无法最优的满足部分业务场景了。
全内存的redis用习惯了?那能突破内存限制类redis产品ssdb呢? 原文:全内存的redis用习惯了?那能突破内存限制类redis产品ssdb呢? 首先说一下背景,在双十一的时候,我们系统接受X宝的订单推送,同事原先的实现方式是使用redis的List作为推送数据的承载,在非大促的场景下, 一切运行正常,内存占用大概3-4G,机器是16G内存。
相关文章
- springboot2.x版本整合redis(单机/集群)(使用lettuce)
- 【高并发简单解决方案】redis队列缓存 + mysql 批量入库 + php离线整合
- Spring中使用RedisTemplate操作Redis(spring-data-redis)
- Redis学习(8)-redis持久化
- spring boot单元测试之十:用embedded-redis库做Redis的mock(spring boot 2.4.3)
- redis集群之REDIS CLUSTER
- Redis配置文件详解(redis.conf)
- Redis性能测试Redis-benchmark
- 云数据库redis版的性能测试
- scrapy-redis性能问题
- 关于redis的keys命令的性能问题
- Redis 单机部署redis实例
- Redis 客户端管理 存活状态
- Redis 怎么防止数据丢失?(互联网公司-银行等都喜欢问这个问题)
- ASP.NET Core微服务(六)——【.Net Core操作redis】StackExchange.Redis
- 【服务器安装Redis】Centos7离线安装redis
- 〖Python 数据库开发实战 - Python与Redis交互篇①〗- redis-py的安装与使用
- 〖Python 数据库开发实战 - Python与Redis交互篇⑦〗- 利用 redis-py 实现缓存学生考试信息
- linux下redis安装
- python用Django+Celery+Redis 监视程序(一)
- Redis的持久化
- Redis 5.0 redis-cli --cluster help说明
- 分布式锁与实现(一)——基于Redis实现
- Redis进阶学习10---redis最佳实践
- 使用redis-shake工具迁移云Redis数据(二十一)