Windows 安裝 Reids單機(jī)和集群 完整版

redis目錄

一、Windows redis單機(jī)安裝

1精刷、下載Windows redis版本

官方?jīng)]有 Windows版本的 Redis拒啰,官網(wǎng)介紹:Redis項(xiàng)目不正式支持Windows斑唬。但是胆数,微軟開(kāi)發(fā)并維護(hù)了針對(duì)Win64的Windows版本肌蜻。
Windows版本下載地址:Redis-x64-3.2.100 提取碼:jkw2
解壓:

redis解壓.png

解壓完成后,安裝目錄下大概會(huì)有以下幾個(gè)文件:

  • redis-server.exe:服務(wù)端程序必尼,提供redis服務(wù)
  • redis-cli.exe: 客戶端程序蒋搜,通過(guò)它連接redis服務(wù)并進(jìn)行操作
  • redis-check-dump.exe:本地?cái)?shù)據(jù)庫(kù)檢查
  • redis-check-aof.exe:更新日志檢查
  • redis-benchmark.exe:性能測(cè)試,用以模擬同時(shí)由N個(gè)客戶端發(fā)送M個(gè) SETs/GETs 查詢 (類似于 Apache 的ab 工具).
  • redis.windows.conf: 配置文件判莉,將redis作為普通軟件使用的配置豆挽,命令行關(guān)閉則redis關(guān)閉
  • redis.windows-service.conf:配置文件,將redis作為系統(tǒng)服務(wù)的配置券盅,用以區(qū)別開(kāi)兩種不同的使用方式

redis配置文件含義:redis.windows.conf和redis.windows-service.conf一樣帮哈,兩者只是啟動(dòng)方式不同。

# 是否作為守護(hù)進(jìn)程運(yùn)行
daemonize no
# Redis 默認(rèn)監(jiān)聽(tīng)端口
port 6379
# 客戶端閑置多少秒后锰镀,斷開(kāi)連接
timeout 300
# 日志顯示級(jí)別
loglevel verbose
# 指定日志輸出的文件名娘侍,也可指定到標(biāo)準(zhǔn)輸出端口
logfile redis.log
# 設(shè)置數(shù)據(jù)庫(kù)的數(shù)量,默認(rèn)最大是16,默認(rèn)連接的數(shù)據(jù)庫(kù)是0泳炉,可以通過(guò)select N 來(lái)連接不同的數(shù)據(jù)庫(kù)
databases 32

# ####### Dump持久化策略 ########
# 當(dāng)有一條Keys 數(shù)據(jù)被改變是憾筏,900 秒刷新到disk 一次
# save 900 1
# 當(dāng)有10 條Keys 數(shù)據(jù)被改變時(shí),300 秒刷新到disk 一次
save 300 100
# 當(dāng)有1w 條keys 數(shù)據(jù)被改變時(shí)胡桃,60 秒刷新到disk 一次
save 6000 10000
# 當(dāng)dump .rdb 數(shù)據(jù)庫(kù)的時(shí)候是否壓縮數(shù)據(jù)對(duì)象
rdbcompression yes
# dump 持久化數(shù)據(jù)保存的文件名
dbfilename dump.rdb

###### ##### Replication
# Redis的主從配置,配置slaveof則實(shí)例作為從服務(wù)器
# slaveof 192.168.0.105 6379
# 主服務(wù)器連接密碼
# masterauth <master-password>

###### ######## 安全性
# 設(shè)置連接密碼
# requirepass <password>

###### ######### LIMITS
# 最大客戶端連接數(shù)
# maxclients 128

# 最大內(nèi)存使用率
# maxmemory <bytes>

###### #### APPEND ONLY MODE
# 是否開(kāi)啟日志功能
appendonly no

# #####AOF持久化策略#####
# appendfsync always
# appendfsync everysec
# appendfsync no
###### ########## VIRTUAL MEMORY
# ###是否開(kāi)啟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

# 使用默認(rèn)配置文件啟動(dòng)redis會(huì)報(bào)錯(cuò)的踩叭,需要修改maxmemory這一項(xiàng)磕潮,注意單位時(shí)字節(jié)(209715200是200MB)
maxmemory 209715200

