百度定义:Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对很多其它。包含string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。为了保证效率,数据都是缓存在内存中。
差别的是redis会周期性的把更新的数据写入磁盘或者把改动操作写入追加的记录文件,而且在此基础上实现了master-slave(主从)同步。
曾经公司一直在使用ehcache缓存。可是随着业务增多和用户訪问量的增多系统越来越不能满足实际需求,反映也越来越慢,缓存它的处理訪问速度是读取磁盘的上千倍,觉的利用缓存能够解决系统反应慢的问题。因此打算搭建一个高性能的redis缓存server。让缓存从应用server中脱离出来单独搭建缓存server,假设系统依赖于这个缓存server那么就须要考虑server宕机情况的出现,须要弄一个缓存集群来避免这一状况发生。
看到有一句经典的话描写叙述宕机情况的发生而不让用户感觉到。相当于给 “飞行的飞机换一个引擎” 还要让用户丝毫感觉不到飞机晃动。也就是说不管后台怎么变出现啥状况,对于用户界面前台用户体验要好。
在系统优化方案中一般首先要考虑缓存。其次再考虑其它瓶颈,这也是系统优化经验。
以下先看一下在两台window平台电脑上搭建的redisserver。
Redis Linux和window集成最新版下载地址:http://pan.baidu.com/s/1dD1WmEd
结构图例如以下
1.下载解压。没什么好说的,在解压后的bin文件夹下有下面这些文件:
2.该server主要包含上面的文件。首先启动server,启动server时须要将redis.windows.confserver配置文件载入进行。能够在命令行输入例如以下命令(须要将该文件夹加到环境变量里面才起作用)。我把它写在了一个bat脚本里面。直接点击能够启动服务:
3.运行,看到例如以下界面表示已经启动成功。
至此,这台电脑上redisserver已安装好。IP地址为:192.168.24.82。默认port:6379;
反复步骤,再在还有一台电脑安一个server设置主从关系Master-slave:IP地址:192.168.24.39;port:6379
4.为了安全首先给server枷锁,默认配置并没有设置password不论什么一个用户都能够訪问这个server。改动redis.windows.conf配置文件改动password:找到例如以下行:
找到# requirepass foobared 去掉前面的凝视#。并把foobared 替换为你自己的password:lls
如今我们从本地ip为82的登录server试试,从本机登录输入命令调用client程序并输入password:
5. 參数分别为IP、port、password,假设不输入密码将提示没有权限登录系统。
从远程登录原理一样仅仅只是输入的IP地址不同而已,在本机往缓存里面设存储值之后然后从还有一台电脑能够取得该值。
这样就能够从随意电脑和client訪问这台缓存server。这两台server之间还须要设置主从关系完毕同步备份。
伸缩性考虑:
在缓存server集群中须要考虑server伸缩性即某一天缓存server不可以满足需求时,动态加入一台或者降低一台server对于现有的集群影响最小。影响越小表明伸缩性越好,不只指缓存还有应用server集群、数据库server集群等都须要考虑这一问题。
性能測试
自带工具benchmark.exe,输入命令:benchmark -h 192.168.24.82 -p 6379 -c 1000 -n 100000。表示向server发送10万个请求,每次请求并发数为1000,结果例如以下:
====== PING_INLINE ======
100000 requests completed in 154.46 seconds
1000 parallel clients
3 bytes payload
keep alive: 1
647.43 requests per second
====== PING_INLINE ======
表示平均每秒处理647.43个并发请求,相当于每秒有60万用户请求。此电脑配置4G内存单核CUP,性能还是能够的。
PS:
在測试时大量的输出信息显示在cmd控制台,会覆盖曾经的信息。事实上我们能够将结果输出到txt文件在命令的后面加上一个符号就可以。拿我们熟悉的命令举例:ipconfig all > D:text.txt,如此就可以将结果输出到文件里。
后一篇博客将介绍怎样搭建主从server以及通过javaclient同server交互。