暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

《项目实战》springboot整合redis

基础进阶 2020-01-02
199


上期问题回顾

我们常用的nosql有两种,一是redis,二是Memcache,那么这两者有什么区别呢?


答:

性能对比:

  1. 由于 redis 只使用单核,而 memcached 可以使用多核,所以平均每一个核上 redis 在存储小数据时比 memcached 性能更高。而在 100k 以上的数据中,memcached 性能要高于 redis,虽然 redis 最近也在存储大数据的性能上进行优化,但是比起 memcached,还是稍有逊色。


为啥 redis 单线程模型也能效率这么高?

  1. 纯内存操作

  2. 核心是基于非阻塞的 IO 多路复用机制

  3. 单线程反而避免了多线程的频繁上下文切换问题


其他不同

  1. 数据类型不同,redis有五种(list set string hash zset),memcached只有一种string

  2. Redis支持数据的备份,即master-slave模式的数据备份。

  3. Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。

  4. 内存的使用率上memcached数据结构简单 只有一种string ,不用记录数据的类型。而reids需要记录。

源码地址

https://gitee.com/liupan1230/spring-series.git

正文

相关文章
《软件安装》centos 安装 redis
《项目实战》SpringBoot入门


首先引入Redis相关依赖


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>


修改 application.yml文件



spring:
# Redis数据库配置
redis:
# Redis数据库索引(默认为0)
database: 0
host: 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工具类
*/
@Component
public class RedisUtil {


private RedisTemplate redisTemplate;


/**
* 用于属性的方法上
*/
@Autowired
public 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
*/
@Configuration
public class RedisConfig {


@Bean
public 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的使用方法我们将会在后面内容讲解

日常求赞、求分享、求点亮在看

以上就是这篇文章的全部内容了。


各位如果这个文章写得还不错, 求点赞👍 求关注❤️  求分享👥 点亮在看👁 , 创作不易,各位的支持和认可,就是我创作的最大动力,我们下篇文章见!


南城 | 文  【原创】【转载请联系本人】  如果本篇博客有任何错误,请批评指教,不胜感激 !!!


文章中出现的广告为系统自动配送,与本人无关如果您方便的话,还请动动手指点一下,为我增加一点点点微薄的收入,谢谢

文章转载自基础进阶,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论