Wenn Sie es verwenden, verwenden Sie einfach das Maven-Abhängigkeitspaket Spring-Boot-Starter-Data-Redis und fügen Sie dann StringRedisTemplate oder RedisTemplate in den Dienst ein zwei sind kompatibel Die Betriebsmethoden von Redis sind ähnlich
Die Daten zwischen den beiden sind nicht gemeinsam; das heißt, StringRedisTemplate kann nur die Daten in StringRedisTemplate verwalten, und RedisTemplate kann nur die Daten in RedisTemplate verwalten.
Tatsächlich liegt der Unterschied zwischen ihnen hauptsächlich in der verwendeten Serialisierungsklasse:
RedisTemplate verwendet JdkSerializationRedisSerializer. Beim Speichern von Daten werden die Daten zuerst in ein Byte-Array serialisiert und dann in der Redis-Datenbank gespeichert.Hinweise zur Verwendung:
Wenn Ihre Daten jedoch ein komplexer Objekttyp sind und Sie beim Herausnehmen keine Datenkonvertierung durchführen möchten und ein Objekt direkt aus Redis übernehmen können, ist die Verwendung von RedisTemplate die bessere Wahl.
Häufig gestellte Fragen bei der Verwendung von RedisTemplate:
Daten, auf die in redisTemplate zugegriffen wird, sind alles Byte-Arrays. Wenn die in Redis gespeicherten Daten in lesbarer Form und nicht in einem Byte-Array vorliegen und redisTemplate zum Abrufen des Werts verwendet wird, können die exportierten Daten nicht abgerufen werden und der erhaltene Wert ist null. Sie können versuchen, StringRedisTemplate zu verwenden.StringRedisTemplates Betriebsmethode für 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(); } }
Das obige ist der detaillierte Inhalt vonWie verwende ich StringRedisTemplate und RedisTemplate in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!