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

Spring Data Redis:在Java中操作Redis

這篇具有很好參考價值的文章主要介紹了Spring Data Redis:在Java中操作Redis。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

一、Spring Data Redis使用方式

1.1?介紹? ? ? ?

1.2?配置?

1.3?RedisTemplate

二、環(huán)境搭建?

2.1?導(dǎo)入Spring Data Redis的maven坐標(biāo)

2.2?配置Redis數(shù)據(jù)源 ?

2.3?編寫配置類,創(chuàng)建RedisTemplate對象 ?

三、操作常見類型數(shù)據(jù)

3.1?操作字符串類型數(shù)據(jù)

3.2?操作哈希類型數(shù)據(jù) ?

3.3?操作列表類型數(shù)據(jù)

3.4?操作集合類型數(shù)據(jù)

3.5?操作有序集合類型數(shù)據(jù)

3.6?通用命令操作


一、Spring Data Redis使用方式

1.1?介紹? ? ? ?

Spring Data Redis 是 Spring 的一部分,提供了在 Spring 應(yīng)用中通過簡單的配置就可以訪問 Redis 服務(wù),對 Redis 底層開發(fā)包進(jìn)行了高度封裝。在 Spring 項(xiàng)目中,可以使用Spring Data Redis來簡化 Redis 操作。

網(wǎng)址:Spring Data Redis

1.2?配置?

Spring Boot提供了對應(yīng)的Starter,maven坐標(biāo):

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

1.3?RedisTemplate

Spring Data Redis中提供了一個高度封裝的類:RedisTemplate,對相關(guān)api進(jìn)行了歸類封裝,將同一類型操作封裝為operation接口,具體分類如下:

  • ValueOperations:string數(shù)據(jù)操作

  • SetOperations:set類型數(shù)據(jù)操作

  • ZSetOperations:zset類型數(shù)據(jù)操作

  • HashOperations:hash類型的數(shù)據(jù)操作

  • ListOperations:list類型的數(shù)據(jù)操作

二、環(huán)境搭建?

2.1?導(dǎo)入Spring Data Redis的maven坐標(biāo)

<dependency>
? ? ?<groupId>org.springframework.boot</groupId>
? ? ?<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

2.2?配置Redis數(shù)據(jù)源 ?

在application-dev.yml中添加:

sky:
? redis:
? ? host: localhost
? ? port: 6379
? ? password: 123456
? ? database: 10

解釋說明:

database:指定使用Redis的哪個數(shù)據(jù)庫,Redis服務(wù)啟動后默認(rèn)有16個數(shù)據(jù)庫,編號分別是從0到15。

可以通過修改Redis配置文件來指定數(shù)據(jù)庫的數(shù)量。

在application.yml中添加讀取application-dev.yml中的相關(guān)Redis配置

spring:
? profiles:
? ? active: dev
? redis:
? ? host: ${sky.redis.host}
? ? port: ${sky.redis.port}
? ? password: ${sky.redis.password}
? ? database: ${sky.redis.database}?

2.3?編寫配置類,創(chuàng)建RedisTemplate對象 ?

package com.sky.config;

import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;

@Configuration
@Slf4j
public class RedisConfiguration {

    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
        log.info("開始創(chuàng)建redis模板對象...");
        RedisTemplate redisTemplate = new RedisTemplate();
        //設(shè)置redis的連接工廠對象
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        //設(shè)置redis key的序列化器
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        return redisTemplate;
    }
}

解釋說明:

當(dāng)前配置類不是必須的,因?yàn)?Spring Boot 框架會自動裝配 RedisTemplate 對象,但是默認(rèn)的key序列化器為

JdkSerializationRedisSerializer,導(dǎo)致我們存到Redis中后的數(shù)據(jù)和原始數(shù)據(jù)有差別,故設(shè)置為

StringRedisSerializer序列化器。文章來源地址http://www.zghlxwxcb.cn/news/detail-627429.html

三、操作常見類型數(shù)據(jù)

3.1?操作字符串類型數(shù)據(jù)

	/**
     * 操作字符串類型的數(shù)據(jù)
     */
    @Test
    public void testString(){
        // set get setex setnx
        redisTemplate.opsForValue().set("name","小明");
        String city = (String) redisTemplate.opsForValue().get("name");
        System.out.println(city);
        redisTemplate.opsForValue().set("code","1234",3, TimeUnit.MINUTES);
        redisTemplate.opsForValue().setIfAbsent("lock","1");
        redisTemplate.opsForValue().setIfAbsent("lock","2");
    }

3.2?操作哈希類型數(shù)據(jù) ?

/**
     * 操作哈希類型的數(shù)據(jù)
     */
    @Test
    public void testHash(){
        //hset hget hdel hkeys hvals
        HashOperations hashOperations = redisTemplate.opsForHash();

        hashOperations.put("100","name","tom");
        hashOperations.put("100","age","20");

        String name = (String) hashOperations.get("100", "name");
        System.out.println(name);

        Set keys = hashOperations.keys("100");
        System.out.println(keys);

        List values = hashOperations.values("100");
        System.out.println(values);

        hashOperations.delete("100","age");
    }

