怎么样才能redis 定时写入数据库库?

Posts - 282,
Articles - 1,
Comments - 2934
大人不华,君子务实。
23:39 by 虫师, ... 阅读,
&&& 这两天接到一个任务,要测试一个服务器的性能,客户要求向数据库内 1000/s(每插入一千条数据)& 的处理能力,当时脑子赌赛了,想的是用LR来进行,由于LR接触不深,只知道LR实现参数化的时候可以调用数据库里面的数据,往里面大批量的插入数据,以前没试过。
&&& 翻阅了一下资料,找一到了一篇《一种特殊的数据库性能测试》,大概思路是:通过编写一java程序来循环插入数据,编写一个批处理文件来调用java程序。再通过LR的system()函数来调用批处理文件来进行压力测试。但是对于我这种菜鸟来说,好多细节不懂。比如那个批处理就让我很为难。呵呵。
  其实,通过jmeter很简单就可以完成,可以参考我以前的一篇文章《》。
  前提条件:一个数据库:test&& 数据库下面有一张表:user&& 表中有两个字段:username、passworld 。
  要求:往数据库内大批量插入数据,1000/s&&
其实和之前的方法一样,为了简单,我还是把截图贴出来吧。
创建一个测试计划,将我们所使用的数据库驱动包导入。
添加一个线程组,并设置我们的虚拟用户数、启动时间、和循环次数
创建一个线程,并在线程下面,创建一个JDBC Connection Configuration ,设置相关信息。
创建一个JDBC Request.我们需要对数据库做插入操作。(详细设置,看截图上的说明)
添加监听器,我们这里选择添加&图形结果&和&查看结果树&,点击菜单栏上的&启动&---&运行。
查看我们的运行结果。
在测试的过程中,通过数据库命令,可以查看当前数据库插入了多少数据问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
瞬间流量很高的网站,要频繁的插入数据到数据库,怎么才能解决速度慢的问题?要用到什么技术?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
1、分布式部署的数据库,增加瞬时插入性能2、如果业务允许,采用消息队列异步插入3、使用redis之类的做缓存,再异步插入数据库3、对于插入操作频繁,又不需要关联查询的数据,可以选择使用mongo这样非关系型的数据库
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
如果对实时性要求不是很高的话,可以用redis做一个中间层接收数据,然后后台定时或用消息订阅机制从redis拉取数据并批量写入数据库。
分享到微博?
Hi,欢迎来到 SegmentFault 技术社区!⊙▽⊙ 在这里,你可以提出编程相关的疑惑,关注感兴趣的问题,对认可的回答投赞同票;大家会帮你解决编程的问题,和你探讨技术更新,为你的回答投上赞同票。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:求助,如何把变量存入mysql数据库!!!【qt吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:35,422贴子:
求助,如何把变量存入mysql数据库!!!收藏
比如QString qs="asdfghjkl";怎样才能把qs代表的字符串数据存入mysql数据库,不写字符串本身,而是利用qs,语句该怎么写??谢谢各位了,急求!!!
达内qt培训,0基础120天+项目实战=两年工作经验达内qt培训 ,总监级讲师授课,7万家合作企业联合招聘,40万学员的选择
求高手大神解答,谢谢
求教啊,各位大神
QSqlQquery.exec(tr("insert into table (column1,...) values(%1,...)).arg(qs));
登录百度帐号推荐应用如何在两到三个月之内熟悉 数据库,JavaWeb、框架,达到能写项目的水平? - 知乎1519被浏览102958分享邀请回答76459 条评论分享收藏感谢收起8722 条评论分享收藏感谢收起查看更多回答1 个回答被折叠()新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
论坛徽章:89
就是说现在的表的主键已经是1024了,
现在我插入一条数据,结果违反了某个约束,自然就没法插入了,
这种情况下,下次再插入的时候主键就会从1026开始了,怎么能防止这样事情出现呢?
就是说,我希望下次插入数据的时候主键是1025。
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
论坛徽章:89
我想用transaction来解决这个问题,但是似乎rollback也没法阻止主键的自增长。
白手起家, 积分 7, 距离下一级还需 193 积分
论坛徽章:0
个人觉得可以用存储过程吧?
论坛徽章:9
innodb的自增是缓存在内存字典中的,分配方式是先预留,然后再插入的。所以插入失败不会回滚内存字典。
唯一让innodb识别到当前最大id的方法是重启server,让innodb更新他的auto-inc缓存。
但是貌似比较折腾。。。
论坛徽章:89
怕的就是这个,我虽然不知道MySQL的具体实现直接,但是我之后某些实现可能是很难更改行为的。
论坛徽章:9
如果一定要保证自增连续的话,可以考虑曲线救国。
temp表A,结果表B
insert into A
create trigger after insert on A insert into B
这样保证往B中的插入都必定是成功的插入。
论坛徽章:89
这到是个办法,但是总感觉有点不爽,哈哈。
丰衣足食, 积分 658, 距离下一级还需 342 积分
论坛徽章:0
蛋疼的想法
稍有积蓄, 积分 295, 距离下一级还需 205 积分
论坛徽章:0
你说的是“AUTO_INCREMENT”类型来做主键吗?
If yes, MYSQL不保证AUTO_INCREMENT依次增长(即:1,2,3,4,5,6),但是可以保证正向增长(即:1,3,4,7)
所以,当你某次操作失败后,下次AUTO_INCREMENT就不是顺序的了
小富即安, 积分 2871, 距离下一级还需 2129 积分
论坛徽章:2
还有一个蠢办法就是直接手动输入1025.哈哈。

我要回帖

更多关于 redis 定时写入数据库 的文章

 

随机推荐