Redis新手的坑,無法連接、缺少類、沒有密碼

阿西吧,自己太菜了,用SpringBoot調用Redis緩存的時候,出了各種問題,記錄一下,大家別學我

本文有自己的經驗,也有從其他博客整理來的零零散散的經驗。

1、安裝Redis

安裝redis,一般有很多方法,比如yun安裝,npm安裝,直接壓縮包安裝,docker運行等等等等

先說yum裏面的

yum安裝比較簡單

首先安裝epel源

yum install -y epel-release

然後安裝redis

yum install -y redis

設置成開機自啓動

chkconfig redis on

卸載redis

yum remove redis

yum安裝的配置文件的位置

配置文件在/etc/redis.conf

服務器和客戶端在 /usr/bin/redis-server redis-cli

whereis redis 可以查看配置文件在哪

docker安裝

docker會用的話,應該很清晰,

docker search redis

docker pull 鏡像名

docker images 查看鏡像

docker 默認沒有配置文件,所以,默認使用問題很大

docekr 自定義配置文件啓動 https://www.jianshu.com/p/ff599cddc869

壓縮包安裝

來自菜鳥

**下載地址:**http://redis.io/download,下載最新穩定版本。

$ wget http://download.redis.io/releases/redis-2.8.17.tar.gz
$ tar xzf redis-2.8.17.tar.gz
$ cd redis-2.8.17
$ make

make完後 redis-2.8.17目錄下會出現編譯後的redis服務程序redis-server,還有用於測試的客戶端程序redis-cli,兩個程序位於安裝目錄 src 目錄下:

下面啓動redis服務.

$ cd src
$ ./redis-server

注意這種方式啓動redis 使用的是默認配置。也可以通過啓動參數告訴redis使用指定配置文件使用下面命令啓動。

$ cd src
$ ./redis-server ../redis.conf

redis.conf 是一個默認的配置文件。我們可以根據需要使用自己的配置文件。

默認使用的是redis目錄下的redis.conf文件,可以直接修改這個文件,也可以新建一個文件(這樣比較保險)

2、redis配置文件

這裏先不說高級配置

下面給了箇中文翻譯的配置文件(看不懂英文了可以看這個)

redis配置文件詳解https://www.jianshu.com/p/41f393f594e8

就最簡單的,讓你的本地程序能訪問遠程服務器上的redis

錯誤:無法鏈接redis,默認情況下,外網是沒辦法訪問redis的,需要修改配置

找到redis的配置文件 redis.conf

修改 protected-mode yes 改爲:protected-mode no
註釋掉 #bin 127.0.0.1

另外redis.conf中設置了密碼也會出現這種情況,註釋掉 #requirepass 這行

設置密碼兩種辦法:

原文https://www.cnblogs.com/tenny-peng/p/11543440.html

需要使用./redis-cli進入redis,

客戶端使用config get requirepass命令查看密碼

>config get requirepass
1)"requirepass"
2)""    //默認空

客戶端使用config set requirepass yourpassword命令設置密碼

>config set requirepass 123456
>OK

一旦設置密碼,必須先驗證通過密碼,否則所有操作不可用

>config get requirepass
(error)NOAUTH Authentication required

使用auth password驗證密碼

>auth 123456
>OK
>config get requirepass
1)"requirepass"
2)"123456"

另外一種辦法

  1. 配置文件設置密碼

在redis根目錄下找到redis.windows.conf配置文件,搜索requirepass,找到註釋密碼行,添加密碼如下:

# requirepass foobared
requirepass tenny     //注意,行前不能有空格

重啓服務後,客戶端重新登錄後發現

>config get requirepass
1)"requirepass"
2)""

密碼還是空?

網上查詢後的辦法:創建redis-server.exe 的快捷方式, 右鍵快捷方式屬性,在目標後面增加redis.windows.conf, 這裏就是關鍵,你雖然修改了.conf文件,但是exe卻沒有使用這個conf,所以我們需要手動指定一下exe按照修改後的conf運行,就OK了。

所以,這裏我再一次重啓redis服務(指定配置文件)

>redis-server.exe redis.windows.conf

客戶端再重新登錄,OK了。

>redis-cli.exe -h 127.0.0.1 -p 6379 -a 123456
>config get requirepass
1)"requirepass"
2)"123456"

3、SpringBoot與Redis的坑

SpringBoot除去註解式的緩存外,還可以使用RedisTemplate來訪問

注意RedisTemplate是RedisAutoConfiguration中,在系統啓動時注入在系統中的Bean,所以我們使用需要引入

然後使用RedisTemplate獲取ValueOperations類,用此進行操作。

 @Autowired
    StringRedisTemplate stringRedisTemplate;
    @Test
    void redisTest(){
        ValueOperations valueOperations=stringRedisTemplate.opsForValue();
        valueOperations.set("456","465");

        System.out.println(valueOperations.get("123"));
    }

java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool

這個看報錯信息你應該知道是缺少了類,認真看一下是缺少了一個依賴(想不到吧,只是redis的依賴還不夠)

引入依賴

		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
        </dependency>

有用了求個贊,謝謝hxd

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章