?3.3?操作列表類型數(shù)據(jù)

	/**
     * 操作列表類型的數(shù)據(jù)
     */
    @Test
    public void testList(){
        //lpush lrange rpop llen
        ListOperations listOperations = redisTemplate.opsForList();

        listOperations.leftPushAll("mylist","a","b","c");
        listOperations.leftPush("mylist","d");

        List mylist = listOperations.range("mylist", 0, -1);
        System.out.println(mylist);

        listOperations.rightPop("mylist");

        Long size = listOperations.size("mylist");
        System.out.println(size);
    }

3.4?操作集合類型數(shù)據(jù)

	/**
     * 操作集合類型的數(shù)據(jù)
     */
    @Test
    public void testSet(){
        //sadd smembers scard sinter sunion srem
        SetOperations setOperations = redisTemplate.opsForSet();

        setOperations.add("set1","a","b","c","d");
        setOperations.add("set2","a","b","x","y");

        Set members = setOperations.members("set1");
        System.out.println(members);

        Long size = setOperations.size("set1");
        System.out.println(size);

        Set intersect = setOperations.intersect("set1", "set2");
        System.out.println(intersect);

        Set union = setOperations.union("set1", "set2");
        System.out.println(union);

        setOperations.remove("set1","a","b");
    }

3.5?操作有序集合類型數(shù)據(jù)

	/**
     * 操作有序集合類型的數(shù)據(jù)
     */
    @Test
    public void testZset(){
        //zadd zrange zincrby zrem
        ZSetOperations zSetOperations = redisTemplate.opsForZSet();

        zSetOperations.add("zset1","a",10);
        zSetOperations.add("zset1","b",12);
        zSetOperations.add("zset1","c",9);

        Set zset1 = zSetOperations.range("zset1", 0, -1);
        System.out.println(zset1);

        zSetOperations.incrementScore("zset1","c",10);

        zSetOperations.remove("zset1","a","b");
    }

3.6?通用命令操作

	/**
     * 通用命令操作
     */
    @Test
    public void testCommon(){
        //keys exists type del
        Set keys = redisTemplate.keys("*");
        System.out.println(keys);

        Boolean name = redisTemplate.hasKey("name");
        Boolean set1 = redisTemplate.hasKey("set1");

        for (Object key : keys) {
            DataType type = redisTemplate.type(key);
            System.out.println(type.name());
        }

        redisTemplate.delete("mylist");
    }

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

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

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

