国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Springboot 整合 Redis配置

這篇具有很好參考價(jià)值的文章主要介紹了Springboot 整合 Redis配置。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

RedisService接口



import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * Redis操作Service
 * Created by macro on 2020/3/3.
 */
public interface RedisService {

    /**
     * 保存屬性
     */
    void set(String key, Object value, long time);

    /**
     * 保存屬性
     */
    void set(String key, Object value);

    /**
     * 獲取屬性
     */
    Object get(String key);

    /**
     * 刪除屬性
     */
    Boolean del(String key);

    /**
     * 批量刪除屬性
     */
    Long del(List<String> keys);

    /**
     * 設(shè)置過期時(shí)間
     */
    Boolean expire(String key, long time);

    /**
     * 獲取過期時(shí)間
     */
    Long getExpire(String key);

    /**
     * 判斷是否有該屬性
     */
    Boolean hasKey(String key);

    /**
     * 按delta遞增
     */
    Long incr(String key, long delta);

    /**
     * 按delta遞減
     */
    Long decr(String key, long delta);

    /**
     * 獲取Hash結(jié)構(gòu)中的屬性
     */
    Object hGet(String key, String hashKey);

    /**
     * 向Hash結(jié)構(gòu)中放入一個(gè)屬性
     */
    Boolean hSet(String key, String hashKey, Object value, long time);

    /**
     * 向Hash結(jié)構(gòu)中放入一個(gè)屬性
     */
    void hSet(String key, String hashKey, Object value);

    /**
     * 直接獲取整個(gè)Hash結(jié)構(gòu)
     */
    Map<Object, Object> hGetAll(String key);

    /**
     * 直接設(shè)置整個(gè)Hash結(jié)構(gòu)
     */
    Boolean hSetAll(String key, Map<String, Object> map, long time);

    /**
     * 直接設(shè)置整個(gè)Hash結(jié)構(gòu)
     */
    void hSetAll(String key, Map<String, ?> map);

    /**
     * 刪除Hash結(jié)構(gòu)中的屬性
     */
    void hDel(String key, Object... hashKey);

    /**
     * 判斷Hash結(jié)構(gòu)中是否有該屬性
     */
    Boolean hHasKey(String key, String hashKey);

    /**
     * Hash結(jié)構(gòu)中屬性遞增
     */
    Long hIncr(String key, String hashKey, Long delta);

    /**
     * Hash結(jié)構(gòu)中屬性遞減
     */
    Long hDecr(String key, String hashKey, Long delta);

    /**
     * 獲取Set結(jié)構(gòu)
     */
    Set<Object> sMembers(String key);

    /**
     * 向Set結(jié)構(gòu)中添加屬性
     */
    Long sAdd(String key, Object... values);

    /**
     * 向Set結(jié)構(gòu)中添加屬性
     */
    Long sAdd(String key, long time, Object... values);

    /**
     * 是否為Set中的屬性
     */
    Boolean sIsMember(String key, Object value);

    /**
     * 獲取Set結(jié)構(gòu)的長(zhǎng)度
     */
    Long sSize(String key);

    /**
     * 刪除Set結(jié)構(gòu)中的屬性
     */
    Long sRemove(String key, Object... values);

    /**
     * 獲取List結(jié)構(gòu)中的屬性
     */
    List<Object> lRange(String key, long start, long end);

    /**
     * 獲取List結(jié)構(gòu)的長(zhǎng)度
     */
    Long lSize(String key);

    /**
     * 根據(jù)索引獲取List中的屬性
     */
    Object lIndex(String key, long index);

    /**
     * 向List結(jié)構(gòu)中添加屬性
     */
    Long lPush(String key, Object value);

    /**
     * 向List結(jié)構(gòu)中添加屬性
     */
    Long lPush(String key, Object value, long time);

    /**
     * 向List結(jié)構(gòu)中批量添加屬性
     */
    Long lPushAll(String key, Object... values);

    /**
     * 向List結(jié)構(gòu)中批量添加屬性
     */
    Long lPushAll(String key, Long time, Object... values);

    /**
     * 從List結(jié)構(gòu)中移除屬性
     */
    Long lRemove(String key, long count, Object value);
}

