ホームページ >Java >&#&チュートリアル >Java で StringRedisTemplate と RedisTemplate を使用する方法は?
これを使用する場合は、maven 依存関係パッケージ spring-boot-starter-data-redis を使用してから、StringRedisTemplate または RedisTemplate をサービスに挿入するだけです。図に示すように、StringRedisTemplate は RedisTemplate を継承しているため、Redis を操作する 2 つの方法は似ています。つまり、StringRedisTemplate は StringRedisTemplate 内のデータのみを管理でき、RedisTemplate は RedisTemplate 内のデータのみを管理できます。
実際、これらの違いは主に使用するシリアル化クラスにあります:
RedisTemplate は JdkSerializationRedisSerializer を使用します。データを保存するとき、データは最初にワードにシリアル化されます。セクション配列は Redis データベースに保存されます。StringRedisTemplate は StringRedisSerializer を使用します
ただし、データが複雑なオブジェクト型で、データを取り出すときにデータ変換を行わず、Redis から直接オブジェクトを取得できる場合は、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 中国語 Web サイトの他の関連記事を参照してください。