Java中如何使用StringRedisTemplate和RedisTemplate?

使用时只需使用maven依赖包spring-boot-starter-data-redis即可,然后在service中注入stringredistemplate或者redistemplate即可

Java中StringRedisTemplate和RedisTemplate怎么使用

首先如下图所示StringRedisTemplate继承了RedisTemplate,所以两者对Redis的操作方法具有相同之处

Java中StringRedisTemplate和RedisTemplate怎么使用

两者的数据是不共通的;也就是说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 findHash(String key) {        log.info("===================================redis hash =========================================");        return redisTemplate.opsForHash().entries(key);    }    /**     * @Description 查询hash中所有的key     * @param key     * @return     */    @Override    public Set findHashKeys(String key) {        log.info("====================================== All keys of hash ===============================");        return redisTemplate.opsForHash().keys(key);    }    /**     * @Description 查询hash中所有的value     * @param key     * @return     */    @Override    public List 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 map) {        log.info("====================================== insert hashes into redis ========================");        redisTemplate.opsForHash().putAll(key,map);        return map.size();    }}

登录后复制

以上就是Java中如何使用StringRedisTemplate和RedisTemplate?的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2627517.html

(0)
上一篇 2025年3月7日 01:06:34
下一篇 2025年2月22日 17:08:17

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论