SpringBoot整合Redis

最近換了工作,新的公司中用到SpringBoot和Redis,之前也有零散的看過SpringBoot和Redis相關的知識,現在有時間打算自己整合一下這兩個,後面有時間還會繼續整合ActiveMQ。

既然打算整合SpringBoot和Redis,首先對SpringBoot和Redis做一個簡單介紹。

SpringBoot:不是什麼新技術,爲了簡化Spring配置,而提供的新的框架,爲了快速搭建Spring的開發環境,可以純Java開發沒有XML,並且內置了Tomcat無需部署。
Redis:一個非關係型數據庫,提供快速讀寫,主要用於緩存,降低數據庫的讀寫壓力,快速響應。

1.reids的安裝

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

進入到解壓後的 src 目錄,通過如下命令啓動Redis:

cd src

啓動服務端

nohup ./redis-server &  //後臺方式啓動日誌寫在nohup

啓動客戶段

./redis-cli

客戶端連接測試輸入ping,顯示pong 則連接正常如下圖

   ping

在這裏插入圖片描述

幾個常用redis命令:

  keys  *    //查詢當前庫的所有的key值
  del key   //刪除key-value
  set key value  //設置key-value
  get key //獲取key對應的value
  flushdb  //刪除當前庫的值

2. 代碼

githug地址:https://github.com/441630179/SpringBootRedis.git

3. 代碼運行

a)運行SpringApplication
b)瀏覽器中輸入http://localhost:8081/SpringBoot/setValue?key=sex&value=boy
![在這裏插入圖片描述](https://img-blog.csdnimg.cn/2018110612422479.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xhb3RhbnN1b2NhaQ==,size_16,color_FFFFFF,t_70)

c)查看redis中的結果

![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20181106124425191.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xhb3RhbnN1b2NhaQ==,size_16,color_FFFFFF,t_70)

4. 代碼編寫中遇到的坑

1)編寫RedisConfig 類是註解寫錯@Configuration 沒有注意寫成了@Configurable導致加載不到類,啓動tomcat報錯
2)redis存入的值是key和value"\xac\xed\x00\x05t\x00\x03mmm" 顯示問題,但是讀取沒有問題,最後網上查詢是由於SpringBoot默認使用JDK的序列化,所以會這樣,使用以下方法可正常顯示。

/**
     * 設置數據存入 redis 的序列化方式
     * 默認使用JDK的序列化,顯示16進制
     *
     * @param redisTemplate
     * @param factory
     */
    private void initDomainRedisTemplate(RedisTemplate<String, Object> redisTemplate, RedisConnectionFactory factory) {
        RedisSerializer stringSerializer = new StringRedisSerializer();
        redisTemplate.setKeySerializer(stringSerializer);
        redisTemplate.setHashKeySerializer(stringSerializer);
        redisTemplate.setHashValueSerializer(stringSerializer);
        redisTemplate.setValueSerializer(stringSerializer);
        redisTemplate.setConnectionFactory(factory);
    }
    @Bean
    public RedisTemplate<String, Object> functionDomainRedisTemplate() {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        initDomainRedisTemplate(redisTemplate, redisConnectionFactory);
        return redisTemplate;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章