# 如果需要設(shè)置連接密碼翠胰,就修改requirepass,設(shè)為自己的密碼自脯。
requirepass mypassword

redis詳細(xì)配置參考說(shuō)明地址:
https://blog.csdn.net/ljl890705/article/details/51540427

2之景、打開(kāi)cmd命令進(jìn)入redis目錄-運(yùn)行redis

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

啟動(dòng)成功效果:
redis啟動(dòng)成功.png

3、查看redis信息

啟動(dòng)后窗口不要關(guān)膏潮,新開(kāi)一個(gè)cmd窗口锻狗,執(zhí)行

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

默認(rèn)連接本機(jī)127.0.0.1 端口號(hào) 6379,連接成功
修改配置文件redis.windows-service.conf

將 port 6379 端口號(hào) 改成 port 6380

4焕参、將Redis 加入 Windows 服務(wù)轻纪,執(zhí)行

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

提示:Redis successfully installed as a service.
表示加入服務(wù)成功!
如果 Redis 設(shè)置了密碼叠纷,加入服務(wù)時(shí)會(huì)提示

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.

服務(wù)就啟動(dòng)不了刻帚,可以服務(wù)里加參數(shù)處理,如下圖所示:
服務(wù)啟動(dòng)加參數(shù)密碼.png

啟動(dòng)參數(shù)里加入:
123456 是你的Redis密碼涩嚣。
單機(jī)redis安裝完成崇众!

5掂僵、安裝redis可視化工具-測(cè)試redis

下載地址:redis-desktop-manager-0.8.8.384.exe 提取碼:ksvp
redis-desktop-manager-0.8.8.384.exe 雙擊安裝,傻瓜式安裝顷歌,點(diǎn)擊下一步就行锰蓬。安裝完成,在桌面會(huì)生成快捷方式圖標(biāo)眯漩,


測(cè)試連接成功!

二芹扭、Windows搭建Redis Cluster集群

1、下載redis

Windows版本下載地址:Redis-x64-3.2.100 提取碼:jkw2
解壓坤塞,默認(rèn)端口6379

redis解壓.png

測(cè)試是否安裝成功:

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

redis啟動(dòng)成功.png

2冯勉、在D盤創(chuàng)建文件夾D:\Redis-Cluster

首先我們構(gòu)建集群節(jié)點(diǎn)目錄:集群正常運(yùn)作至少需要三個(gè)主節(jié)點(diǎn),不過(guò)在剛開(kāi)始試用集群功能時(shí)摹芙, 強(qiáng)烈建議使用六個(gè)節(jié)點(diǎn): 其中三個(gè)為主節(jié)點(diǎn)灼狰, 而其余三個(gè)則是各個(gè)主節(jié)點(diǎn)的從節(jié)點(diǎn)。主節(jié)點(diǎn)崩潰浮禾,從節(jié)點(diǎn)的Redis就會(huì)提升為主節(jié)點(diǎn)交胚,代替原來(lái)的主節(jié)點(diǎn)工作,崩潰的主Redis回復(fù)工作后盈电,會(huì)成為從節(jié)點(diǎn).

拷貝開(kāi)始下載的redis解壓后的目錄Redis-x64-3.2.100到D:\Redis-Cluster下蝴簇,并修改文件名 Redis-x64-3.2.100-6381 6382、6383匆帚、6384熬词、6385、6386
復(fù)制六份redis.png

解釋一下為什么要復(fù)制六份:集群規(guī)劃有三個(gè)節(jié)點(diǎn)的集群吸重,每個(gè)節(jié)點(diǎn)有一主一備互拾。需要6臺(tái)虛擬機(jī).配置 三主三從集群.

由于 redis 默認(rèn)端口號(hào)為 6379,那么其它5份的端口可以為6381,6382嚎幸,6383颜矿,6384,6385,6386 我們不適用默認(rèn)的端口號(hào),且不與6379沖突嫉晶,保證6379可以骑疆。

3、分別修改這六份的redis配置

