国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

redis整合springboot的helloworld

xiaoxiaozi / 1283人閱讀

摘要:喜歡在內存操作,比在磁盤瞎忙高效多了,因此深受人們喜愛。數據結構有五種數據結構字符串哈希列表集合最常用的就是類型,通常使用它做緩存,減輕直接訪問數據庫的壓力。的話可以用來做用戶,可以用來做粉絲列表,的話可以做共同好友,可以做排行榜。

引入依賴
 compile "org.springframework.boot:spring-boot-starter-data-redis"

使用redis有兩種方法

1.Jedis

Jedis jedis = new Jedis("localhost");

2.RedisTemplate

@Autowired
private RedisTemplate redisTemplate;

如果使用RedisTemplate的話,要在application.properties中配置信息,這里我使用Jedis比較簡單

redis的自動配置

在application.properties文件下

#redis的springboot的自動配置
# Redis數據庫索引(默認為0)
spring.redis.database=0
# Redis服務器地址
spring.redis.host=127.0.0.1
# Redis服務器連接端口
spring.redis.port=6379  
# Redis服務器連接密碼(默認為空)
spring.redis.password=
# 連接池最大連接數(使用負值表示沒有限制)
spring.redis.pool.max-active=8  
# 連接池最大阻塞等待時間(使用負值表示沒有限制)
spring.redis.pool.max-wait=-1  
# 連接池中的最大空閑連接
spring.redis.pool.max-idle=8  
# 連接池中的最小空閑連接
spring.redis.pool.min-idle=0  
# 連接超時時間(毫秒)
spring.redis.timeout=0
Jedis使用
package com.test.booleanjava.helloRS.util;

import redis.clients.jedis.Jedis;

/**
 * @author booleanjava
 * Date: 2019/7/2 19:48
 * description:redis的工具類
 */
public class RedisUtil {
    static Jedis jedis = new Jedis("localhost");

    /**
     * 插入key,如果存在就更新
     * @param key
     * @param value
     * @return
     */
    public static   String set(String key, String value){
        return  jedis.set(key, value);
    }

    /**
     * 獲取key的值
     * @param key
     * @return
     */
    public static String get(String key) {
        return jedis.get(key);
    }

    /**
     * 刪除key
     * @param key
     * @return
     */
    public static Long del(String key){
        return jedis.del(key);
    }

    /**
     * 設置一個有過期時間的key(秒)
     * @param key
     * @param seconds
     * @param value
     * @return
     */
    public static String setex(final String key, final int seconds, final String value){
        return jedis.setex(key, seconds, value);
    }

    /**
     * 如果不存在就執行操作,用作簡單分布式鎖
     *
     * @param key
     * @param value
     * @return true表示執行,false表示沒有執行
     */
    public static Boolean setnx(final String key, final String value){
        return jedis.setnx(key, value) == 1;
    }

}
RedisTemplates使用
package com.test.booleanjava.helloRS.util;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

/**
 * @author boolean
 * Date: 2019/7/2 19:48
 * description:
 */

@Component
public class Redisplus {

    @Autowired
    private  RedisTemplate redisTemplate;

    public  void set(String key, String value){
        redisTemplate.opsForValue().set(key, value);

    }
}
測試
package com.test.booleanjava.helloRS.controller;


import com.test.booleanjava.helloRS.entity.User;
import com.test.booleanjava.helloRS.util.Redisplus;
import com.test.booleanjava.helloRS.service.IUserService;
import com.test.booleanjava.helloRS.util.RedisUtil;
import com.test.base.core.util.LogUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Date;

/**
 * @author booleanjava
 * Date: 2019/7/2 19:48
 * description:
 */
@RestController
@RequestMapping("/helloRS/redisHello")
public class RedisHello {
    private final static Logger logger = LoggerFactory.getLogger(RedisHello.class);

    private final static String USERKEY = "com.test.booleanjava.helloRS.controller.setex";
    private final static String LOCKKEY = "com.test.booleanjava.helloRS.controller.lock";


    @Autowired
    private IUserService iUserService;

    @Autowired
    private Redisplus redisplus;

    @Autowired
    private RedisTemplate redisTemplate;
    RedisSerializer redisSerializer =new StringRedisSerializer();

    @RequestMapping("/hello")
    public String  hello(){
        LogUtil.info("redis的展示:[{}]", redisTemplate);
        return "hello, redis";
    }

    @RequestMapping("/set")
    public String  set(){
        Date date = new Date();
        redisTemplate.setKeySerializer(redisSerializer);
        redisTemplate.opsForValue().set("q", "1");
        redisTemplate.opsForValue().get("q");
        System.out.println(redisTemplate.opsForValue().get("q"));
        RedisUtil.set("a1", String.valueOf(1));
        logger.info("redis的展示:[{}]", redisTemplate);
        return "hello, set一下redis";
    }

