Java中StringRedisTemplate和RedisTemplate怎么使用
使用时只需使用maven依赖包spring-boot-starter-data-redis即可,然后在service中注入StringRedisTemplate或者RedisTemplate即可首先如下图所示StringRedisTemplate继承了RedisTemplate,所以两者对Redis的操作方法具有相同之处两者的数据是不共通的;也就是说StringRedisTemplate只能管理StringRedisTemplate里面的数据,RedisTemplate只能管理RedisTemplate中
使用时只需使用maven依赖包spring-boot-starter-data-redis即可,然后在service中注入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 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 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
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















