搜尋
首頁資料庫Redisredis與jedis的差別是什麼

redis與jedis的差別是什麼

Jun 29, 2019 pm 05:10 PM

redis與jedis的差別是什麼

redis與spring的整合一般分為spring-data-redis整合和jedis整合,先看看兩者的差異

1、引用的依賴不同:

spring-data-redis使用的依賴如下:

<dependency>  
      <groupId>org.springframework.data</groupId>  
      <artifactId>spring-data-redis</artifactId>  
      <version>1.8.9.RELEASE</version>  
</dependency>

jedis使用的依賴如下:

<dependency>
       <groupId>redis.clients</groupId>
       <artifactId>jedis</artifactId>
       <version>2.9.0</version>
       <type>jar</type>
       <scope>compile</scope>
</dependency>

2、管理jedis實例方式、操作redis服務的不同:

spring-data-redis:

    透過org.springframework.data.redis.connection.jedis.JedisConnectionFactory來管理,即透過工廠類別管理,然後透過配置的模版bean,操作redis服務,程式碼片段中充斥大量與業務無關的模版片段程式碼,程式碼冗餘,不易維護,例如像下面的程式碼:

protected RedisTemplate<Serializable, Serializable> redisTemplate;
 
public void saveUser(User user) {
    redisTemplate.execute(new RedisCallback<Object>() {
 
 
        @Override
        public Object doInRedis(RedisConnection connection) throws DataAccessException {
            connection.set(redisTemplate.getStringSerializer().serialize("user.uid." + user.getId()),
                           redisTemplate.getStringSerializer().serialize(user.getName()));
            return null;
        }
    });
}
 
 
public User getUser(long id) {
    return redisTemplate.execute(new RedisCallback<User>() {
        @Override
        public User doInRedis(RedisConnection connection) throws DataAccessException {
            byte[] key = redisTemplate.getStringSerializer().serialize("user.uid." + id);
            if (connection.exists(key)) {
                byte[] value = connection.get(key);
                String name = redisTemplate.getStringSerializer().deserialize(value);
                User user = new User();
                user.setName(name);
                user.setId(id);
                return user;
            }
            return null;
        }
    });
}

RedisTemplate介紹

spring 封裝了RedisTemplate 物件來進行對redis的各種操作,它支援所有的redis 原生的api。在RedisTemplate中提供了幾個常用的介面方法的使用,分別是:

private ValueOperations valueOps;private ListOperations listOps;private SetOperations private ZSetOperations zSetOps;

RedisTemplate中定義了對5種資料結構操作

redisTemplate.opsForValue();//操作字符串
redisTemplate.opsForHash();//操作hash
redisTemplate.opsForList();//操作list
redisTemplate.opsForSet();//操作set
redisTemplate.opsForZSet();//操作有序set
StringRedisTemplate与RedisTemplate

兩者的關聯是StringRedisTemplate繼承RedisTemplate。
兩者的數據是不共通的;也就是說StringRedisTemplate只能管理StringRedisTemplate裡面的數據,RedisTemplate只能管理RedisTemplate中的數據。
SDR預設採用的序列化策略有兩種,一種是String的序列化策略,一種是JDK的序列化策略。
StringRedisTemplate預設採用的是String的序列化策略,而保存的key和value都是採用此策略序列化保存的。

RedisTemplate預設採用的是JDK的序列化策略,保存的key和value都是採用此策略序列化保存的。

jedis方式:

透過redis.clients.jedis.JedisPool來管理,即透過池來管理,透過池物件取得jedis實例,然後透過jedis實例直接操作redis服務,剔除了與業務無關的冗餘程式碼,如下面的程式碼片段:

private JedisPool jedisPool;
public String save(String key,String val) {
Jedis jedis = jedisPool.getResource();
return jedis.set(key, val);
}

從工廠類別到池的方式變化,就相當於mybatis連接mysql方變化是一樣的,程式碼變得更簡潔,維護也更容易了。 Jedis使用apache commons-pool2對Jedis資源池進行管理,所以在定義JedisPool時一個很重要的參數就是資源池GenericObjectPoolConfig,使用方式如下,其中有許多資源管理和使用的參數。

參數說明

JedisPool保證資源在一個可控範圍內,並且提供了線程安全,但是一個合理的GenericObjectPoolConfig配置能為應用使用Redis保駕護航,下面將對它的一些重要參數進行說明與建議:

在目前環境下,Jedis連線就是資源,JedisPool管理的就是Jedis連線。

1、資源設定和使用

maxTotal:資源池中最大連線數;預設值:8 設定建議見下節
maxIdle:資源池允許最大空閒的連線數;預設值:8;使用建議:設定建議請參閱下節
minIdle:資源池確保最少空閒的連線數;預設值:0;使用建議:設定建議請參閱下方節
blockWhenExhausted:當資源池用完後,呼叫者是否要等待。只有當為true時,下面的maxWaitMillis才會生效;預設值:true;使用建議:建議使用預設值
maxWaitMillis:當資源池連接用盡後,呼叫者的最大等待時間(單位為毫秒) - 1:表示永不逾時;使用建議:不建議使用預設值
testOnBorrow:向資源池借用連線時是否做連線有效性偵測(ping),無效連線會被移除;預設值:false;使用建議:業務量很大時候建議設定為false(多一次ping的開銷)。
testOnReturn:向資源池歸還連線時是否做連線有效性偵測(ping),無效連線會被移除;預設值:false;使用建議:業務量很大時候建議設定為false(多一次ping的開銷)。
jmxEnabled:是否開啟jmx監控,可用來監控;預設值:true;使用建議:建議開啟,但應用程式本身也要開啟

