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

Redis學(xué)習(xí)路線(3)——Redis的Java客戶(hù)端

這篇具有很好參考價(jià)值的文章主要介紹了Redis學(xué)習(xí)路線(3)——Redis的Java客戶(hù)端。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、如何使用Redis的Java客戶(hù)端

官方文檔: https://redis.io/docs/clients/java/

Java-Redis客戶(hù)端 使用場(chǎng)景
Jeids
以Redis命令作為方法名稱(chēng),學(xué)習(xí)成本低,簡(jiǎn)單實(shí)現(xiàn),但是Jedis實(shí)例是線程不安全的,多線程環(huán)境下需要基于連接池使用。
lettuce
Lettuce 是基于Netty實(shí)現(xiàn)的,支持同步、異步和響應(yīng)式編程方式,并且是線程安全的。Redis的哨兵模式、集群模式和管道模式。
Redisson
Redisson是基于Redis實(shí)現(xiàn)的分布式、可伸縮的Java數(shù)據(jù)結(jié)構(gòu)集合。包含了諸如Map、Queue、Lock、Semaphore(信號(hào)量)、AtomicLong(原子類(lèi))等強(qiáng)大功能

SpringDataRedis: 一款結(jié)合了Jedis和Lettuce的SpringBoot框架整合Redis組件。


二、Jedis

Jedis官網(wǎng): https://github.com/redis/jedis

Redis的官方也推薦了這種客戶(hù)端。

(一)引入依賴(lài)

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>4.3.1</version>
</dependency>

(二)建立連接

方式一:?jiǎn)吸c(diǎn)連接

    private Jedis jedis;

    @BeforeEach
    void setup() {
        //建立連接
        jedis = new Jedis("192.168.92.131",6379);
        //設(shè)置密碼
        jedis.auth("123321");
        //選擇數(shù)據(jù)庫(kù)
        jedis.select(0);
    }
    
    @Test
    void redisTest(){
        //插入數(shù)據(jù)
        String result = jedis.set("name","張三");
        System.out.println("result="+result);

        //獲取數(shù)據(jù)
        String name = jedis.get("name");
        System.out.println("name="+name);
    }
    
    @AfterEach
    void destroy() {
        if (jedis != null)
            jedis.close();
    }

//獲取的結(jié)果
result=OK
name=張三

方式二:連接池建立連接

public class JedisConnectionFactory {
    private static final JedisPool jedisPool;

    static {
        //1、創(chuàng)建連接池配置對(duì)象
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        //2、配置連接池相關(guān)信息
        // 最大連接數(shù)
        jedisPoolConfig.setMaxTotal(8);
        // 最大空間連接
        jedisPoolConfig.setMaxIdle(8);
        // 最小空閑連接
        jedisPoolConfig.setMinIdle(0);
        // 設(shè)置最長(zhǎng)等待時(shí)間,ms
        jedisPoolConfig.setMaxWaitMillis(200);

        //3、建立連接池,需要連接池配置,ip,端口,等待時(shí)間,密碼
        jedisPool = new JedisPool(jedisPoolConfig, "192.168.92.131",6379,1000,"123321");
    }

    public static Jedis getConnection(){
        //獲取單個(gè)連接
        return jedisPool.getResource();
    }

}

三、SpringDataRedis

SpringDataSpring 中數(shù)據(jù)操作的模塊,包含對(duì)各種數(shù)據(jù)庫(kù)的集成,其中對(duì)Redis的集成模塊就叫做 SpringDataRedis,官網(wǎng)地址: https://spring.io/projects/spring-data-redis

  • 提供了對(duì)不同Redis客戶(hù)端的整合(Lettuce和Jedis)
  • 提供了RedisTemplate統(tǒng)一API來(lái)操作Redis
  • 支持Redis的發(fā)布訂閱模塊
  • 支持Redis哨兵和Redis集群
  • 支持基于Lettuce的響應(yīng)式編程
  • 支持基于JDK、JSON、字符串、Spring對(duì)象的數(shù)據(jù)序列化及反序列化
  • 支持基于Redis的JDKCollection實(shí)現(xiàn)

(一)RedisTemplate

