springBoot整合redis使用介绍(详细案例)
生活随笔
收集整理的這篇文章主要介紹了
springBoot整合redis使用介绍(详细案例)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章預覽:
- 一、創建springboot項目(采用骨架方式)
- 二、配置文件
- 三、使用redis
- 1、添加字符串到redis
- 2、將對象轉換成jsonString并存入redis
- 3、將對象集合轉換成jsonString,并設置過期時間存入至redis
- 4、獲取對象
- 5、獲取對象集合
- 6、添加 hash-set
- 7、獲取 hash-setvalue
一、創建springboot項目(采用骨架方式)
創建完成;
我們分析下pom文件中內容:
所使用到的關鍵依賴:
二、配置文件
server.port=8088 spring.redis.host=127.0.0.1 #Redis服務器連接端口 spring.redis.port=6379 #Redis服務器連接密碼(默認為空) spring.redis.password=123456 #連接池最大連接數(使用負值表示沒有限制) spring.redis.pool.max-active=8 #連接池最大阻塞等待時間(使用負值表示沒有限制) spring.redis.pool.max-wait=-1 #連接池中的最大空閑連接 spring.redis.pool.max-idle=8 #連接池中的最小空閑連接 spring.redis.pool.min-idle=0 #連接超時時間(毫秒) spring.redis.timeout=30000三、使用redis
package com.example.redis.cache;import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils;import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.List; import java.util.concurrent.TimeUnit;/*** @author wxl* @date 2021-08-15 18:44*/ @Slf4j @Component public class CacheService {@Autowiredprivate StringRedisTemplate redisTemplate;private final String DEFAULT_KEY_PREFIX = "";private final int EXPIRE_TIME = 1;private final TimeUnit EXPIRE_TIME_TYPE = TimeUnit.DAYS;/*** 數據緩存至redis** @param key* @param value* @return*/public <K, V> void add(K key, V value) {try {if (value != null) {redisTemplate.opsForValue().set(DEFAULT_KEY_PREFIX + key, JSON.toJSONString(value));}} catch (Exception e) {log.error(e.getMessage(), e);throw new RuntimeException("數據緩存至redis失敗");}}/*** 數據緩存至redis并設置過期時間** @param key* @param value* @return*/public <K, V> void add(K key, V value, long timeout, TimeUnit unit) {try {if (value != null) {redisTemplate.opsForValue().set(DEFAULT_KEY_PREFIX + key, JSON.toJSONString(value), timeout, unit);}} catch (Exception e) {log.error(e.getMessage(), e);throw new RuntimeException("數據緩存至redis失敗");}}/*** 寫入 hash-set,已經是key-value的鍵值,不能再寫入為hash-set** @param key must not be {@literal null}.* @param subKey must not be {@literal null}.* @param value 寫入的值*/public <K, SK, V> void addHashCache(K key, SK subKey, V value) {redisTemplate.opsForHash().put(DEFAULT_KEY_PREFIX + key, subKey, value);}/*** 寫入 hash-set,并設置過期時間** @param key must not be {@literal null}.* @param subKey must not be {@literal null}.* @param value 寫入的值*/public <K, SK, V> void addHashCache(K key, SK subKey, V value, long timeout, TimeUnit unit) {redisTemplate.opsForHash().put(DEFAULT_KEY_PREFIX + key, subKey, value);redisTemplate.expire(DEFAULT_KEY_PREFIX + key, timeout, unit);}/*** 獲取 hash-setvalue** @param key must not be {@literal null}.* @param subKey must not be {@literal null}.*/public <K, SK> Object getHashCache(K key, SK subKey) {return redisTemplate.opsForHash().get(DEFAULT_KEY_PREFIX + key, subKey);}/*** 從redis中獲取緩存數據,轉成對象** @param key must not be {@literal null}.* @param clazz 對象類型* @return*/public <K, V> V getObject(K key, Class<V> clazz) {String value = this.get(key);V result = null;if (!StringUtils.isEmpty(value)) {result = JSONObject.parseObject(value, clazz);}return result;}/*** 從redis中獲取緩存數據,轉成list** @param key must not be {@literal null}.* @param clazz 對象類型* @return*/public <K, V> List<V> getList(K key, Class<V> clazz) {String value = this.get(key);List<V> result = Collections.emptyList();if (!StringUtils.isEmpty(value)) {result = JSONArray.parseArray(value, clazz);}return result;}/*** 功能描述:Get the value of {@code key}.** @param key must not be {@literal null}.* @return java.lang.String* @date 2021/9/19**/public <K> String get(K key) {String value;try {value = redisTemplate.opsForValue().get(DEFAULT_KEY_PREFIX + key);} catch (Exception e) {log.error(e.getMessage(), e);throw new RuntimeException("從redis緩存中獲取緩存數據失敗");}return value;}/*** 刪除key*/public void delete(String key) {redisTemplate.delete(key);}/*** 批量刪除key*/public void delete(Collection<String> keys) {redisTemplate.delete(keys);}/*** 序列化key*/public byte[] dump(String key) {return redisTemplate.dump(key);}/*** 是否存在key*/public Boolean hasKey(String key) {return redisTemplate.hasKey(key);}/*** 設置過期時間*/public Boolean expire(String key, long timeout, TimeUnit unit) {return redisTemplate.expire(key, timeout, unit);}/*** 設置過期時間*/public Boolean expireAt(String key, Date date) {return redisTemplate.expireAt(key, date);}/*** 移除 key 的過期時間,key 將持久保持*/public Boolean persist(String key) {return redisTemplate.persist(key);}/*** 返回 key 的剩余的過期時間*/public Long getExpire(String key, TimeUnit unit) {return redisTemplate.getExpire(key, unit);}/*** 返回 key 的剩余的過期時間*/public Long getExpire(String key) {return redisTemplate.getExpire(key);} }1、添加字符串到redis
/*** 功能描述:添加字符串到redis*/@Testvoid add() {cacheService.add("test", 1234);}結果:
2、將對象轉換成jsonString并存入redis
/*** 功能描述:添加對象至redis*/@Testvoid addObject() {User user = User.builder().id(ID).name("小萌").age(AGE).build();cacheService.add(user.getId(), user);}結果:
3、將對象集合轉換成jsonString,并設置過期時間存入至redis
/*** 功能描述:添加對象集合至redis*/@Testvoid addObjects() {ArrayList<User> users = new ArrayList<>();User user = User.builder().id(ID).name("小萌").age(AGE).build();users.add(user);cacheService.add("key", users, 1, TimeUnit.HOURS);}結果:
4、獲取對象
/*** 功能描述:獲取對象*/@Testvoid getObject() {User object = cacheService.getObject(ID, User.class);System.out.println("object = " + object);}結果:
object = User(id=123, name=小萌, age=12)5、獲取對象集合
/*** 功能描述:獲取對象集合*/@Testvoid getObjects() {List<User> users = cacheService.getList("key", User.class);System.out.println("users = " + users);}結果:
users = [User(id=123, name=小萌, age=12)]6、添加 hash-set
/*** 功能描述:添加 hash-set*/@Testvoid addHashCache() {cacheService.addHashCache("hashKey", "key", "value");}結果:
7、獲取 hash-setvalue
/*** 獲取 hash-setvalue** @param key must not be {@literal null}.* @param subKey must not be {@literal null}.*/public <K, SK> Object getHashCache(K key, SK subKey) {return redisTemplate.opsForHash().get(DEFAULT_KEY_PREFIX + key, subKey);}結果:
hashCache = value總結
以上是生活随笔為你收集整理的springBoot整合redis使用介绍(详细案例)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: React开发(247):react项目
- 下一篇: JAVA-重写equalse规范、技巧