redis怎么做缓存


本文摘自PHP中文网,作者(*-*)浩,侵删。

redis常本用来作为缓存服务器。缓存的好处是减少服务器的压力,数据查询速度快。解决数据响应慢的问题。

添加缓存:只用redis的Hash数据类型添加缓存。 (推荐学习:Redis视频教程)

例如:需要在查询的业务功能中,添加缓存

1.首先需要在执行正常的业务逻辑之前(查询数据库之前),查询缓存,如果缓存中没有需要的数据,查询数据库

为了防止添加缓存出错,影响正常业务代码的执行,将添加缓存的代码放置到try-catch代码快中,让程序自动捕获。

2.完成数据库的查询操作,查询完成之后需要将查询的数据添加到缓存中。

代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

@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转换的工具类:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

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怎么做缓存的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

详解Redis哨兵模式

2021年最新Redis面试题大全及答案(收藏)

聊聊Redis中的哨兵模式

使用Redis完成抽奖功能

关于Redis原子计数器incr,防止并发请求

Redis能存对象吗

Redis什么时候用

小记 Redis介绍与安装部署

使用Redis的bitmaps统计活跃用户

Redis是什么数据库?

更多相关阅读请进入《Redis》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...