RedisServiceImpl 實(shí)現(xiàn)類

package com.macro.mall.common.service.impl;

import com.macro.mall.common.service.RedisService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;

import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;

/**
 * Redis操作Service實(shí)現(xiàn)類
 * Created by macro on 2020/3/3.
 */
public class RedisServiceImpl implements RedisService {
    @Autowired
    private RedisTemplate<String, Object> redisTemplate;

    @Override
    public void set(String key, Object value, long time) {
        redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
    }

    @Override
    public void set(String key, Object value) {
        redisTemplate.opsForValue().set(key, value);
    }

    @Override
    public Object get(String key) {
        return redisTemplate.opsForValue().get(key);
    }

    @Override
    public Boolean del(String key) {
        return redisTemplate.delete(key);
    }

    @Override
    public Long del(List<String> keys) {
        return redisTemplate.delete(keys);
    }

    @Override
    public Boolean expire(String key, long time) {
        return redisTemplate.expire(key, time, TimeUnit.SECONDS);
    }

    @Override
    public Long getExpire(String key) {
        return redisTemplate.getExpire(key, TimeUnit.SECONDS);
    }

    @Override
    public Boolean hasKey(String key) {
        return redisTemplate.hasKey(key);
    }

    @Override
    public Long incr(String key, long delta) {
        return redisTemplate.opsForValue().increment(key, delta);
    }

    @Override
    public Long decr(String key, long delta) {
        return redisTemplate.opsForValue().increment(key, -delta);
    }

    @Override
    public Object hGet(String key, String hashKey) {
        return redisTemplate.opsForHash().get(key, hashKey);
    }

    @Override
    public Boolean hSet(String key, String hashKey, Object value, long time) {
        redisTemplate.opsForHash().put(key, hashKey, value);
        return expire(key, time);
    }

    @Override
    public void hSet(String key, String hashKey, Object value) {
        redisTemplate.opsForHash().put(key, hashKey, value);
    }

    @Override
    public Map<Object, Object> hGetAll(String key) {
        return redisTemplate.opsForHash().entries(key);
    }

    @Override
    public Boolean hSetAll(String key, Map<String, Object> map, long time) {
        redisTemplate.opsForHash().putAll(key, map);
        return expire(key, time);
    }

    @Override
    public void hSetAll(String key, Map<String, ?> map) {
        redisTemplate.opsForHash().putAll(key, map);
    }

    @Override
    public void hDel(String key, Object... hashKey) {
        redisTemplate.opsForHash().delete(key, hashKey);
    }

    @Override
    public Boolean hHasKey(String key, String hashKey) {
        return redisTemplate.opsForHash().hasKey(key, hashKey);
    }

    @Override
    public Long hIncr(String key, String hashKey, Long delta) {
        return redisTemplate.opsForHash().increment(key, hashKey, delta);
    }

    @Override
    public Long hDecr(String key, String hashKey, Long delta) {
        return redisTemplate.opsForHash().increment(key, hashKey, -delta);
    }

    @Override
    public Set<Object> sMembers(String key) {
        return redisTemplate.opsForSet().members(key);
    }

    @Override
    public Long sAdd(String key, Object... values) {
        return redisTemplate.opsForSet().add(key, values);
    }

    @Override
    public Long sAdd(String key, long time, Object... values) {
        Long count = redisTemplate.opsForSet().add(key, values);
        expire(key, time);
        return count;
    }

    @Override
    public Boolean sIsMember(String key, Object value) {
        return redisTemplate.opsForSet().isMember(key, value);
    }

    @Override
    public Long sSize(String key) {
        return redisTemplate.opsForSet().size(key);
    }

    @Override
    public Long sRemove(String key, Object... values) {
        return redisTemplate.opsForSet().remove(key, values);
    }

    @Override
    public List<Object> lRange(String key, long start, long end) {
        return redisTemplate.opsForList().range(key, start, end);
    }

    @Override
    public Long lSize(String key) {
        return redisTemplate.opsForList().size(key);
    }

    @Override
    public Object lIndex(String key, long index) {
        return redisTemplate.opsForList().index(key, index);
    }

