设为首页 收藏本站
查看: 840|回复: 0

[经验分享] 向着架构技术进军---实践redis(一)

[复制链接]

尚未签到

发表于 2015-7-20 13:11:53 | 显示全部楼层 |阅读模式
  一个网站如何面对高容量大并发的压力,是架构师们要研究的事情。虽然目前我工作的站还没有达到这个水平,但是一些未雨绸缪的工作应该要开始了,给我们定的计划是在半年到一年时间,完成高容量大并发系统的架构设计。说干就干,先从redis开始吧。
  首先得准备一份高记录数据样本,奈何手上没有现成的,只好从短信系统取,短信系统用的是MSSQL,先得导入到MYSQL中,我用了一个工具是mss2sql,下载地址是:http://www.intelligent-converters.com/demos/mss2sqld.exe,然后将一个100万记录的表导入MYSQL居然花了4个小时。
  接下来安装redis,先在windows环境下装了个2.4版,准备将该表从MYSQL中导入redis,发现网上有篇文章介绍导出方法:http://www.oschina.net/translate/mysql-to-redis-in-one-step 《一步完成 MySQL 向 Redis 迁移》,发现在windows下始终提示
  G:\redis-2.4.5-win32-win64\64bit>redis-cli --pipe
(error) ERR unknown command '--pipe'
  一开始以为是windows原因,随即准备了台centos的虚机,捣鼓一些nginx+php+mysq的环境不在话下,最后安装了redis发现还是提示上述错误,最终想起来我在windows和linux下用的都是redis2.4版,现在都用2.6和2.8版本了,那就升级吧。发现yum库中最高版也只有2.4,那只有手动安装了:http://www.redis.io/download

$ wget http://download.redis.io/releases/redis-2.8.14.tar.gz
$ tar xzf redis-2.8.14.tar.gz
$ cd redis-2.8.14
$ make

提示GCC忘记装了,继续捣鼓,参考:http://xueliang1yi.blog.163.com/blog/static/1145570162012102114635764/
  1、报错一 没用gcc
  安装过程
    yum install cpp
    yum install binutils
    yum install glibc
    yum install glibc-kernheaders
    yum install glibc-common
    yum install glibc-devel
    yum install gcc
    yum install make
  注意gcc依赖了很多东西,有些包可能系统已经 装了,有些没有,防止出意外,最好都走一遍
  2、报错二,没有tcl8.5, 安装tcl8.5,过程如下
下载地址:http://downloads.sourceforge.net/tcl/tcl8.5.10-src.tar.gz
安装过程
tar -zxvf  tcl8.5.tar.gz
./configure
make
make install
  3、安装redis
make
make test  //检查一下,看看有没有问题
make install
  如果make继续报错,信息如下:error: jemalloc/jemalloc.h: No such file or directory
执行 make MALLOC=libc 就行
注意的是,为了防止出意外,make失败后在make的话,清理一下,执行make clean
  
  这样redis2.8就装好了,也可以运行 mysql -u root -pxxx 库名称 --skip-column-names --raw < events_to_redis.sql | redis-cli --pipe,接下来准备正式将这百万数据导入redis,先查找redis通讯协议规范,资料上是这样写的:
  Redis请求参数的通用格式如下:
  * CR LF $ CR LF  CR LF ... $ CR LF  CR LF
举个例子,要使用SET命令在Redis中存储一条key=mykey,value=myvalue的数据,则客户端发送给Redis的服务器协议如下:
  *3  $3  SET  $5  mykey  $7  myvalue
最终发给Redis服务器的二进制数据用字符串表示是:
  *3\r\n$3\r\nSET\r\n$5\r\nmykey\r\n$7\r\nmyvalue\r\n

  
  好,接下来开始,按下回车:
  All data transferred. Waiting for the last reply...
Last reply received from server.
errors: 0, replies: 1174192
  完成的效率惊人,117万多的记录19秒导入!
  
  如果觉得样本源mysql的百万计数据不过瘾,也简单,用下面的语句迅速在一个表内复制
  INSERT INTO 表名
SELECT *
FROM 表名
  经测,复制200万数据需要10分钟,40万数据需要30分钟左右,也就是2变4、4变8、8变16,很快的哟,不过得注意我在该表没设置主键。
  
  
  
  
  其他一些参考资料:
  Redis应用场景:http://blog.iyunv.com/hguisu/article/details/8836819
  phpredis中文手册——《redis中文手册》 php版:http://www.iyunv.com/zcy_soft/archive/2012/09/21/2697006.html
  浅谈Redis数据库的键值设计:http://blog.nosqlfan.com/html/3033.html
  nosql应用场景——用redis打造山寨twitter:http://blog.iyunv.com/exsuns/article/details/6358414     http://www.iyunv.com/jackluo/archive/2013/06/27/3158974.html

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-88735-1-1.html 上篇帖子: redis安装 下篇帖子: redis.conf 配置 详解 中文 2.8
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表