2、空閒資源監控

空閒Jedis物件偵測,下面四個參數組合來完成,testWhileIdle是該功能的開關。

testWhileIdle:是否開啟空閒資源監測;預設值:false;使用建議:true
timeBetweenEvictionRunsMillis:空閒資源的偵測週期(單位為毫秒);預設值:-1:不偵測;使用建議:建議設定,週期自行選擇,也可以預設也可以使用下面JedisPoolConfig中的配置
minEvictableIdleTimeMillis:資源池中資源最小空閒時間(單位為毫秒),達到此值後空閒資源將被移除;預設值:1000 60 30 = 30分鐘;使用建議:可依自身業務決定,大部分預設值即可,也可以考慮使用下面JeidsPoolConfig中的配置
numTestsPerEvictionRun:做空閒資源偵測時,每次的取樣數;預設值: 3;使用建議:可根據自身應用連接數進行微調,如果設定為-1,就是對所有連接做空閒監測

更多Redis相關知識,請訪問Redis使用教程欄!

以上是redis與jedis的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
REDIS的服務器端操作:它提供的REDIS的服務器端操作:它提供的Apr 29, 2025 am 12:21 AM

Redis'sserver-sedierations offerfunctions andTriggersForexeCutingCompleXoperationsontheserver.1)函數functionsAllowCompOustomoperationsInlua,JavaScript,javaScript,orredis'sscriptinglanguigh,增強效率和增強性。 2)

REDIS:數據庫還是服務器?揭開角色的神秘面紗REDIS:數據庫還是服務器?揭開角色的神秘面紗Apr 28, 2025 am 12:06 AM

redisisbothadatabaseandaserver.1)asadatabase,ituseSin-memorystorageforfastaccess,ifealforreal-timeapplications andCaching.2)Asaserver,ItsupportsPub/submessagingAndluAsessingandluAsessingandluascriptingftingftingftingftingftingftingftingfinteral-timecommunicationandserverserverserverserverserverserverserver-soperations。

REDIS:NOSQL方法的優勢REDIS:NOSQL方法的優勢Apr 27, 2025 am 12:09 AM

Redis是NoSQL數據庫,提供高性能和靈活性。 1)通過鍵值對存儲數據,適合處理大規模數據和高並發。 2)內存存儲和單線程模型確保快速讀寫和原子性。 3)使用RDB和AOF機制進行數據持久化,支持高可用性和橫向擴展。

REDIS:了解其架構和目的REDIS:了解其架構和目的Apr 26, 2025 am 12:11 AM

Redis是一种内存数据结构存储系统,主要用作数据库、缓存和消息代理。它的核心特点包括单线程模型、I/O多路复用、持久化机制、复制与集群功能。Redis在实际应用中常用于缓存、会话存储和消息队列,通过选择合适的数据结构、使用管道和事务、以及进行监控和调优,可以显著提升其性能。

REDIS與SQL數據庫:關鍵差異REDIS與SQL數據庫:關鍵差異Apr 25, 2025 am 12:02 AM

Redis和SQL數據庫的主要區別在於:Redis是內存數據庫,適用於高性能和靈活性需求;SQL數據庫是關係型數據庫,適用於復雜查詢和數據一致性需求。具體來說,1)Redis提供高速數據訪問和緩存服務,支持多種數據類型,適用於緩存和實時數據處理;2)SQL數據庫通過表格結構管理數據,支持複雜查詢和事務處理,適用於電商和金融系統等需要數據一致性的場景。

REDIS:它如何充當數據存儲和服務REDIS:它如何充當數據存儲和服務Apr 24, 2025 am 12:08 AM

REDISACTSASBOTHADATASTOREANDASERVICE.1)ASADATASTORE,ITUSESIN-MEMORYSTOOGATOFORFOFFASTESITION,支持VariousDatharptructuresLikeKey-valuepairsandsortedsetsetsetsetsetsetsets.2)asaservice,ItprovidespunctionslikeItionitionslikepunikeLikePublikePublikePlikePlikePlikeAndluikeAndluAascriptingiationsmpleplepleclexplectiations

REDIS與其他數據庫:比較分析REDIS與其他數據庫:比較分析Apr 23, 2025 am 12:16 AM

Redis與其他數據庫相比,具有以下獨特優勢:1)速度極快,讀寫操作通常在微秒級別;2)支持豐富的數據結構和操作;3)靈活的使用場景,如緩存、計數器和發布訂閱。選擇Redis還是其他數據庫需根據具體需求和場景,Redis在高性能、低延遲應用中表現出色。

REDIS的角色:探索數據存儲和管理功能REDIS的角色:探索數據存儲和管理功能Apr 22, 2025 am 12:10 AM

Redis在數據存儲和管理中扮演著關鍵角色,通過其多種數據結構和持久化機製成為現代應用的核心。 1)Redis支持字符串、列表、集合、有序集合和哈希表等數據結構,適用於緩存和復雜業務邏輯。 2)通過RDB和AOF兩種持久化方式,Redis確保數據的可靠存儲和快速恢復。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)