    @Override
    public Long lPush(String key, Object value) {
        return redisTemplate.opsForList().rightPush(key, value);
    }

    @Override
    public Long lPush(String key, Object value, long time) {
        Long index = redisTemplate.opsForList().rightPush(key, value);
        expire(key, time);
        return index;
    }

    @Override
    public Long lPushAll(String key, Object... values) {
        return redisTemplate.opsForList().rightPushAll(key, values);
    }

    @Override
    public Long lPushAll(String key, Long time, Object... values) {
        Long count = redisTemplate.opsForList().rightPushAll(key, values);
        expire(key, time);
        return count;
    }

    @Override
    public Long lRemove(String key, long count, Object value) {
        return redisTemplate.opsForList().remove(key, count, value);
    }
}

Redis 配置類

import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
import com.macro.mall.common.service.RedisService;
import com.macro.mall.common.service.impl.RedisServiceImpl;
import org.springframework.context.annotation.Bean;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.cache.RedisCacheWriter;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializationContext;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

import java.time.Duration;

/**
 * Redis基礎(chǔ)配置
 * Created by macro on 2020/6/19.
 */
public class RedisConfig {

    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisSerializer<Object> serializer = redisSerializer();
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(serializer);
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashValueSerializer(serializer);
        redisTemplate.afterPropertiesSet();
        return redisTemplate;
    }

    @Bean
    public RedisSerializer<Object> redisSerializer() {
        //創(chuàng)建JSON序列化器
        Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<>(Object.class);
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        //必須設(shè)置,否則無法將JSON轉(zhuǎn)化為對(duì)象,會(huì)轉(zhuǎn)化成Map類型
        objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance,ObjectMapper.DefaultTyping.NON_FINAL);
        serializer.setObjectMapper(objectMapper);
        return serializer;
    }

    @Bean
    public RedisCacheManager redisCacheManager(RedisConnectionFactory redisConnectionFactory) {
        RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory);
        //設(shè)置Redis緩存有效期為1天
        RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
                .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer())).entryTtl(Duration.ofDays(1));
        return new RedisCacheManager(redisCacheWriter, redisCacheConfiguration);
    }


    @Bean
    public RedisService redisService(){
        return new RedisServiceImpl();
    }

}

文章來源地址http://www.zghlxwxcb.cn/news/detail-683212.html

