使用时只需使用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<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中文网其他相关文章!

本文讨论了使用Maven和Gradle进行Java项目管理,构建自动化和依赖性解决方案,以比较其方法和优化策略。

本文使用Maven和Gradle之类的工具讨论了具有适当的版本控制和依赖关系管理的自定义Java库(JAR文件)的创建和使用。

本文讨论了使用咖啡因和Guava缓存在Java中实施多层缓存以提高应用程序性能。它涵盖设置,集成和绩效优势,以及配置和驱逐政策管理最佳PRA

本文讨论了使用JPA进行对象相关映射,并具有高级功能,例如缓存和懒惰加载。它涵盖了设置,实体映射和优化性能的最佳实践,同时突出潜在的陷阱。[159个字符]

Java的类上载涉及使用带有引导,扩展程序和应用程序类负载器的分层系统加载,链接和初始化类。父代授权模型确保首先加载核心类别,从而影响自定义类LOA


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3汉化版
中文版,非常好用

Atom编辑器mac版下载
最流行的的开源编辑器

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

禅工作室 13.0.1
功能强大的PHP集成开发环境

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中