fastjson 添加key value_说谈key-value存储的缓存系统——Redis

目前有很多缓存(缓存是指可以进行高速数据交换的存储器,它先于内存与CPU交换数据,因此速率很快)系统。Redis就是其中一个不错的选择。它的高效存取功能和传统关系型数据库结合使用,这样很大程度的提高系统的访问性能。Redis是没有表结构概念的持久性存储系统,但是我们的传统关系型数据库(例如:MySQL)的数据表一般会对应代码中的封装成实体类,所以在我们在Redis中存取、提取数据时必然会有一个数据格式的转换。那如何去转换呢?

我们建立好Spring Boot项目后,首先我们在项目中的pom文件加入依赖spring-boot-starter-data-redis包。建议不用spring-boot-starter-redis,在使用Spring Boot低版本时它们没有区别,但是在Spring Boot1.47以上版本添加spring-boot-starter-reids是找不到jar包。但是在Spring Boot1.3.8 版本以前,添加Redis 的 jar包 就必须是 spring-boot-starter-redis 的jar包。

c3af0718defe4c6223d3dfc4601406ce.png

redis2.1.10

5605c03d81c9825d6c9a34c481ddf544.png

redis1.47

我们可以选择alibaba的fastjson来转换json数据格式,加入com.alibaba.fastjson依赖包,也可用gson或其它jar包。

82164d1a40e446d2035b36c119eb3251.png

redis缓存

在Redis中,Spring Boot没有提供像JPA相应的API资源库接口,JPA让开发者从繁琐的JDBC和SQL代码中解脱出来。我们可以自己去实现服务器类,使用RedisTemplate来实现。Redis提供了string、hash、list、set和zset数据类型存取。例如实体类User,User服务类如下:

b43c697a2e3e51f402bd0a69aebdad2b.png

Redis-User服务类

@Repository  public class UserRedis {        private RedisTemplate redisTemplate;        public void addUser(String key, Long time, User user){          redisTemplate.opsForValue().set(key,JSONObject.toJSONString(user),time, TimeUnit.MINUTES);      }        public void addUser(String key, Long time, List users){          redisTemplate.opsForValue().set(key,JSONObject.toJSONString(users),time, TimeUnit.MINUTES);      }        public User getUser(String key){          String userJson = redisTemplate.opsForValue().get(key);          User user = null;          if(!userJson.isEmpty()){              user = JSONObject.parseObject(userJson,User.class);          }          return user;      }        public List getUserList(String key){          String userListJson = redisTemplate.opsForValue().get(key);          List users = null;          if(!userListJson.isEmpty()){              users = JSONObject.parseObject(userListJson,new TypeToken>(){}.getType());          }          return users;      }        public void deleteUser(String key){          redisTemplate.opsForValue().getOperations().delete(key);      }  }  

Redis是以key-value键值对的方式存储数据,所有代码中的key要保证唯一性,查询或删除数据时可根据唯一的key进行相应的操作。如果没有给Redis数据库中的数据设置时限生命周期,如果不清除的话将永久存储(默认是永久存储的)。如果我们设定时限的话,则会在超过指定时限的数据被Redis自动清除。

在此之前我们应该对RedisTemplate进行一些初始化,对存取的字符串进行JSON格式化的初始化配置,如图:

04605fb9b469a1501f82f08612a00c08.png

RedisTemplate初始化

然后在项目工程的配置文件application.yml配置连接Redis服务器参数,如图:

f6da69c015e3a63a14a6afb80913cd93.png

Redis配置

到此你就可以一个测试程序进行测试验证。如图:

e14bb43b6b75b7f559083110f2c70a38.png

Redis测试程序

1cd62df567b7343b17999020b805c38d.png

测试结果

到这里就可以正常使用Redis缓存技术了。当然对Redis的使用,以上只是其中一种,你也可以注解的方式使用,注解使用更加简单方便。关注我#说谈感悟,后面会分享注解的方式与数据库结合使以及结合Shiro重写cache、cacheManager、SessionDAO和Shiro的使用。

注意事项:Spring Boot2.0在使用Redis默认是不使用连接池的,配置 redis.lettuce.pool下的属性的时候才可以使用到redis连接池。我们上面采用了jedis pool连接池。建议redis key序列化使用StringRedisSerializer,redis value序列化使用Jackson2JsonRedisSerializer。

为了方便Redis的管理可以下载安装Redis Desktop Manager工具软件。下载地址:https://pan.baidu.com/s/16qKiaVZhgmxWKPIeq1jKvw 提取码:69tb

c826171feaf5969ea6be503eaeec6b91.png

Redis Desktop Manager

欢迎指正和讨论。谢谢阅读!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值