使用时只需使用maven依赖包spring-boot-starter-data-redis即可,然后在service中注入stringredistemplate或者redistemplate即可
首先如下图所示StringRedisTemplate继承了RedisTemplate,所以两者对Redis的操作方法具有相同之处
两者的数据是不共通的;也就是说StringRedisTemplate只能管理StringRedisTemplate里面的数据,RedisTemplate只能管理RedisTemplate中的数据。
立即学习“Java免费学习笔记(深入)”;
其实他们两者之间的区别主要在于他们使用的序列化类:
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 */@Servicepublic 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
登录后复制
以上就是Java中如何使用StringRedisTemplate和RedisTemplate?的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2627517.html