百度定义:Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型),为了保证效率,数据都是缓存在内存中。
区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
在系统优化方案中一般首先要考虑缓存,其次再考虑其他瓶颈,这也是系统优化经验。
下面先看一下在两台window平台电脑上搭建的redis服务器。
Redis Linux和window集成最新版下载地址:http://pan.baidu.com/s/1dD1WmEd
结构图如下
1.下载解压,没什么好说的,在解压后的bin目录下有以下这些文件:
2.该服务器主要包括上面的文件,首先启动服务器,启动服务器时需要将redis.windows.conf服务器配置文件加载进行,可以在命令行输入如下命令(需要将该目录加到环境变量里面才起作用),我把它写在了一个bat脚本里面,直接点击可以启动服务:
3.执行,看到如下界面表示已经启动成功。
至此,这台电脑上redis服务器已安装好,IP地址为:192.168.24.82;默认端口:6379;
重复步骤,再在另一台电脑安一个服务器设置主从关系Master-slave:IP地址:192.168.24.39;端口:6379
4.为了安全首先给服务器枷锁,默认配置并没有设置密码任何一个用户都可以访问这个服务器,修改redis.windows.conf配置文件修改密码:找到如下行:
找到# requirepass foobared 去掉前面的注释#,并把foobared 替换为你自己的密码:lls
现在我们从本地ip为82的登录服务器试试,从本机登录输入命令调用客户端程序并输入密码:
5. 参数分别为IP、port、password,如果不输入密码将提示没有权限登录系统。从远程登录原理一样只不过输入的IP地址不同而已,在本机往缓存里面设存储值之后然后从另一台电脑可以取得该值。
这样就可以从任意电脑和客户端访问这台缓存服务器,这两台服务器之间还需要设置主从关系完成同步备份。
伸缩性考虑:
在缓存服务器集群中需要考虑服务器伸缩性即某一天缓存服务器不能够满足需求时,动态添加一台或者减少一台服务器对于现有的集群影响最小,影响越小表明伸缩性越好,不仅仅指缓存还有应用服务器集群、数据库服务器集群等都需要考虑这一问题。
性能测试
自带工具benchmark.exe,输入命令:benchmark -h 192.168.24.82 -p 6379 -c 1000 -n 100000。表示向服务器发送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,如此即可将结果输出到文件中。