RedisTemplate將不同的數(shù)據(jù)類(lèi)型操作API封裝到不同類(lèi)型中。

API 返回值類(lèi)型 說(shuō)明
redisTemplate.opsForValue() ValueOperations 操作String類(lèi)型數(shù)據(jù)
redisTemplate.opsForHash() HashOperations 操作Hash類(lèi)型數(shù)據(jù)
redisTemplate.opsForList() ListOperations 操作List類(lèi)型數(shù)據(jù)
redisTemplate.opsForSet() SetOperations 操作Set類(lèi)型數(shù)據(jù)
redisTemplate.opsForZSet() ZSetOperations 操作SortedSet類(lèi)型數(shù)據(jù)
redisTemplate 通用命令

(二)RedisTemplate的基本使用

1、引入依賴(lài)

<!--Redis依賴(lài)-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

<!--連接池依賴(lài)-->
<dependency>
	<groupId>org.apache.commons</groupId>
	<artifactId>commons-pool2</artifactId>
</dependency>

2、配置redis

spring:
	redis:
		host: 192.168.92.131
		port: 6379
		password: 123321
		lettuce:
			pool:
				max-active: 8 #最大連接數(shù)
				max-idle: 8 #最大空閑連接
				min-idle: 0 #最小空閑連接
				max-wait: 100 #連接等待時(shí)間

3、注入RedisTemplate

@Autowired
private RedisTemplate redisTemplate;

4、使用RedisTemplate

@Autowired
private RedisTemplate redisTemplate;

public void operateString(){
	// 插入一條string類(lèi)型的數(shù)據(jù),存儲(chǔ)的格式是Java序列化的格式
	redisTemplate.opsForValue().set("name", "李四");
	// 讀取一條string類(lèi)型數(shù)據(jù)
	Object name = redisTemplate.opsForValue().get("name");
	System.out.println("name = " + name);
}

5、優(yōu)化RedisTemplate存儲(chǔ)序列化的現(xiàn)象

@Configuration
public class RedisConfig {
	
	@Bean
	public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
		//1、創(chuàng)建RedisTemplate對(duì)象
		RedisTemplate<String, Object> template = new RedisTemplate<>();
		//2、設(shè)置連接工廠
		template.setConnectionFactory(connectionFactory);
		//3、創(chuàng)建JSON序列化工具		
		GenericJackson2JsonRedisSerializer jsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
		//4、設(shè)置key的序列化
		template.setKeySerializer(RedisSerializer.string());
		template.setHashKeySerializer(RedisSerializer.string());
		//5、設(shè)置Value的序列化
		template.setValueSerializer(jsonRedisSerializer);
		template.setHashValueSerializer(jsonRedisSerializer);
		//6、返回
		return template;
	}

}

缺點(diǎn): JSON序列化時(shí)會(huì)將calss的類(lèi)型寫(xiě)入json結(jié)果中,存入Redis中,帶來(lái)額外的內(nèi)存。

為了節(jié)省內(nèi)存空間,我們并不會(huì)使用JSON序列化器來(lái)處理value,而是統(tǒng)一使用String序列化器,要求只能存儲(chǔ)String類(lèi)型的key 和 value,當(dāng)需要存儲(chǔ)Java對(duì)象時(shí),手動(dòng)完成序列化和反序列化。

Spring默認(rèn)提供了一個(gè)StringRedisTemplate類(lèi),它的key和value的序列化方式默認(rèn)就是String方式,省去自定義RedisTemplate的過(guò)程。**
(PS:不如直接用alibaba開(kāi)源的fastjson,減少學(xué)習(xí)成本,但要注意的是 在JSON插件的排行中 ,jackson-databind > gson > fastjson,這就說(shuō)明了問(wèn)題,fastjson 專(zhuān)注于性能,但安全性不足,gson是保證了安全性,如果可以,在項(xiàng)目中應(yīng)該使用gson)**文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-612077.html

@Autowired
private StringRedisTemplate stringRedisTemplate;

//JSON工具
private static final ObjectMapper mapper = new ObjectMapper();