到了這里,關(guān)于Springboot 整合 Redis配置的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Spring Boot 整合 Redis 全面教程:從配置到使用

    Redis 是一種高性能的鍵值存儲(chǔ)數(shù)據(jù)庫,而 Spring Boot 是一個(gè)簡(jiǎn)化了開發(fā)過程的 Java 框架。將兩者結(jié)合,可以輕松地在 Spring Boot 項(xiàng)目中使用 Redis 來實(shí)現(xiàn)數(shù)據(jù)緩存、會(huì)話管理和分布式鎖等功能。 在 pom.xml 文件中添加 Redis 相關(guān)依賴 在 application.properties 或 application.yml 配置文件中添

    2024年02月13日
    瀏覽(23)
  • SpringBoot整合redis的配置

    第一步,引入依賴。 第二步,配置文件中新增redis的配置項(xiàng) yml properties 第三步,新增redis配置類 @EnableCaching 作用:開啟緩存 @AutoConfigureAfter 作用:在加載配置的類之后再加載當(dāng)前類

    2024年02月15日
    瀏覽(18)
  • 【SpringBoot3】Spring Boot 3.0 集成 Redis 緩存

    Redis緩存是一個(gè)開源的使用ANSIC語言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫,并提供多種語言的API。它主要用于作為數(shù)據(jù)庫、緩存和消息中間件,以快速讀寫和豐富的數(shù)據(jù)結(jié)構(gòu)支持而著稱。 在應(yīng)用程序和數(shù)據(jù)庫之間,Redis緩存作為一個(gè)中間層起著關(guān)鍵

    2024年02月21日
    瀏覽(90)
  • SpringBoot整合Freemaker結(jié)合Vue實(shí)現(xiàn)頁面填寫一鍵自動(dòng)生成Redis的配置文件

    SpringBoot整合Freemaker結(jié)合Vue實(shí)現(xiàn)頁面填寫一鍵自動(dòng)生成Redis的配置文件

    ?????作者名稱:DaenCode ??作者簡(jiǎn)介:啥技術(shù)都喜歡搗鼓搗鼓,喜歡分享技術(shù)、經(jīng)驗(yàn)、生活。 ??人生感悟:嘗盡人生百味,方知世間冷暖。 ??所屬專欄:SpringBoot實(shí)戰(zhàn) 標(biāo)題 一文帶你學(xué)會(huì)使用SpringBoot+Avue實(shí)現(xiàn)短信通知功能(含重要文件代碼) 一張思維導(dǎo)圖帶你學(xué)會(huì)Springboot創(chuàng)

    2024年02月10日
    瀏覽(41)
  • Spring Boot整合Redis

    Spring Boot整合Redis

    Redis是一個(gè)開源(BSD許可)的、內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)系統(tǒng),它可以用作數(shù)據(jù)庫、緩存和消息中間件,并提供多種語言的API。 Redis支持多種類型的數(shù)據(jù)結(jié)構(gòu),如 字符串(strings)、散列(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)與范圍查詢、bitmaps、 hyperlo

    2024年02月09日
    瀏覽(25)
  • 21 Spring Boot整合Redis

    21 Spring Boot整合Redis

    ? ? 目錄 一、Redis簡(jiǎn)介 二、創(chuàng)建springboot整合redis工程 三、添加依賴 四、配置Yml 五、創(chuàng)建Redis配置類? 六、創(chuàng)建Redis工具類,封裝Redis的api 七、操作Redis? 八、驗(yàn)證 ? ? ? 簡(jiǎn)單來說 Redis 就是一個(gè)使用 C 語言開發(fā)的數(shù)據(jù)庫,不過與傳統(tǒng)數(shù)據(jù)庫不同的是 Redis 的數(shù)據(jù)是存在內(nèi)存中的

    2024年02月09日
    瀏覽(22)
  • spring boot 簡(jiǎn)單整合 Redis

    2024年02月12日
    瀏覽(19)
  • Spring Boot 整合Redis實(shí)現(xiàn)消息隊(duì)列

    ??本篇文章主要來講Spring Boot 整合Redis實(shí)現(xiàn)消息隊(duì)列,實(shí)現(xiàn)redis用作消息隊(duì)列有多種方式,比如: 基于 List 的 rpush+lpop 或 lpush+rpop 基于 List 的 rpush+blpop 或 lpush+brpop (阻塞式獲取消息) 基于 Sorted Set 的優(yōu)先級(jí)隊(duì)列 Redis Stream (Redis5.0版本開始) Pub/Sub 機(jī)制 ??不過這里講的是

    2024年02月13日
    瀏覽(34)
  • 【Redis】SpringBoot整合Redis

    SpringData是Spring里專門用來操作數(shù)據(jù)的模塊,其中對(duì)redis集成的模塊 它提供了對(duì)不同的redis客戶端的整合比如Lettuce和Jedis,提供了RedisTemplate統(tǒng)一的API來操作redis,而且它支持Redis的發(fā)布訂閱模式、哨兵和Redis集群,以及Lettuce的響應(yīng)式編程,支持序列化于反序列化,支持Redis的JD

    2023年04月23日
    瀏覽(20)
  • Spring Boot整合Redis實(shí)現(xiàn)訂單超時(shí)處理

    Spring Boot整合Redis實(shí)現(xiàn)訂單超時(shí)處理

    ??歡迎來到架構(gòu)設(shè)計(jì)專欄~Spring Boot整合Redis實(shí)現(xiàn)訂單超時(shí)處理 ☆* o(≧▽≦)o *☆嗨~我是IT·陳寒?? ?博客主頁:IT·陳寒的博客 ??該系列文章專欄:架構(gòu)設(shè)計(jì) ??其他專欄:Java學(xué)習(xí)路線 Java面試技巧 Java實(shí)戰(zhàn)項(xiàng)目 AIGC人工智能 數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí) ??文章作者技術(shù)和水平有限,如果文

    2024年02月03日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包