- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章SpringBoot集成Redis的思路详解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
。
。
Redis是什么?
Redis(Remote Dictionary Server ),即远程字典服务.
是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API.
与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步.
Redis能该干什么?
内存存储、持久化,内存是断电即失的,所以需要持久化(RDB、AOF)高效率、用于高速缓冲发布订阅系统地图信息分析计时器、计数器(eg:浏览量)… … 。
特性 。
多样的数据类型 。
持久化 。
集群 。
事务 。
… 。
。
SpringBoot操作数据,Spring-Data、 jbdc、redis… … 。
SpringData与SpringBoot齐名的项目! 。
说明:在SpringBoot2.x之后,原来使用的jedis被替换为lettuce 。
jedis:采用的直连,多个线程操作的话,是不安全的,如果想要避免不安全的,需使用jedis pool连接池!像BIO模式 。
lettuce:采用netty,实例可以再多个线程中进行共享,不存在线程不安全的情况!可以减少线程数据,更像NIO模式 。
新建一个项目 。
注意:
查看底层 。
源码分析:
@Bean@ConditionalOnMissingBean( //如果未注入组件条件,我们自己可以定义一个redisTemplate来替换这个默认的 name = {"redisTemplate"})public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException { //默认的 RedisTemplate 没有过多的设置 redis 都是需要序列化的 ! //两个泛型都是 Object Object的类型,我们往后使用需要强制转换<String,String> RedisTemplate<Object, Object> template = new RedisTemplate(); template.setConnectionFactory(redisConnectionFactory); return template;}@Bean@ConditionalOnMissingBean //由于String 是redis 中最常用的类型 所有说单独提出来一个bean!public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException { StringRedisTemplate template = new StringRedisTemplate(); template.setConnectionFactory(redisConnectionFactory); return template;}
1、导入依赖 。
2、配置连接 。
# SpringBoot 所有的配置类 都有一个自动配置类 RedisAutoConfiguration# 自动配置类都会绑定一个 properties 配置文件 RedisProperties#配置 redisspring.redis.host=127.0.0.1spring.redis.port=6379spring.redis
3、测试! 。
package com.kk;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.data.redis.connection.RedisConnection;import org.springframework.data.redis.core.RedisTemplate;@SpringBootTestclass Redis01SpringbootApplicationTests { @Autowired private RedisTemplate redisTemplate; @Test void contextLoads() { /* redisTemplate opsForValue 操作字符串的 类似String opsForList 操作List 类似List opsForSet opsForHash opsForZSet opsForGeo opsForHyperLogLog 除了基本的操作 ,我们常用的方法都可以直接通过redisTemplate 比如事务和基本的CRUD */ //获取redis的连接对象// RedisConnection connection = redisTemplate.getConnectionFactory().getConnection();// connection.flushDb();// connection.flushAll(); redisTemplate.opsForValue().set("kk1","kk2"); System.out.println(redisTemplate.opsForValue().get("kk1")); }}
。
首先先建一个实体类,测试 。
User类 。
package com.kk.pojo;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import org.springframework.stereotype.Component;import java.io.Serializable;@Component@Data@AllArgsConstructor@NoArgsConstructor//在企业中,我们所有的pojo都会序列化public class User implements Serializable { private String name; private int age;}
测试:
@Testpublic void test() throws JsonProcessingException { //真实的开发一般都使用json来传递对象 User user = new User("kk", 17); String jsonUser = new ObjectMapper().writeValueAsString(user);//这样就变成了一个json对象了 redisTemplate.opsForValue().set("user",jsonUser); System.out.println(redisTemplate.opsForValue().get("user"));}
r = new ObjectMapper().writeValueAsString(user);//这样就变成了一个json对象了redisTemplate.opsForValue().set(“user”,jsonUser);System.out.println(redisTemplate.opsForValue().get(“user”));}
==注意:如果不在User类中实现序列化,它会报错== 。
到此这篇关于SpringBoot集成Redis的文章就介绍到这了,更多相关SpringBoot集成Redis内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。
原文链接:https://blog.csdn.net/weixin_50569789/article/details/120716240 。
最后此篇关于SpringBoot集成Redis的思路详解的文章就讲到这里了,如果你想了解更多关于SpringBoot集成Redis的思路详解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我有以下场景:有 1 个包含书籍的表和两对包含销售订单和采购订单交易的表 (HD/IT),这些交易通过销售订单 ID 连接。表结构如下: CREATE TABLE `books` ( `id` i
我是一名优秀的程序员,十分优秀!