Heim >Java >javaLernprogramm >Wie verwende ich StringRedisTemplate und RedisTemplate in Java?

Wie verwende ich StringRedisTemplate und RedisTemplate in Java?

PHPz
PHPznach vorne
2023-04-23 09:34:061711Durchsuche

Wenn Sie es verwenden, verwenden Sie einfach das Maven-Abhängigkeitspaket Spring-Boot-Starter-Data-Redis und fügen Sie dann StringRedisTemplate oder RedisTemplate in den Dienst ein zwei sind kompatibel Die Betriebsmethoden von Redis sind ähnlich

Wie verwende ich StringRedisTemplate und RedisTemplate in Java?

Die Daten zwischen den beiden sind nicht gemeinsam; das heißt, StringRedisTemplate kann nur die Daten in StringRedisTemplate verwalten, und RedisTemplate kann nur die Daten in RedisTemplate verwalten.

Tatsächlich liegt der Unterschied zwischen ihnen hauptsächlich in der verwendeten Serialisierungsklasse: Wie verwende ich StringRedisTemplate und RedisTemplate in Java?

RedisTemplate verwendet JdkSerializationRedisSerializer. Beim Speichern von Daten werden die Daten zuerst in ein Byte-Array serialisiert und dann in der Redis-Datenbank gespeichert.

  • StringRedisTemplate verwendet StringRedisSerializer

  • Hinweise zur Verwendung:

Wenn Ihre Redis-Datenbank ursprünglich String-Daten speichert oder die Daten, auf die Sie zugreifen möchten, Daten vom Typ String sind, verwenden Sie einfach StringRedisTemplate.

Wenn Ihre Daten jedoch ein komplexer Objekttyp sind und Sie beim Herausnehmen keine Datenkonvertierung durchführen möchten und ein Objekt direkt aus Redis übernehmen können, ist die Verwendung von RedisTemplate die bessere Wahl.

Häufig gestellte Fragen bei der Verwendung von RedisTemplate:

Daten, auf die in redisTemplate zugegriffen wird, sind alles Byte-Arrays. Wenn die in Redis gespeicherten Daten in lesbarer Form und nicht in einem Byte-Array vorliegen und redisTemplate zum Abrufen des Werts verwendet wird, können die exportierten Daten nicht abgerufen werden und der erhaltene Wert ist null. Sie können versuchen, StringRedisTemplate zu verwenden.

StringRedisTemplates Betriebsmethode für Redis:

StringRedisTemplate.opsForValue().* //操作String字符串类型
StringRedisTemplate.delete(key/collection) //根据key/keys删除
StringRedisTemplate.opsForList().*  //操作List类型
StringRedisTemplate.opsForHash().*  //操作Hash类型
StringRedisTemplate.opsForSet().*  //操作set类型
StringRedisTemplate.opsForZSet().*  //操作有序set

Der Schnittstellenimplementierungscode lautet wie folgt:

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();
    }
}

Das obige ist der detaillierte Inhalt vonWie verwende ich StringRedisTemplate und RedisTemplate in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen