spring-boot-starter-data-redis(spring cloud 操作redis) RedisTemplate
阿新 • • 發佈:2019-01-03
入門:
引入依賴:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
yml配置檔案:
spring: redis: database: 0 host: 139.107.71.246 port: 6379 password: # 密碼(預設為空) timeout: 6000 # 連線超時時長(毫秒) pool: max-active: 1000 # 連線池最大連線數(使用負值表示沒有限制) max-wait: -1 # 連線池最大阻塞等待時間(使用負值表示沒有限制) max-idle: 10 # 連線池中的最大空閒連線 min-idle: 5 # 連線池中的最小空閒連線
加入 data redis 配置檔案:
package io.sr.modules.biz.sys.conf; import java.net.UnknownHostException; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; 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.core.StringRedisTemplate; /** * @Description: Redis配置檔案 * @author 劉彥青 * @date 2018年3月1日 */ @Configuration public class RedisConfiguration { @Bean @ConditionalOnMissingBean(name="redisTemplate") public RedisTemplate<Object, Object> redisTemplate( RedisConnectionFactory redisConnectionFactory) throws UnknownHostException{ RedisTemplate<Object, Object> template = new RedisTemplate<Object,Object>(); template.setConnectionFactory(redisConnectionFactory); return template; } @Bean @ConditionalOnMissingBean(StringRedisTemplate.class) public StringRedisTemplate stringRedisTemplate( RedisConnectionFactory redisConnectionFactory) throws UnknownHostException{ StringRedisTemplate template = new StringRedisTemplate(); template.setConnectionFactory(redisConnectionFactory); return template; } }
使用:
RedisTemplate中定義了對5種資料結構操作
redisTemplate.opsForValue();//操作字串
redisTemplate.opsForHash();//操作hash
redisTemplate.opsForList();//操作list
redisTemplate.opsForSet();//操作set
redisTemplate.opsForZSet();//操作有序set
public class RedisUtils { @Autowired private StringRedisTemplate template; public void setKey(String key,String value){ ValueOperations<String, String> ops = template.opsForValue(); ops.set(key,value); } public String getValue(String key){ ValueOperations<String, String> ops = this.template.opsForValue(); return ops.get(key); }
常用的一些操作:
template.opsForValue().set("key", "100",60*10,TimeUnit.SECONDS);//向redis裡存入資料和設定快取時間
template.boundValueOps("key").increment(-1);//val做-1操作
template.opsForValue().get("key")//根據key獲取快取中的val
template.boundValueOps("key").increment(1);//val +1
template.getExpire("key")//根據key獲取過期時間
template.getExpire("key",TimeUnit.SECONDS)//根據key獲取過期時間並換算成指定單位
template.delete("key");//根據key刪除快取
template.hasKey("546545");//檢查key是否存在,返回boolean值
template.opsForSet().add("red_123", "1","2","3");//向指定key中存放set集合
template.expire("red_123",1000 , TimeUnit.MILLISECONDS);//設定過期時間
template.opsForSet().isMember("red_123", "1")//根據key檢視集合中是否存在指定資料
template.opsForSet().members("red_123");//根據key獲取set集合
常用API
Redis的String資料結構 (推薦使用StringRedisTemplate)
- set void set(K key, V value);
set void set(K key, V value, long timeout, TimeUnit unit)
- set void set(K key, V value, long offset);
該方法是用 value 引數覆寫(overwrite)給定 key 所儲存的字串值,從偏移量 offset 開始
- setIfAbsent Boolean setIfAbsent(K key, V value);
- multiSet void multiSet(Map<? extends K, ? extends V> m);
為多個鍵分別設定它們的值
- multiSetIfAbsent Boolean multiSetIfAbsent(Map<? extends K, ? extends V> m);
為多個鍵分別設定它們的值,如果存在則返回false,不存在返回true
- get V get(Object key);
- getAndSet V getAndSet(K key, V value);
設定鍵的字串值並返回其舊值
- multiGet List<V> multiGet(Collection<K> keys);
為多個鍵分別取出它們的值
- increment Long increment(K key, long delta);
自增 支援整數, 當key已經存在時,這個可以實現自增或自減, value值等於舊值+delta
- increment Double increment(K key, double delta);
也支援浮點數
- append Integer append(K key, String value);
如果key已經存在並且是一個字串,則該命令將該值追加到字串的末尾。如果鍵不存在,則它被建立並設定為空字串,因此APPEND在這種特殊情況下將類似於SET。
- get String get(K key, long start, long end);
擷取key所對應的value字串
- size Long size(K key);
返回key所對應的value值得長度
- setBit Boolean setBit(K key, long offset, boolean value);
對 key 所儲存的字串值,設定或清除指定偏移量上的位(bit)
key鍵對應的值value對應的ascii碼,在offset的位置(從左向右數)變為value
- getBit Boolean getBit(K key, long offset);
獲取鍵對應值的ascii碼的在offset處位值
redis 釋出與訂閱 : https://zhuanlan.zhihu.com/p/20948779
詳細用法:https://www.jianshu.com/p/7bf5dc61ca06