    @RequestMapping("/setex")
    public String setex( ){
//        String key = "1min";
//        int seconds = 10;
//        String value = "陳";
//        RedisUtil.setex(key, seconds, value);
//        String rs = RedisUtil.get(key);
//        logger.info("獲取的值:[{}]", rs);
        String value = RedisUtil.get(USERKEY);
        if (value != null) {
            logger.info("緩存的user值:[{}]", value);
            return value;
        }
        User user = iUserService.query().eq("name", "chen").one();
        logger.info("user的值:[{}]",user.toString());
        if (user != null ) {
            RedisUtil.setex(USERKEY, 60, user.toString());
        }
        return "hello,booleanjava,設置了有時限的key";
    }

    @RequestMapping("/del")
    public String del(String key) {
        redisTemplate.delete(key);
        return "hello, del一下redis";
    }

    /**
     * 做分布鎖,
     *先加鎖,寫業務,最后解鎖
     * @return
     */
    @RequestMapping("/lock")
    public String lock() {
        //加鎖
        RedisUtil.setnx(LOCKKEY,LOCKKEY);
        //寫業務代碼,一人我飲酒醉

        //解鎖
        RedisUtil.del(LOCKKEY);

        return "hello, lock一下redis";
    }
}
源碼

https://github.com/blackdogss...

深入 背景

互聯網公司大部分通常使用myslq作為數據庫存儲數據,但是mysql存數據是以影響IO為代價的,所以mysql是系統的常見瓶頸,為解決這個問題,redis這種非關系型數據庫就出現了,存在即合理。redis喜歡在內存操作,比mysql在磁盤瞎忙高效多了,因此深受人們喜愛。

數據結構

redis有五種數據結構

1.String 字符串

2.Hash哈希

3.List列表

4.Set集合

5.Sorted Set

最常用的就是String類型,通常使用它做緩存,減輕直接訪問數據庫的壓力。Hash的話可以用來做用戶id,List可以用來做粉絲列表,Set的話可以做共同好友,Sorted Set可以做排行榜。

分布式鎖

redis處理上面列舉的例子,還有就是可以做分布式鎖,在分布式系統中,接口面臨的是多進程多線程訪問,如果依賴java的鎖是不能解決問題的,因為進程之間不共享內存;利用數據庫加鎖又顯得笨重,因此還得用redis來加鎖。redis怎么加鎖,主要還是利用setnx命令,該命令作用是如果key存在就不執行操作,不存在的話就設置value,這種特性就是為鎖打造的啊。

公眾號

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/75225.html

相關文章

  • Spring Boot 《一》開發一個“HelloWorld web 應用

    摘要:一概括,如果使用開發一個的應用創建一個項目并且導入相關包。創建一個編寫一個控制類需要一個部署應用的服務器如,特點設計目的是用來簡化新應用的初始搭建以及開發過程。啟動器可以和位于同一個包下,或者位于的上一級包中,但是不能放到的平級以及子包下。 一,Spring Boot 介紹 Spring Boot不是一個新的框架,默認配置了多種框架使用方式,使用SpringBoot很容易創建一個獨立運...

    chaosx110 評論0 收藏0
  • SpringBoot非官方教程 | 第九篇: SpringBoot整合Redis

    摘要:經過上述兩步的操作,你可以訪問數據了。數據訪問層通過來訪問分鐘過期單元測試啟動單元測試,你發現控制臺打印了單元測試通過源碼下載參考資料 這篇文章主要介紹springboot整合redis 引入依賴 在pom文件中添加redis依賴: org.springframework.boot spring-boot-starter-data-redis 配置數據源 spri...

    csRyan 評論0 收藏0
  • 【Spring Boot】Spring Boot——HelloWorld

    摘要:使用嵌入式容器,應用無需達成包。自動依賴與版本控制。準生產環境的運行時應用監控。告訴開啟自動配置功能,這樣自動配置才能生效。其組成為為的底層注解,表明給容器中導入一個組件,導入的組建由類提供。 Spring Boot——入門 spring boot簡化了spring的開發,是J2EE一站式解決方案。 Spring Boot 的優缺點 優點 快速創建獨立運行的服務,與主流框架集成。 使...

    hellowoody 評論0 收藏0
  • 兩年了,我寫了這些干貨!

    摘要:開公眾號差不多兩年了,有不少原創教程,當原創越來越多時,大家搜索起來就很不方便,因此做了一個索引幫助大家快速找到需要的文章系列處理登錄請求前后端分離一使用完美處理權限問題前后端分離二使用完美處理權限問題前后端分離三中密碼加鹽與中異常統一處理 開公眾號差不多兩年了,有不少原創教程,當原創越來越多時,大家搜索起來就很不方便,因此做了一個索引幫助大家快速找到需要的文章! Spring Boo...

    huayeluoliuhen 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<