@Test
void testStringTemplate() throws JsonProcessingException {
	//準(zhǔn)備對(duì)象
	User user = new User("zain", 23);
	//手動(dòng)序列化
	String json = mapper.writeValueAsString(user);
	//寫(xiě)入一條數(shù)據(jù)
	stringRedisTemplate.opsForValue().set("jedis:user:2", json);
	
	// 讀取數(shù)據(jù)
	String val = stringRedisTemplate.opsForValue().get("jedis:user:2");
	// 反序列化
	User user1 = mapper.readValue(val, User.class);
}

到了這里,關(guān)于Redis學(xué)習(xí)路線(3)——Redis的Java客戶(hù)端的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(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)文章

  • 【Redis】Spring/SpringBoot 操作 Redis Java客戶(hù)端

    【Redis】Spring/SpringBoot 操作 Redis Java客戶(hù)端

    1.Jedis 2.Lettuce(主流) -Spring Data Redis 1.添加Redis 驅(qū)動(dòng)依賴(lài) 2.設(shè)置Redis 連接信息 3.根據(jù)Redis API 操作Redis

    2024年02月13日
    瀏覽(68)
  • Redis的Java客戶(hù)端-Jedis

    Redis的Java客戶(hù)端-Jedis

    在 Redis官網(wǎng) 中提供了各種語(yǔ)言的客戶(hù)端,地址: https://redis.io/docs/clients/ 其中Java客戶(hù)端也包含很多: 標(biāo)記為 ? 的就是推薦使用的java客戶(hù)端,包括: Jedis和Lettuce:這兩個(gè)主要是提供了Redis命令對(duì)應(yīng)的API,方便我們操作Redis,而SpringDataRedis是對(duì)這兩種做了抽象和封裝。 Redisso

    2024年02月19日
    瀏覽(19)
  • Redis-Java客戶(hù)端-Jedis

    目錄 01.導(dǎo)入依賴(lài) 02.進(jìn)行測(cè)試連接 03.使用JedisPool 04.修改測(cè)試的代碼 ????????新建一個(gè)mevan工程,在pom文件下導(dǎo)入相應(yīng)的依賴(lài),相依的依賴(lài)可以去官網(wǎng)查找 spring官網(wǎng):Spring Data Redis ????????在test目錄下,創(chuàng)建一個(gè)測(cè)試類(lèi)JedisTest 這里可能回報(bào)密碼的錯(cuò)誤, 可能需要去設(shè)置

    2024年02月14日
    瀏覽(24)
  • 【Redis】2、Redis 的 Java 客戶(hù)端(Jedis 和 SpringDataRedis)

    【Redis】2、Redis 的 Java 客戶(hù)端(Jedis 和 SpringDataRedis)

    Jedis 的使用:https://redis.io/docs/clients/java/ ?? Jedis 實(shí)例是線程不安全的 ?? 多線程環(huán)境 下需要基于連接池來(lái)使用 ?? 這里使用的連接池技術(shù)是 Jedis 提供的 ?? JedisPool :Redis 連接池 ?? JedisPoolConfig :Redis 連接池的配置 ?? SpringData 是 Spring 中數(shù)據(jù)操作的模塊,包含對(duì)各種數(shù)據(jù)庫(kù)

    2024年02月11日
    瀏覽(27)
  • 基礎(chǔ)Redis-Java客戶(hù)端操作介紹

    基礎(chǔ)Redis-Java客戶(hù)端操作介紹

    Jedis 以Redis命令作為方法名稱(chēng),學(xué)習(xí)成本低,簡(jiǎn)單實(shí)用。但是Jedis實(shí)例是線程不安全的,多線程環(huán)境下需要基于連接池來(lái)使用 letture Lettuce是基于Netty實(shí)現(xiàn)的,支持同步、異步和響應(yīng)式編程方式,并且是線程安全的。支持Redis的哨兵模式、集群模式和管道模式。 Redisson Redisson是一

    2024年02月05日
    瀏覽(19)
  • ⑩【Redis Java客戶(hù)端】:Jedis、SpringDataRedis、StringRedisTemplate

    ⑩【Redis Java客戶(hù)端】:Jedis、SpringDataRedis、StringRedisTemplate

    個(gè)人簡(jiǎn)介:Java領(lǐng)域新星創(chuàng)作者;阿里云技術(shù)博主、星級(jí)博主、專(zhuān)家博主;正在Java學(xué)習(xí)的路上摸爬滾打,記錄學(xué)習(xí)的過(guò)程~ 個(gè)人主頁(yè):.29.的博客 學(xué)習(xí)社區(qū):進(jìn)去逛一逛~ 引入依賴(lài) : 測(cè)試Java客戶(hù)端操作Redis : 測(cè)試代碼: 測(cè)試結(jié)果: ?—操作String類(lèi)型—? ?—操作hash類(lèi)型—?

    2024年02月05日
    瀏覽(50)
  • 【實(shí)踐篇】Redis最強(qiáng)Java客戶(hù)端(一)之Redisson入門(mén)介紹

    【實(shí)踐篇】Redis最強(qiáng)Java客戶(hù)端(一)之Redisson入門(mén)介紹

    1.1.1 起源和歷史 Redisson 最初由 GitHub 用戶(hù) “mrniko” 創(chuàng)建,并在 Apache 2.0 許可證下發(fā)布。它的目標(biāo)是提供一組強(qiáng)大的工具和 API,幫助開(kāi)發(fā)人員在分布式環(huán)境中處理數(shù)據(jù),并解決并發(fā)和一致性的問(wèn)題。 Redisson 是一款在 Redis 的基礎(chǔ)上實(shí)現(xiàn)的 Java 駐內(nèi)存數(shù)據(jù)網(wǎng)格(In-Memory Data Grid)

    2024年02月09日
    瀏覽(21)
  • 【實(shí)踐篇】Redis最強(qiáng)Java客戶(hù)端(四)之Ression分布式集合使用指南

    【實(shí)踐篇】Redis最強(qiáng)Java客戶(hù)端(四)之Ression分布式集合使用指南

    前兩章我們了解了《【實(shí)踐篇】Redis最強(qiáng)Java客戶(hù)端(一)之Redisson入門(mén)介紹》和《【實(shí)踐篇】Redis最強(qiáng)Java客戶(hù)端(二)之Redisson基礎(chǔ)概念》 本章第四章主要介紹Ression分布式集合使用指南。 上一章《Redisson 7種分布式鎖使用指南》回顧。 本章我們介紹了在Redisson中實(shí)現(xiàn)的各種分布式集

    2024年02月09日
    瀏覽(28)
  • 【實(shí)踐篇】Redis最強(qiáng)Java客戶(hù)端(三)之Redisson 7種分布式鎖使用指南

    【實(shí)踐篇】Redis最強(qiáng)Java客戶(hù)端(三)之Redisson 7種分布式鎖使用指南

    前兩章我們了解了《【實(shí)踐篇】Redis最強(qiáng)Java客戶(hù)端(一)之Redisson入門(mén)介紹》和《【實(shí)踐篇】Redis最強(qiáng)Java客戶(hù)端(二)之Redisson基礎(chǔ)概念》本章第三章主要介紹Redisson的七種分布式鎖,分別是簡(jiǎn)單鎖、公平鎖、可重入鎖、紅鎖、讀寫(xiě)鎖、信號(hào)量和閉鎖。下面是每種鎖的基本概念、使用

    2024年02月09日
    瀏覽(24)
  • Redis系列學(xué)習(xí)文章分享---第一篇(Redis快速入門(mén)之初始Redis--NoSql+安裝redis+客戶(hù)端+常用命令)

    Redis系列學(xué)習(xí)文章分享---第一篇(Redis快速入門(mén)之初始Redis--NoSql+安裝redis+客戶(hù)端+常用命令)

    歡迎小伙伴交流學(xué)習(xí),這是第一篇(Redis快速入門(mén)之初始Redis–NoSql+安裝redis+客戶(hù)端+常用命令),后續(xù)持續(xù)更新 Redis是一種鍵值型的NoSql數(shù)據(jù)庫(kù),這里有兩個(gè): 鍵值型 NoSql 其中 鍵值型 ,是指Redis中存儲(chǔ)的數(shù)據(jù)都是以key、value對(duì)的形式存儲(chǔ),而value的形式多種多樣,可以

    2024年02月20日
    瀏覽(24)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包