例如替废,打開(kāi)Redis-x64-3.2.100-6381 下有一個(gè)文件 redis.windows.conf 修改里面的端口號(hào)箍铭,以及集群支持配置

port 6381 // 這里把6379改成6381,相應(yīng)的其他5個(gè)修改端口號(hào)為 6382椎镣、6383诈火、6384、6385衣陶、6386
// 修改其他配置支持集群
cluster-enabled yes // 開(kāi)啟集群模式
cluster-config-file nodes-6381.conf // 保存節(jié)點(diǎn)配置,自動(dòng)創(chuàng)建,自動(dòng)更新(建議命名時(shí)加上端口號(hào))
cluster-node-timeout 15000 // 集群超時(shí)時(shí)間柄瑰,節(jié)點(diǎn)超過(guò)這個(gè)時(shí)間沒(méi)反應(yīng)就斷定是宕機(jī)
appendonly yes // 指定是否在每次更新操作后進(jìn)行日志記錄闸氮,Redis在默認(rèn)情況下是異步的把數(shù)據(jù)寫入磁盤,如果不開(kāi)啟教沾,可能會(huì)在斷電時(shí)導(dǎo)致一段時(shí)間內(nèi)的數(shù)據(jù)丟失蒲跨。 yes表示:存儲(chǔ)方式,aof授翻,將寫操作記錄保存到日志中

如果cluster-enabled 不為yes或悲, 那么在使用JedisCluster集群代碼獲取的時(shí)候,會(huì)報(bào)錯(cuò)堪唐。
cluster-node-timeout 調(diào)整為 15000巡语,那么在創(chuàng)建集群的時(shí)候,不會(huì)超時(shí)淮菠。
cluster-config-file nodes-6381.conf 是為該節(jié)點(diǎn)的配置信息男公,這里使用 nodes-端口.conf命名方法。服務(wù)啟動(dòng)后會(huì)在目錄生成該文件

4合陵、編寫一個(gè) bat 來(lái)啟動(dòng) redis

每個(gè)Redis-x64-3.2.100-*節(jié)點(diǎn)目錄下建立 start.bat枢赔,內(nèi)容如下:
比如: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速梗、系統(tǒng)需要有 Ruby環(huán)境

redis的集群使用 ruby腳本編寫,所以系統(tǒng)需要有 Ruby 環(huán)境 ,下載地址:
http://dl.bintray.com/oneclick/rubyinstaller/rubyinstaller-2.3.3-x64.exe

安裝Ruby.png

安裝時(shí)3個(gè)選項(xiàng)都勾選襟齿。
然后對(duì)ruby進(jìn)行配置:

配置ruby.png

6姻锁、構(gòu)建集群腳本redis-trib.rb

可以打開(kāi)https://raw.githubusercontent.com/antirez/redis/unstable/src/redis-trib.rb 然后復(fù)制里面的內(nèi)容到本地并保存為redis-trib.rb;
如下圖蕊唐,與redis集群節(jié)點(diǎn)保存在同一個(gè)文件夾下(比如我所有節(jié)點(diǎn)都存放在D:\Redis-Cluster文件夾下)

集群節(jié)點(diǎn)目錄.png

然后依次啟動(dòng)所有集群節(jié)點(diǎn)start.bat
然后cmd進(jìn)入redis集群節(jié)點(diǎn)D:\Redis-Cluster目錄后屋摔,執(zhí)行:集群?jiǎn)?dòng)命令(–replicas 1 表示為集群中的每個(gè)主節(jié)點(diǎn)創(chuàng)建一個(gè)從節(jié)點(diǎn))

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

如果報(bào)錯(cuò)烁设,前面加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

如果再報(bào)-內(nèi)容如下:

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!,可以看出這不是報(bào)錯(cuò)替梨,是redis-trib.rb版本和你的redis版本不一致,這個(gè)redis-trib.rb可以從對(duì)應(yīng)版本的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

解壓-進(jìn)入redis-win-3.2.100\redis-win-3.2.100\src 找到redis-trib.rb


3.2.100 redis-trib.rb.png

復(fù)制到D:\Redis-Cluster下
集群節(jié)點(diǎn)目錄.png

