Windows 安装 Reids单机和集群 完整版

redis目录

一、Windows redis单机安装

1、下载Windows redis版本

官方没有 Windows版本的 Redis,官网介绍:Redis项目不正式支持Windows。但是,微软开发并维护了针对Win64的Windows版本。
Windows版本下载地址:Redis-x64-3.2.100 提取码:jkw2
解压:

redis解压.png

解压完成后,安装目录下大概会有以下几个文件:

  • redis-server.exe:服务端程序,提供redis服务
  • redis-cli.exe: 客户端程序,通过它连接redis服务并进行操作
  • redis-check-dump.exe:本地数据库检查
  • redis-check-aof.exe:更新日志检查
  • redis-benchmark.exe:性能测试,用以模拟同时由N个客户端发送M个 SETs/GETs 查询 (类似于 Apache 的ab 工具).
  • redis.windows.conf: 配置文件,将redis作为普通软件使用的配置,命令行关闭则redis关闭
  • redis.windows-service.conf:配置文件,将redis作为系统服务的配置,用以区别开两种不同的使用方式

redis配置文件含义:redis.windows.conf和redis.windows-service.conf一样,两者只是启动方式不同。

# 是否作为守护进程运行
daemonize no
# Redis 默认监听端口
port 6379
# 客户端闲置多少秒后,断开连接
timeout 300
# 日志显示级别
loglevel verbose
# 指定日志输出的文件名,也可指定到标准输出端口
logfile redis.log
# 设置数据库的数量,默认最大是16,默认连接的数据库是0,可以通过select N 来连接不同的数据库
databases 32

# ####### Dump持久化策略 ########
# 当有一条Keys 数据被改变是,900 秒刷新到disk 一次
# save 900 1
# 当有10 条Keys 数据被改变时,300 秒刷新到disk 一次
save 300 100
# 当有1w 条keys 数据被改变时,60 秒刷新到disk 一次
save 6000 10000
# 当dump .rdb 数据库的时候是否压缩数据对象
rdbcompression yes
# dump 持久化数据保存的文件名
dbfilename dump.rdb

###### ##### Replication
# Redis的主从配置,配置slaveof则实例作为从服务器
# slaveof 192.168.0.105 6379
# 主服务器连接密码
# masterauth <master-password>

###### ######## 安全性
# 设置连接密码
# requirepass <password>

###### ######### LIMITS
# 最大客户端连接数
# maxclients 128

# 最大内存使用率
# maxmemory <bytes>

###### #### APPEND ONLY MODE
# 是否开启日志功能
appendonly no

# #####AOF持久化策略#####
# appendfsync always
# appendfsync everysec
# appendfsync no
###### ########## VIRTUAL MEMORY
# ###是否开启VM 功能####
# vm-enabled no
# vm-enabled yes
# vm-swap-file logs/redis.swap
# vm-max-memory 0
# vm-page-size 32
# vm-pages 134217728
# vm-max-threads 4

# 使用默认配置文件启动redis会报错的,需要修改maxmemory这一项,注意单位时字节(209715200是200MB)
maxmemory 209715200

# 如果需要设置连接密码,就修改requirepass,设为自己的密码。
requirepass mypassword

redis详细配置参考说明地址:
https://blog.csdn.net/ljl890705/article/details/51540427

2、打开cmd命令进入redis目录-运行redis

D:\Redis-x64-3.2.100>.\redis-server.exe redis.windows.conf

启动成功效果:
redis启动成功.png

3、查看redis信息

启动后窗口不要关,新开一个cmd窗口,执行

D:\Redis-x64-3.2.100> .\redis-cli
127.0.0.1:6379>

默认连接本机127.0.0.1 端口号 6379,连接成功
修改配置文件redis.windows-service.conf

将 port 6379 端口号 改成 port 6380

4、将Redis 加入 Windows 服务,执行

redis-server --service-install redis.windows.conf --service-name Redis-x64-6380 --port 6380

