
上期问题回顾
我们常用的nosql有两种,一是redis,二是Memcache,那么这两者有什么区别呢?
答:
性能对比:
由于 redis 只使用单核,而 memcached 可以使用多核,所以平均每一个核上 redis 在存储小数据时比 memcached 性能更高。而在 100k 以上的数据中,memcached 性能要高于 redis,虽然 redis 最近也在存储大数据的性能上进行优化,但是比起 memcached,还是稍有逊色。
为啥 redis 单线程模型也能效率这么高?
纯内存操作
核心是基于非阻塞的 IO 多路复用机制
单线程反而避免了多线程的频繁上下文切换问题
其他不同
数据类型不同,redis有五种(list set string hash zset),memcached只有一种string
Redis支持数据的备份,即master-slave模式的数据备份。
Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
内存的使用率上memcached数据结构简单 只有一种string ,不用记录数据的类型。而reids需要记录。
源码地址
https://gitee.com/liupan1230/spring-series.git
正文
首先引入Redis相关依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>
修改 application.yml文件
spring:# Redis数据库配置redis:# Redis数据库索引(默认为0)database: 0host: 192.168.146.129#密码#password:port: 6379
创建RedisUtil文件
package com.lp.common.config;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.stereotype.Component;/*** @author 刘攀* @version 1.0* @time 2019/12/6 15:36* @describe Redis工具类*/@Componentpublic class RedisUtil {private RedisTemplate redisTemplate;/*** 用于属性的方法上*/@Autowiredpublic void setRedisTemplate(RedisTemplate redisTemplate) {this.redisTemplate = redisTemplate;}/*** 普通缓存放入** @param key 键* @param value 值* @return true成功 false失败*/public boolean set(String key, Object value) {try {redisTemplate.opsForValue().set(key, value);return true;} catch (Exception e) {e.printStackTrace();return false;}}/*** 通过key获取缓存值** @param key 键* @return true成功 false失败*/public Object get(String key) {try {return redisTemplate.opsForValue().get(key);} catch (Exception e) {e.printStackTrace();return null;}}}
现在就可以调用方法使用Redis了,但是现在还会存在一个问题,那就是存值后,在redis里面会出现乱码,这是由于没有序列化编码造成的,为了解决这个问题我们需要创建一个RedisConfig配置文件,这样就可以解决乱码的问题了
package com.lp.common.config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.redis.connection.RedisConnectionFactory;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;import org.springframework.data.redis.serializer.StringRedisSerializer;/*** @author 10263*/@Configurationpublic class RedisConfig {@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();redisTemplate.setConnectionFactory(redisConnectionFactory);setRedisTemplate(redisTemplate);redisTemplate.afterPropertiesSet();return redisTemplate;}public void setRedisTemplate(RedisTemplate redisTemplate) {GenericJackson2JsonRedisSerializer jackson2JsonRedisSerializer = new GenericJackson2JsonRedisSerializer();// 设置值(value)的序列化采用FastJsonRedisSerializer。redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);// 设置键(key)的序列化采用StringRedisSerializer。redisTemplate.setKeySerializer(new StringRedisSerializer());redisTemplate.setHashKeySerializer(new StringRedisSerializer());redisTemplate.afterPropertiesSet();}}
更多redis的使用方法我们将会在后面内容讲解
日常求赞、求分享、求点亮在看
以上就是这篇文章的全部内容了。
各位如果这个文章写得还不错, 求点赞👍 求关注❤️ 求分享👥 点亮在看👁 , 创作不易,各位的支持和认可,就是我创作的最大动力,我们下篇文章见!
南城 | 文 【原创】【转载请联系本人】 如果本篇博客有任何错误,请批评指教,不胜感激 !!!
文章中出现的广告为系统自动配送,与本人无关,如果您方便的话,还请动动手指,点一下,为我增加一点点点微薄的收入,谢谢