7副瀑、再執(zhí)行啟動(dòng)集群命令:

在D:\Redis-Cluster下 空白處 Shift+右擊 選擇--在此處打開(kāi) 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

成功啟動(dòng)集群命令成功效果.png

上圖可看出 主節(jié)點(diǎn)為6381,6382,6383端口的三個(gè)地址,6384,6385,6386為三個(gè)從節(jié)點(diǎn):

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

中途會(huì)詢問(wèn)是否打印更多詳細(xì)信息恋谭,輸入yes即可糠睡,然后redis-trib 就會(huì)將這份配置應(yīng)用到集群當(dāng)中,讓各個(gè)節(jié)點(diǎn)開(kāi)始互相通訊:

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集群數(shù)據(jù)分配策略:
采用一種叫做哈希槽 (hash slot)的方式來(lái)分配數(shù)據(jù),redis cluster 默認(rèn)分配了 16384 個(gè)slot疚颊,三個(gè)節(jié)點(diǎn)分別承擔(dān)的slot 區(qū)間是:(如上面3個(gè)M:節(jié)點(diǎn)的slots描述)

節(jié)點(diǎn)6380覆蓋0-5460;
節(jié)點(diǎn)6381覆蓋5461-10922;
節(jié)點(diǎn)6382覆蓋10923-16383.

最后查看所有集群節(jié)點(diǎn)狈孔,會(huì)看到:


測(cè)試集群搭建成功信认!

8、測(cè)試集群

進(jìn)入任意一個(gè)集群節(jié)點(diǎn)均抽,cmd執(zhí)行 redis-cli.exe -c -p 6381

寫入任意一個(gè)value嫁赏,查詢
再寫一個(gè)hash測(cè)試: 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>

可以看到集群會(huì)用CRC16算法來(lái)取模得到所屬的slot,然后將這個(gè)key分到哈希槽區(qū)間的節(jié)點(diǎn)上CRC16(key) % 16384

所以油挥,可以看到我們set的key計(jì)算之后被分配到了slot-5427 上潦蝇, 而slot-5427處在節(jié)點(diǎn)6381上,因此redis自動(dòng)redirect到了6381節(jié)點(diǎn)上.

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

下載集群測(cè)試 提取碼:ef4a
隨便放到一個(gè)磁盤里攘乒,安裝Ruby之后,就可以啟動(dòng)集群命令-測(cè)試集群惋鹅!

三则酝、springboot redis單機(jī)和集群配置

1、springboot redis單機(jī)代碼實(shí)例

springboot+redis項(xiàng)目實(shí)戰(zhàn)完整篇

2闰集、springboot redis集群代碼實(shí)例

1堤魁、配置集群

springboot+redis項(xiàng)目實(shí)戰(zhàn)完整篇 的基礎(chǔ)上,修改yml中的redis配置:

spring:
  redis:
    #host: localhost  # redis單機(jī)配置
    #port: 6379
    max-wait: 30000    # 連接池最大阻塞等待時(shí)間(使用負(fù)值表示沒(méi)有限制)
    max-active: 100   # 連接池最大連接數(shù)(使用負(fù)值表示沒(méi)有限制)
    max-idle: 20     # 連接池中的最大空閑連接
    min-idle: 0     # 連接池中的最小空閑連接
    timeout: 5000   # 連接超時(shí)
    #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  # 最大重定向次數(shù)
2返十、測(cè)試集群配置

可以不用Postman測(cè)試接口妥泉,也可以用下面的方式測(cè)試:用swagger方式測(cè)試接口很方便。
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("個(gè)人SpringBoot測(cè)試系統(tǒng)")
                .description("開(kāi)發(fā)API文檔")
                .contact(contact)
                .version("1.0")
                .build();
    }
}

Controller測(cè)試接口

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測(cè)試")
public class RedisUtil2Controller {

    @Resource
    private RedisUtil redisUtil;

    @RequestMapping(value = "v1/redisSave",method = {RequestMethod.GET})
    @ApiOperation(value = "保存到redis,并返回結(jié)果",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所有數(shù)據(jù)成功";
    }

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

}