提示:Redis successfully installed as a service.
表示加入服务成功!
如果 Redis 设置了密码,加入服务时会提示

D:\Redis-x64-3.2.100>redis-server --service-install redis.windows.conf
[7540] 01 Feb 11:02:40.287 # Granting read/write access to 'NT AUTHORITY\NetworkService' on: "D:\Redis-x64-3.2.100\" "D:\Redis-x64-3.2.100\"
[7540] 01 Feb 11:02:40.288 # Redis successfully installed as a service.

服务就启动不了,可以服务里加参数处理,如下图所示:
服务启动加参数密码.png

启动参数里加入:
123456 是你的Redis密码。
单机redis安装完成!

5、安装redis可视化工具-测试redis

下载地址:redis-desktop-manager-0.8.8.384.exe 提取码:ksvp
redis-desktop-manager-0.8.8.384.exe 双击安装,傻瓜式安装,点击下一步就行。安装完成,在桌面会生成快捷方式图标,


测试连接成功!

二、Windows搭建Redis Cluster集群

1、下载redis

Windows版本下载地址:Redis-x64-3.2.100 提取码:jkw2
解压,默认端口6379

redis解压.png

测试是否安装成功:

D:\Redis-x64-3.2.100>.\redis-server.exe redis.windows.conf

redis启动成功.png

2、在D盘创建文件夹D:\Redis-Cluster

首先我们构建集群节点目录:集群正常运作至少需要三个主节点,不过在刚开始试用集群功能时, 强烈建议使用六个节点: 其中三个为主节点, 而其余三个则是各个主节点的从节点。主节点崩溃,从节点的Redis就会提升为主节点,代替原来的主节点工作,崩溃的主Redis回复工作后,会成为从节点.

拷贝开始下载的redis解压后的目录Redis-x64-3.2.100到D:\Redis-Cluster下,并修改文件名 Redis-x64-3.2.100-6381 6382、6383、6384、6385、6386
复制六份redis.png

解释一下为什么要复制六份:集群规划有三个节点的集群,每个节点有一主一备。需要6台虚拟机.配置 三主三从集群.

由于 redis 默认端口号为 6379,那么其它5份的端口可以为6381,6382,6383,6384,6385,6386 我们不适用默认的端口号,且不与6379冲突,保证6379可以。

3、分别修改这六份的redis配置

例如,打开Redis-x64-3.2.100-6381 下有一个文件 redis.windows.conf 修改里面的端口号,以及集群支持配置

port 6381 // 这里把6379改成6381,相应的其他5个修改端口号为 6382、6383、6384、6385、6386
// 修改其他配置支持集群
cluster-enabled yes // 开启集群模式
cluster-config-file nodes-6381.conf // 保存节点配置,自动创建,自动更新(建议命名时加上端口号)
cluster-node-timeout 15000 // 集群超时时间,节点超过这个时间没反应就断定是宕机
appendonly yes // 指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。 yes表示:存储方式,aof,将写操作记录保存到日志中

如果cluster-enabled 不为yes, 那么在使用JedisCluster集群代码获取的时候,会报错。
cluster-node-timeout 调整为 15000,那么在创建集群的时候,不会超时。
cluster-config-file nodes-6381.conf 是为该节点的配置信息,这里使用 nodes-端口.conf命名方法。服务启动后会在目录生成该文件

4、编写一个 bat 来启动 redis

每个Redis-x64-3.2.100-*节点目录下建立 start.bat,内容如下:
比如:D:\Redis-Cluster\Redis-x64-3.2.100-6381\start.bat

title redis-6381
redis-server.exe redis.windows.conf

将端口分别修改成功6381、6382、6383、6384、6385、6386

5、系统需要有 Ruby环境

redis的集群使用 ruby脚本编写,所以系统需要有 Ruby 环境 ,下载地址:
http://dl.bintray.com/oneclick/rubyinstaller/rubyinstaller-2.3.3-x64.exe

安装Ruby.png