相關(guān)文章

  • Spring Data Redis的使用

    Spring Data Redis的使用

    解決方法為在Redis-x64-3.2.100目錄下打開兩個cmd窗口,分別輸入 命令redis-server.exe redis.windows.conf 和 命令redis-cli ,即可成功連接。 ? 首先在maven的pom文件中引入 Spring Data Redis 模塊,代碼如下。 然后,在springboot的配置文件中寫入redis配置,代碼如下。 然后,處理keys的序列化問題

    2024年02月09日
    瀏覽(28)
  • 【Java Web】利用Spring整合Redis,配置RedisTemplate

    1. 在config中加入RedisConfig配置類 2. 寫個測試類測試一下 3. 注意事項(xiàng) Redis不滿足事務(wù)的原子性,原子性是指事務(wù)要么被全部執(zhí)行,要么都不執(zhí)行。但是Redis不支持回滾,就可能會出現(xiàn)有些語句執(zhí)行成功,有些執(zhí)行失敗,因此具備原子性; Redis事務(wù)的三個階段: 開始事務(wù) 命令入

    2024年02月09日
    瀏覽(17)
  • Spring Data Redis切換底層Jedis 和 Lettuce實(shí)現(xiàn)

    Spring Data Redis切換底層Jedis 和 Lettuce實(shí)現(xiàn)

    Spring Data Redis是 Spring Data 系列的一部分,它提供了Spring應(yīng)用程序?qū)edis的輕松配置和使用。它不僅提供了對Redis操作的高級抽象,還支持Jedis和Lettuce兩種連接方式。 可通過簡單的配置就能連接Redis,并且可以切換Jedis和Lettuce兩個連接方式。下面先來看看我們該如何使用它。 使

    2024年02月05日
    瀏覽(30)
  • Java--業(yè)務(wù)場景:在Spring項(xiàng)目啟動時加載Java枚舉類到Redis中(補(bǔ)充)

    Java--業(yè)務(wù)場景:在Spring項(xiàng)目啟動時加載Java枚舉類到Redis中(補(bǔ)充)

    前言 通過Java–業(yè)務(wù)場景:在Spring項(xiàng)目啟動時加載Java枚舉類到Redis中,我們成功將Java項(xiàng)目里的枚舉類加載到Redis中了,接下來我們只需要寫接口獲取需要的枚舉值數(shù)據(jù)就可以了,下面一起來編寫這個接口吧。 步驟 在EnumService接口創(chuàng)建一個方法,負(fù)責(zé)查詢枚舉類的值,供接口調(diào)用

    2024年01月25日
    瀏覽(15)
  • Spring Data Redis + RabbitMQ - 基于 string 實(shí)現(xiàn)緩存、計(jì)數(shù)功能(同步數(shù)據(jù))

    Spring Data Redis + RabbitMQ - 基于 string 實(shí)現(xiàn)緩存、計(jì)數(shù)功能(同步數(shù)據(jù))

    目錄 一、Spring Data Redis 1.1、緩存功能 1.1.1、分析 1.1.2、案例實(shí)現(xiàn) 1.1.3、效果演示 1.2、計(jì)數(shù)功能(Redis + RabbitMQ) 1.2.1、分析 1.2.2、案例實(shí)現(xiàn) 1.1.1、分析 使用 redis 作為緩存, MySQL 作為數(shù)據(jù)庫組成的架構(gòu) 整體思路: 應(yīng)用服務(wù)器訪問數(shù)據(jù)的時候,先查詢 Redis,如果 Redis 上存在該

    2024年02月05日
    瀏覽(22)
  • java 企業(yè)工程管理系統(tǒng)軟件源碼+Spring Cloud + Spring Boot +二次開發(fā)+ MybatisPlus + Redis

    java 企業(yè)工程管理系統(tǒng)軟件源碼+Spring Cloud + Spring Boot +二次開發(fā)+ MybatisPlus + Redis

    ?? 工程項(xiàng)目管理軟件(工程項(xiàng)目管理系統(tǒng))對建設(shè)工程項(xiàng)目管理組織建設(shè)、項(xiàng)目策劃決策、規(guī)劃設(shè)計(jì)、施工建設(shè)到竣工交付、總結(jié)評估、運(yùn)維運(yùn)營,全過程、全方位的對項(xiàng)目進(jìn)行綜合管理 ? ?工程項(xiàng)目各模塊及其功能點(diǎn)清單 一、系統(tǒng)管理 ? ? 1、數(shù)據(jù)字典:實(shí)現(xiàn)對數(shù)據(jù)字典

    2024年02月10日
    瀏覽(27)
  • Java版企業(yè)電子招標(biāo)采購系統(tǒng)源碼Spring Cloud + Spring Boot +二次開發(fā)+ MybatisPlus + Redis

    Java版企業(yè)電子招標(biāo)采購系統(tǒng)源碼Spring Cloud + Spring Boot +二次開發(fā)+ MybatisPlus + Redis

    功能描述 1、門戶管理:所有用戶可在門戶頁面查看所有的公告信息及相關(guān)的通知信息。主要板塊包含:招標(biāo)公告、非招標(biāo)公告、系統(tǒng)通知、政策法規(guī)。 2、立項(xiàng)管理:企業(yè)用戶可對需要采購的項(xiàng)目進(jìn)行立項(xiàng)申請,并提交審批,查看所有的立項(xiàng)信息。主要功能包含:招標(biāo)立項(xiàng)申

    2024年02月09日
    瀏覽(25)
  • Spring Cloud項(xiàng)目后臺報(bào)錯:org.springframework.data.redis.RedisSystemException(Redis-6.2.6 CentOS 7)

    Spring Cloud項(xiàng)目后臺報(bào)錯:org.springframework.data.redis.RedisSystemException(Redis-6.2.6 CentOS 7)

    ????????1.1、報(bào)錯 ???????? org.springframework.data.redis.RedisSystemException: Error in execution; nested exception is io.lettuce.core.RedisCommandExecutionException: MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk. Commands that may modify the data set are disabled, because this instance

    2024年02月07日
    瀏覽(21)
  • Spring Data Redis + RabbitMQ - 基于 string + hash 實(shí)現(xiàn)緩存,計(jì)數(shù)(高內(nèi)聚)

    Spring Data Redis + RabbitMQ - 基于 string + hash 實(shí)現(xiàn)緩存,計(jì)數(shù)(高內(nèi)聚)

    目錄 一、Spring Data Redis 1.1、緩存功能(分析) 1.2、案例實(shí)現(xiàn) hash 類型存儲緩存相比于 string 類型就有更多的更合適的使用場景. 例如,我有以下這樣一個 UserInfo 信息? 假設(shè)這樣一個場景就是:

    2024年02月05日
    瀏覽(20)
  • Java Web現(xiàn)代化開發(fā):Spring Boot + Mybatis + Redis二級緩存

    Java Web現(xiàn)代化開發(fā):Spring Boot + Mybatis + Redis二級緩存

    Spring-Boot因其提供了各種開箱即用的插件,使得它成為了當(dāng)今最為主流的Java Web開發(fā)框架之一。Mybatis是一個十分輕量好用的ORM框架。Redis是當(dāng)今十分主流的分布式key-value型數(shù)據(jù)庫,在web開發(fā)中,我們常用它來緩存數(shù)據(jù)庫的查詢結(jié)果。 本篇博客將介紹如何使用Spring-Boot快速搭建一

    2024年01月17日
    瀏覽(19)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包