百度定义: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

结构图例如以下

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGlsb25nc2hlbmcxMTI1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

1.下载解压。没什么好说的,在解压后的bin文件夹下有下面这些文件:

2.该server主要包含上面的文件。首先启动server,启动server时须要将redis.windows.confserver配置文件载入进行。能够在命令行输入例如以下命令(须要将该文件夹加到环境变量里面才起作用)。我把它写在了一个bat脚本里面。直接点击能够启动服务:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGlsb25nc2hlbmcxMTI1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

3.运行,看到例如以下界面表示已经启动成功。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGlsb25nc2hlbmcxMTI1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

至此,这台电脑上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交互。

Window平台搭建Redis分布式缓存集群 (一)server搭建及性能測试的更多相关文章

  1. 分布式缓存集群方案特性使用场景(Memcache/Redis(Twemproxy/Codis/Redis-cluster))优缺点对比及选型

    分布式缓存集群方案特性使用场景(Memcache/Redis(Twemproxy/Codis/Redis-cluster))优缺点对比及选型   分布式缓存特性: 1) 高性能:当传统数据库面临大规模 ...

  2. EHCache分布式缓存集群环境配置

    EHCache分布式缓存集群环境配置 ehcache提供三种网络连接策略来实现集群,rmi,jgroup还有jms.同时ehcache可以可以实现多播的方式实现集群,也可以手动指定集群主机序列实现集群 ...

  3. Redis Cluster(集群)的搭建

    一.Redis的下载.安装.启动(单实例) 我们统一将Redis安装在/opt目录下,执行命令如下: $ cd /opt $ wget http://download.redis.io/release ...

  4. 搭建Redis主从复制的集群

    在主从复制模式的集群里,主节点一般是一个,从节点一般是两个或多个,写入主节点的数据会被复制到从节点上,这样一旦主节点出现故障,应用系统能切换到从节点去读写数据,这样能提升系统的可用性.而且如果再采用主 ...

  5. redis之(十六)redis的cluster集群环境的搭建,转载

    最近redis已经比较火了,有关redis的详细介绍,网上有一大堆,我这里只作简单的介绍,然后跟大家一起学习Redis Cluster 3.0的搭建与使用.Redis是一款开源的.网络化的.基于内存的 ...

  6. redis之(十七)自己实现redis的cluster集群环境的搭建

    [一]创建不同节点的配置文件和目录.并将配置文件中的port,cluster-enable,daemonize项做修改. --->port:修改成redis实例对应的端口号 --->clu ...

  7. 分布式TensorFlow集群local server使用详解

    通过local server理解分布式TensorFlow集群的应用与实现. ​​简介 TensorFlow从0.8版本开始,支持分布式集群,并且自带了local server方便测试. Local ...

  8. 基于Docker-compose搭建Redis高可用集群-哨兵模式(Redis-Sentinel)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_110 我们知道,Redis的集群方案大致有三种:1)redis cluster集群方案:2)master/slave主从方案:3) ...

  9. CDH搭建Hadoop分布式服务器集群(java新手小白)

    1首先对于一个java还白的小白,先理解CDH与Hadoop的关系 一.Hadoop版本选择. Hadoop大致可分为Apache Hadoop和第三方发行第三方发行版Hadoop,考虑到Hadoop ...

随机推荐

  1. SPField的GetValidatedString方法没有被调用

    当我们开发自定义类型的Field时,可能会用到GetValidatedString这个方法. 但是有时候这个方法并没被调用 原因是: 当Field的Value为null时,该方法不会被调用 解决办法: ...

  2. 在Ubuntu下编译Assimp库

    在Ubuntu下编译Assimp库 怎样在Ubuntu下编译Assimp库?这是我曾经编译成功后做的笔记,供參考. 1.去以下的站点去下载Assimp库: http://assimp.sourcefo ...

  3. Mac 实用工具

    命令行常用工具: Iterm2 也是一个终端命令行工具,支持多工作区,使用清爽 http://www.iterm2.com/documentation.html 给你的命令行 代码上色 Solariz ...

  4. 在Ubuntu 12.04下编译qtiplot

    不在windows下,再加上不想用盗版,所以需要一个origin的替代品——qtiplot.虽然我非常抵抗用这种不停点来点去的软件,用R的ggplot2画图多好啊,高效.优雅.漂亮,但是终抵不过老板一 ...

  5. FZOJ2111:Min Number

    Problem Description Now you are given one non-negative integer n in 10-base notation, it will only c ...

  6. Swift - 跳跃吃苹果游戏开发(SpriteKit游戏开发)

    下面通过一个样例演示如何实现飞行道具的生成,以及道具碰撞拾取. 样例说明: 1,屏幕从右到左不断地生成苹果飞过来(苹果高度随机) 2,点击屏幕可以让熊猫跳跃 3,熊猫碰到苹果,苹果消失 运行效果: 样 ...

  7. 在DLL中封装的VCL窗体Tab键响应的问题

    在DLL中的子窗体不会响应Tab按键的,这个时候就需要手动去指定Tab键的操作,但是前提是主窗体要向这个窗体发送一个消息,一个Tab键按下的消息.基本顺序是这样的: 1. 主窗体用Hook技术捕获Ta ...

  8. Android SDK Manager安装报错

    安装出错了,上网百度一大堆说法,又说版本兼容问题的,有说http换https的,我这个菜鸟真搞不明白,自己捣腾一下午总算弄上去了! 问题: 安装完Eclipse和ADT却无法更新SDK. 启动Andr ...

  9. DBA日常管理——数据归档(Archiving-Data)

    原文出处:http://www.sqlnotes.cn/post/2013/09/05/DBA-Daily-Jobs-One%E2%80%94%E2%80%94-Archiving-Data 均为本人 ...

  10. 正确理解Python文件读写模式字w+、a+和r+

    w+ 和 r+的差别不难理解.还有a+ +同一时候读写,就可以读又可写,边写边读.边读边写,不用flush,用seek 和 tell可測得. fp = open("a.txt", ...