安装时3个选项都勾选。
然后对ruby进行配置:

配置ruby.png

6、构建集群脚本redis-trib.rb

可以打开https://raw.githubusercontent.com/antirez/redis/unstable/src/redis-trib.rb 然后复制里面的内容到本地并保存为redis-trib.rb;
如下图,与redis集群节点保存在同一个文件夹下(比如我所有节点都存放在D:\Redis-Cluster文件夹下)

集群节点目录.png

然后依次启动所有集群节点start.bat
然后cmd进入redis集群节点D:\Redis-Cluster目录后,执行:集群启动命令(–replicas 1 表示为集群中的每个主节点创建一个从节点)

D:\Redis-Cluster>.\redis-trib.rb create --replicas 1 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385 127.0.0.1:6386

如果报错,前面加ruby

D:\Redis-Cluster>ruby redis-trib.rb create --replicas 1 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385 127.0.0.1:6386

如果再报-内容如下:

PS D:\Redis-Cluster> .\redis-trib.rb create --replicas 1 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127
.0.0.1:6385 127.0.0.1:6386
WARNING: redis-trib.rb is not longer available!
You should use redis-cli instead.

All commands and features belonging to redis-trib.rb have been moved
to redis-cli.
In order to use them you should call redis-cli with the --cluster
option followed by the subcommand name, arguments and options.

Use the following syntax:
redis-cli --cluster SUBCOMMAND [ARGUMENTS] [OPTIONS]

Example:
redis-cli --cluster create 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385 127.0.0.1:6386 --cluster-replicas 1

To get help about all subcommands, type:
redis-cli --cluster help

redis-trib.rb is not longer available!,可以看出这不是报错,是redis-trib.rb版本和你的redis版本不一致,这个redis-trib.rb可以从对应版本的redis-XX.tar.gz中的src目录下获取:
我的版本是windows的Redis-x64-3.2.100
下载地址:https://github.com/microsoftarchive/redis/releases/tag/win-3.2.100

下载Source code.png

解压-进入redis-win-3.2.100\redis-win-3.2.100\src 找到redis-trib.rb


3.2.100 redis-trib.rb.png

复制到D:\Redis-Cluster下
集群节点目录.png

7、再执行启动集群命令:

在D:\Redis-Cluster下 空白处 Shift+右击 选择--在此处打开 PowerShell 窗口(S)

D:\Redis-Cluster>ruby redis-trib.rb create --replicas 1 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385 127.0.0.1:6386

成功启动集群命令成功效果.png

上图可看出 主节点为6381,6382,6383端口的三个地址,6384,6385,6386为三个从节点:

Adding replica 127.0.0.1:6384 to 127.0.0.1:6381
Adding replica 127.0.0.1:6385 to 127.0.0.1:6382
Adding replica 127.0.0.1:6386 to 127.0.0.1:6383

中途会询问是否打印更多详细信息,输入yes即可,然后redis-trib 就会将这份配置应用到集群当中,让各个节点开始互相通讯:

Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join.....
>>> Performing Cluster Check (using node 127.0.0.1:6381)
M: b7881780481d4ebffff5a2e140cb0b9778dd3b86 127.0.0.1:6381
   slots:0-5460 (5461 slots) master
M: 8cf2636d55e5f54a31fea21dbf12adf3515e5aef 127.0.0.1:6382
   slots:5461-10922 (5462 slots) master
M: 4b312b45a43484ac6f9a1a9a63f34345ec0c163f 127.0.0.1:6383
   slots:10923-16383 (5461 slots) master
M: 98ab54d6f8dac11a8911762be3cdc2f211562bcd 127.0.0.1:6384
   slots: (0 slots) master
   replicates b7881780481d4ebffff5a2e140cb0b9778dd3b86
M: 20697b746d07108220e7476a172fdb1b8e429069 127.0.0.1:6385
   slots: (0 slots) master
   replicates 8cf2636d55e5f54a31fea21dbf12adf3515e5aef
