사용할 때는 maven 종속성 패키지 spring-boot-starter-data-redis를 사용한 다음 StringRedisTemplate 또는 RedisTemplate을 서비스에 삽입하면 됩니다.
먼저 아래 그림과 같이 StringRedisTemplate은 RedisTemplate을 상속하므로 둘은 호환됩니다 Redis의 작업 방법은 비슷합니다
둘 사이의 데이터는 공통적이지 않습니다. 즉, StringRedisTemplate은 StringRedisTemplate에서만 데이터를 관리할 수 있고 RedisTemplate은 RedisTemplate에서만 데이터를 관리할 수 있습니다.
사실 이들 간의 차이점은 주로 사용하는 직렬화 클래스에 있습니다.
RedisTemplate은 JdkSerializationRedisSerializer를 사용합니다. 데이터를 저장할 때 데이터는 먼저 바이트 배열로 직렬화된 다음 Redis 데이터베이스에 저장됩니다.
StringRedisTemplate은 StringRedisSerializer를 사용합니다
사용 시 주의 사항:
Redis 데이터베이스가 원래 문자열 데이터를 저장하거나 액세스하려는 데이터가 문자열 유형 데이터인 경우 StringRedisTemplate을 사용하면 됩니다.
그러나 데이터가 복잡한 개체 유형이고 가져올 때 데이터 변환을 원하지 않고 Redis에서 직접 개체를 가져올 수 있는 경우 RedisTemplate을 사용하는 것이 더 나은 선택입니다.
RedisTemplate 사용 시 자주 묻는 질문:
redisTemplate에서 접근하는 데이터는 모두 바이트 배열입니다. Redis에 저장된 데이터가 바이트 배열이 아닌 읽을 수 있는 형식인 경우 redisTemplate을 사용하여 값을 가져올 때 내보낸 데이터를 가져올 수 없으며 가져온 값은 null입니다. StringRedisTemplate을 사용해 볼 수 있습니다.
StringRedisTemplate의 Redis 운영 방식:
StringRedisTemplate.opsForValue().* //操作String字符串类型 StringRedisTemplate.delete(key/collection) //根据key/keys删除 StringRedisTemplate.opsForList().* //操作List类型 StringRedisTemplate.opsForHash().* //操作Hash类型 StringRedisTemplate.opsForSet().* //操作set类型 StringRedisTemplate.opsForZSet().* //操作有序set
인터페이스 구현 코드는 다음과 같습니다.
package com.cloud.spring.demo.service.impl; import com.cloud.spring.demo.service.RedisTestService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; import java.util.List; import java.util.Map; import java.util.Set; /** * @Package: com.cloud.spring.demo.service.impl * @ClassName: RedisTestServiceImpl * @Author: zhougaoyang * @Description: redis服务测试接口实现 * @Date: 2019/4/27 10:16 * @Version: 1.0 */ @Service public class RedisTestServiceImpl implements RedisTestService { private static final Logger log = LoggerFactory.getLogger(RedisTestService.class); @Autowired private StringRedisTemplate redisTemplate; /** * @Description 获取String类型的value * @param name * @return */ @Override public String findName(String name) { if (name==null){ log.error("===============key为null======================================================"); } return redisTemplate.opsForValue().get(name); } /** * @Description 添加String类型的key-value * @param name * @param value * @return */ @Override public String setNameValue(String name, String value) { log.info("==================添加String类型的key-value========================================"); redisTemplate.opsForValue().set(name,value); return name; } /** * @Description 根据key删除redis的数据 * @param name * @return */ @Override public String delNameValue(String name) { redisTemplate.delete(name); return name; } /** * @Description 根据key获取list类型的value(范围) * @param key * @return */ @Override public List<String> findList(String key,int start,int end) { log.info("=====================按照范围查询redis中List类型======================================="); return redisTemplate.opsForList().range(key,start,end); } /** * @Description 插入多条数据 * @param key * @param value * @return */ @Override public long setList(String key, List<String> value) { log.info("=========================redis List type insert ======================================"); return redisTemplate.opsForList().rightPushAll(key, value); } /** * @Description 获取list最新记录(右侧) * @param key * @return */ @Override public String findLatest(String key) { log.info("=============================rides List latest rigth=================================="); return redisTemplate.opsForList().index(key,redisTemplate.opsForList().size(key)-1); } /** * @Description 查询hash * @param key * @return */ @Override public Map<Object, Object> findHash(String key) { log.info("===================================redis hash ========================================="); return redisTemplate.opsForHash().entries(key); } /** * @Description 查询hash中所有的key * @param key * @return */ @Override public Set<Object> findHashKeys(String key) { log.info("====================================== All keys of hash ==============================="); return redisTemplate.opsForHash().keys(key); } /** * @Description 查询hash中所有的value * @param key * @return */ @Override public List<Object> findHashValues(String key) { log.info("===================================== All values of hash =============================="); return redisTemplate.opsForHash().values(key); } /** * @Desscription 插入hash数据 * @param key * @param map * @return */ @Override public long insertHash(String key, Map<String, Object> map) { log.info("====================================== insert hashes into redis ========================"); redisTemplate.opsForHash().putAll(key,map); return map.size(); } }
위 내용은 Java에서 StringRedisTemplate 및 RedisTemplate을 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!