在resources/static下創(chuàng)建index.html

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

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

<a href="http://localhost:8080/springboot-test-redis/swagger-ui.html">進(jìn)入swagger頁(yè)面測(cè)試</a>
</body>
</html>

上面的http://localhost:8080/springboot-test-redis修改成自己的項(xiàng)目訪問(wèn)路徑

3洞坑、測(cè)試效果

redis保存數(shù)據(jù):
redis保存數(shù)據(jù)-效果.png

redis根據(jù)key查詢value數(shù)據(jù):


redis查詢數(shù)據(jù)-效果.png

redis查詢數(shù)據(jù)-效果2.png

redis查詢所有數(shù)據(jù):
redis查詢所有數(shù)據(jù)-效果.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末盲链,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子迟杂,更是在濱河造成了極大的恐慌刽沾,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件排拷,死亡現(xiàn)場(chǎng)離奇詭異侧漓,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)监氢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門布蔗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人浪腐,你說(shuō)我怎么就攤上這事纵揍。” “怎么了议街?”我有些...
    開(kāi)封第一講書人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵泽谨,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng)吧雹,這世上最難降的妖魔是什么骨杂? 我笑而不...
    開(kāi)封第一講書人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮雄卷,結(jié)果婚禮上腊脱,老公的妹妹穿的比我還像新娘。我一直安慰自己龙亲,他們只是感情好陕凹,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著鳄炉,像睡著了一般杜耙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拂盯,一...
    開(kāi)封第一講書人閱讀 49,842評(píng)論 1 290
  • 那天佑女,我揣著相機(jī)與錄音,去河邊找鬼谈竿。 笑死团驱,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的空凸。 我是一名探鬼主播嚎花,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼呀洲!你這毒婦竟也來(lái)了紊选?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤道逗,失蹤者是張志新(化名)和其女友劉穎兵罢,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體滓窍,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡卖词,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年吏夯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了此蜈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡锦亦,死狀恐怖舶替,靈堂內(nèi)的尸體忽然破棺而出令境,到底是詐尸還是另有隱情杠园,我是刑警寧澤,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布舔庶,位于F島的核電站抛蚁,受9級(jí)特大地震影響陈醒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜瞧甩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一钉跷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧肚逸,春花似錦爷辙、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至务冕,卻和暖如春血当,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背禀忆。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工臊旭, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人箩退。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓离熏,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親戴涝。 傳聞我的和親對(duì)象是個(gè)殘疾皇子撤奸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • 文章大綱 一郑什、基礎(chǔ)知識(shí)學(xué)習(xí)二府喳、Redis常見(jiàn)的幾種架構(gòu)及優(yōu)缺點(diǎn)總結(jié)三、Redis之Redis Sentinel(哨...
    故事愛(ài)人c閱讀 1,126評(píng)論 3 12
  • 1.集群與分布式的概述 1.1 分布式 分布式是指將不同的業(yè)務(wù)分布在不同的地方. web應(yīng)用和數(shù)據(jù)庫(kù)服務(wù)分開(kāi) 1....
    程序員Darker閱讀 455評(píng)論 1 1
  • redis集群分為服務(wù)端集群和客戶端分片蘑拯,redis3.0以上版本實(shí)現(xiàn)了集群機(jī)制钝满,即服務(wù)端集群,3.0以下使用客戶...
    hadoop_null閱讀 1,586評(píng)論 0 6
  • 搭建集群 介紹完Redis集群分區(qū)規(guī)則之后,下面我們開(kāi)始搭建Redis集群剃法。搭建集群工作需要以下三個(gè)步驟: 準(zhǔn)備節(jié)...
    linuxzw閱讀 217評(píng)論 0 3
  • 1 Redis介紹1.1 什么是NoSql為了解決高并發(fā)、高可擴(kuò)展收厨、高可用晋柱、大數(shù)據(jù)存儲(chǔ)問(wèn)題而產(chǎn)生的數(shù)據(jù)庫(kù)解決方...
    克魯?shù)吕?/span>閱讀 5,274評(píng)論 0 36