M: 081a9f17a774ab5e279ef6d193a5a2cc4393c91b 127.0.0.1:6386
   slots: (0 slots) master
   replicates 4b312b45a43484ac6f9a1a9a63f34345ec0c163f
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

Redis集群数据分配策略:
采用一种叫做哈希槽 (hash slot)的方式来分配数据,redis cluster 默认分配了 16384 个slot,三个节点分别承担的slot 区间是:(如上面3个M:节点的slots描述)

节点6380覆盖0-5460;
节点6381覆盖5461-10922;
节点6382覆盖10923-16383.

最后查看所有集群节点,会看到:


测试集群搭建成功!

8、测试集群

进入任意一个集群节点,cmd执行 redis-cli.exe -c -p 6381

写入任意一个value,查询
再写一个hash测试: hset redis:test:hash Hash1 12345
PS D:\Redis-Cluster\Redis-x64-3.2.100-6381> .\redis-cli.exe  -c -p 6381
127.0.0.1:6381> set name redis-test
-> Redirected to slot [5798] located at 127.0.0.1:6382
OK
127.0.0.1:6382> get name
"redis-test"
127.0.0.1:6382> set name redis-test2
OK
127.0.0.1:6382> get name
"redis-test2"
127.0.0.1:6382> hset redis:hash Hash1 123456
-> Redirected to slot [5427] located at 127.0.0.1:6381
(integer) 1
127.0.0.1:6381>

可以看到集群会用CRC16算法来取模得到所属的slot,然后将这个key分到哈希槽区间的节点上CRC16(key) % 16384

所以,可以看到我们set的key计算之后被分配到了slot-5427 上, 而slot-5427处在节点6381上,因此redis自动redirect到了6381节点上.

9、附上所有工具及搭建的redis集群下载地址:

下载集群测试 提取码:ef4a
随便放到一个磁盘里,安装Ruby之后,就可以启动集群命令-测试集群!

三、springboot redis单机和集群配置

1、springboot redis单机代码实例

springboot+redis项目实战完整篇

2、springboot redis集群代码实例

1、配置集群

springboot+redis项目实战完整篇 的基础上,修改yml中的redis配置:

spring:
  redis:
    #host: localhost  # redis单机配置
    #port: 6379
    max-wait: 30000    # 连接池最大阻塞等待时间(使用负值表示没有限制)
    max-active: 100   # 连接池最大连接数(使用负值表示没有限制)
    max-idle: 20     # 连接池中的最大空闲连接
    min-idle: 0     # 连接池中的最小空闲连接
    timeout: 5000   # 连接超时
    #password: 123456 # 密码
    cluster:       #  redis集群配置
      nodes: 127.0.0.1:6381,127.0.0.1:6382,127.0.0.1:6383,127.0.0.1:6384,127.0.0.1:6385,127.0.0.1:6386
      max-redirects: 2  # 最大重定向次数
2、测试集群配置

可以不用Postman测试接口,也可以用下面的方式测试:用swagger方式测试接口很方便。
pom.xml

<!--集成swagger-API-->
        <dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-models</artifactId>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-annotations</artifactId>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>io.swagger</groupId>
                    <artifactId>swagger-models</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>io.swagger</groupId>
                    <artifactId>swagger-annotations</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

config文件夹下添加swagger配置类:

package com.dist.config;

import com.google.common.base.Predicate;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * @author yangmin
 * @date 2018/8/15
 * @desc
 */
@Configuration
@EnableSwagger2
public class Swaggwe2Config {
    @Bean
    public Docket adminApi(){
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("Admin API")
                .forCodeGeneration(true)
                .pathMapping("/")
                .select()
                .paths(paths())
                .build()
                .apiInfo(apiInfo())
                .useDefaultResponseMessages(false);
    }

    private Predicate<String> paths(){
        return PathSelectors.regex("^/(?!error).*$");
    }

