>데이터 베이스 >Redis >Redis를 캐시하는 방법

Redis를 캐시하는 방법

(*-*)浩
(*-*)浩원래의
2019-11-20 11:31:193601검색

Redis를 캐시하는 방법

redis는 캐시 서버로 자주 사용됩니다. 캐싱의 장점은 서버에 대한 부담을 줄이고 데이터 쿼리를 더 빠르게 한다는 것입니다. 느린 데이터 응답 문제를 해결하십시오.

캐시 추가: redis의 해시 데이터 유형을 사용하여 캐시만 추가하세요. (추천 학습: iRedis 동영상 튜토리얼 )

예: 쿼리의 비즈니스 기능에 캐시 추가 필요

1.

1.

우선, 일반적인 비즈니스 로직을 수행하기 전에 캐시를 확인해야 합니다. (데이터베이스 쿼리 전) 캐시 캐시라면 캐시 캐시라면 캐시 캐시라면 캐시 캐시라면 캐시 캐시라면 데이터베이스에 필요한 데이터가 없으면 데이터베이스에 쿼리하세요

방지하기 위해 캐시 추가 시 오류가 발생하고 일반 비즈니스 코드 실행에 영향을 미치는 경우 프로그램이 자동으로 캐시를 캡처할 수 있도록 캐시를 추가하는 코드를 try-catch 코드 블록에 배치합니다.

2. 데이터베이스 쿼리 작업을 완료합니다. 쿼리가 완료된 후 쿼리된 데이터를 캐시에 추가해야 합니다.

코드:

@Override
    public List<TbContent> findContentByCategoryId(Long categoryId) {
        // 查询出的内容列表可以添加到缓存中,便于展示,为了保证添加缓存出现错误不影响程序的正常业务功能,可以使用try catch的方式加缓存
        try {
            String json = jedisClient.hget(CONTENT_LIST, categoryId + "");
            if (json != null) {
                List<TbContent> list = JsonUtils.jsonToList(json, TbContent.class);
                return list;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        TbContentExample example = new TbContentExample();
        Criteria criteria = example.createCriteria();
        criteria.andCategoryIdEqualTo(categoryId);
        // 使用selectByExampleWithBLOBs方法会将content属性框中的内容也查询出来
        List<TbContent> list = contentMapper.selectByExampleWithBLOBs(example);

        // 操作完成后需要将查询的内容添加到缓存中,因为添加缓存的过程可能出错,所以使用try catch将异常抛出即可
        // categoryId+""将Long类型的数据转换成String类型的
        try {
            jedisClient.hset(CONTENT_LIST, categoryId + "", JsonUtils.objectToJson(list));
        } catch (Exception e) {
            e.printStackTrace();
        }
        return list;
    }

Json 변환 도구 클래스: 🎜🎜
package nyist.e3.utils;

import java.util.List;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;

/**
 * 淘淘商城自定义响应结构
 */
public class JsonUtils {

    // 定义jackson对象
    private static final ObjectMapper MAPPER = new ObjectMapper();

    /**
     * 将对象转换成json字符串。
     * <p>Title: pojoToJson</p>
     * <p>Description: </p>
     * @param data
     * @return
     */
    public static String objectToJson(Object data) {
        try {
            String string = MAPPER.writeValueAsString(data);
            return string;
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        return null;
    }
    
    /**
     * 将json结果集转化为对象
     * 
     * @param jsonData json数据
     * @param clazz 对象中的object类型
     * @return
     */
    public static <T> T jsonToPojo(String jsonData, Class<T> beanType) {
        try {
            T t = MAPPER.readValue(jsonData, beanType);
            return t;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    
    /**
     * 将json数据转换成pojo对象list
     * <p>Title: jsonToList</p>
     * <p>Description: </p>
     * @param jsonData
     * @param beanType
     * @return
     */
    public static <T>List<T> jsonToList(String jsonData, Class<T> beanType) {
        JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType);
        try {
            List<T> list = MAPPER.readValue(jsonData, javaType);
            return list;
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        return null;
    }
    
}

위 내용은 Redis를 캐시하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.