    private ApiInfo apiInfo(){
        Contact contact = new Contact("BaiDu", "controller://baidu.com", " zhengja@dist.com.cn");
        return new ApiInfoBuilder()
                .title("个人SpringBoot测试系统")
                .description("开发API文档")
                .contact(contact)
                .version("1.0")
                .build();
    }
}

Controller测试接口

package com.dist.controller;

import com.dist.utils.RedisUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

/**
 * @author zhengja@dist.com.cn
 * @data 2019/6/17 17:28
 */
@RestController
@RequestMapping(value = "rest/redis")
@Api(tags = {"RedisUtilController"}, description = "redisUtil测试")
public class RedisUtil2Controller {

    @Resource
    private RedisUtil redisUtil;

    @RequestMapping(value = "v1/redisSave",method = {RequestMethod.GET})
    @ApiOperation(value = "保存到redis,并返回结果",notes = "保存到redis")
    public Object redisSave(@ApiParam(value = "传入key值") @RequestParam String key,
                        @ApiParam(value = "传入value值") @RequestParam String value){
        redisUtil.set(key,value);
        return redisUtil.get(key);
    }

    @RequestMapping(value = "v1/redisGetAllKeyValue",method = {RequestMethod.GET})
    @ApiOperation(value = "获取redis种所有key和value值",notes = "获取redis种所有key和value值")
    public Object redisGetAllKeyValue(){
        Set<String> keys = redisUtil.keys("*");
        Iterator<String> iterator = keys.iterator();
        Map<String,Object> map = new HashMap<>();
        while (iterator.hasNext()){
            String key = iterator.next();
            Object o = redisUtil.get(key);
            map.put(key,o);
        }
        return map;
    }


    @RequestMapping(value = "v1/deleteRedisAll",method = {RequestMethod.DELETE})
    @ApiOperation(value = "清除redis所有缓存",notes = "清除redis所有缓存")
    public Object deleteRedisAll(){
        Set<String> keys = redisUtil.keys("*");
        Iterator<String> iterator = keys.iterator();
        while (iterator.hasNext()){
            redisUtil.del(iterator.next());
        }
        return "删除redis所有数据成功";
    }

    @RequestMapping(value = "v1/getRedisValue",method = {RequestMethod.GET})
    @ApiOperation(value = "根据key获取value值",notes = "根据key获取value值")
    public Object getRedisValue(@ApiParam(value = "传入key值") @RequestParam String key){
        return redisUtil.get(key);
    }

}

在resources/static下创建index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>springboot-test-redis</title>
</head>
<body>
<h1>首页面</h1>

<h2>springboot-test-redis</h2>

<a href="http://localhost:8080/springboot-test-redis/swagger-ui.html">进入swagger页面测试</a>
</body>
</html>

上面的http://localhost:8080/springboot-test-redis修改成自己的项目访问路径

3、测试效果

redis保存数据:
redis保存数据-效果.png

redis根据key查询value数据:


redis查询数据-效果.png

redis查询数据-效果2.png

redis查询所有数据:
redis查询所有数据-效果.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容

  • 文章大纲 一、基础知识学习二、Redis常见的几种架构及优缺点总结三、Redis之Redis Sentinel(哨...
    故事爱人c阅读 1,095评论 3 12
  • 1.集群与分布式的概述 1.1 分布式 分布式是指将不同的业务分布在不同的地方. web应用和数据库服务分开 1....
    程序员Darker阅读 436评论 1 1
  • redis集群分为服务端集群和客户端分片,redis3.0以上版本实现了集群机制,即服务端集群,3.0以下使用客户...
    hadoop_null阅读 1,558评论 0 6
  • 搭建集群 介绍完Redis集群分区规则之后,下面我们开始搭建Redis集群。搭建集群工作需要以下三个步骤: 准备节...
    linuxzw阅读 202评论 0 3
  • 1 Redis介绍1.1 什么是NoSql为了解决高并发、高可扩展、高可用、大数据存储问题而产生的数据库解决方...
    克鲁德李阅读 5,171评论 0 36