Redis快速入门,分两个客户端:Jedis和SpringDataRedis
本文有凯哥Java(kaigejava).个博:www.kaigejava.com 发布于iteye
使用Jdedis
1、引入依赖
<!--jedis--> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.7.0</version> </dependency> <!--单元测试--> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter</artifactId> <version>5.7.0</version> <scope>test</scope> </dependency>
2、创建测试类:
import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import redis.clients.jedis.Jedis; import java.util.HashMap; import java.util.Map; /** * @author 凯哥Java */ public class JedisTest { private Jedis jedis; @BeforeEach public void initJedis(){ jedis = new Jedis("192.168.50.135",6379); } @Test public void testString(){ String result = jedis.set("name","kaige"); System.out.println("set Result"+result); String nameValue = jedis.get("name"); System.out.println("v:"+nameValue); } @Test public void hashTest(){ Map<String,String> value = new HashMap<>(); value.put("id","1"); value.put("name","hset1"); value.put("age","23"); Long result = jedis.hset("persion_1",value); System.out.println("set Result"+result); String age = jedis.hget("persion_1","age"); System.out.println("age:"+age); } @AfterEach void tearDown() { if (jedis != null) { jedis.close(); } } }
说明:
如果生产环境就这么使用,会出问题的。jedis是线程不安全的,而且创建、销毁也是很消耗的。所以使用连接池方式:
创建连接池:
import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; /** * @author 凯哥Java * @description jedis连接池 */ public class JedisFactory { private static final JedisPool jedisPool; static { JedisPoolConfig poolConfig = new JedisPoolConfig(); //最大连接数 poolConfig.setMaxTotal(8); //最大空闲连接 poolConfig.setMaxIdle(8); //等待市场 poolConfig.setMaxWaitMillis(1000); //最小空闲连接 poolConfig.setMinIdle(0); jedisPool = new JedisPool(poolConfig,"192.168.50.135",6379); } public static Jedis getJedis(){ return jedisPool.getResource(); } }
使用:
二:springDataRedis
springData介绍:
springDataRedis中提供了RedisTemplate工具类,其中封装了各种对Redis的操作。并且将不同数据类型的操作API封装到了不同类型中:
spring 默认使用的是lettuce客户端的。如果要使用jedis的话,需要自己引入相关依赖。
使用springdataRedis步骤:
1:引入依赖
<!--Redis依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!--连接池依赖--> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> </dependency>
2:配置Redis
application.yaml文件:
spring: redis: host: 192.168.50.135 port: 6379 lettuce: pool: max-active: 8 max-idle: 8 min-idle: 0 max-wait: 100ms
3:写测试类:
需要注意:在测试类上,一定要写入@RunWith(SpringRunner.class)这个注解。如果不写,会报redisTemplate空指针异常。
执行完成之后,我们到Redis库中查看:
为什么存入进去的数据,是乱码的呢?而且,有一个name,是我们自己set的,乱码的这个是我们通过RedisTemplate插入的,我们来看看RedisTemplate源码
RedisTemplate需要设置序列化:
我们跟set源码,会发现,set是使用了value的序列化:
跟着源码,我们知道,默认使用的是jdk自带的序列化工具。
为了解决两个name(一个是正常的name,一个是乱码的name)问题,乱码的缺点:
1:可读性差
2:内存占用较大
我们可以自定义RedisTemplate的序列化方式,代码如下:
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.RedisSerializer; /** * @author 凯哥Java */ @Configuration public class RedisConfig { @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory){ // 创建RedisTemplate对象 RedisTemplate<String, Object> template = new RedisTemplate<>(); // 设置连接工厂 template.setConnectionFactory(connectionFactory); // 创建JSON序列化工具 GenericJackson2JsonRedisSerializer jsonRedisSerializer = new GenericJackson2JsonRedisSerializer(); // 设置Key的序列化 template.setKeySerializer(RedisSerializer.string()); template.setHashKeySerializer(RedisSerializer.string()); // 设置Value的序列化 template.setValueSerializer(jsonRedisSerializer); template.setHashValueSerializer(jsonRedisSerializer); // 返回 return template; } }
配置好自定义的之后,再次执行,就可以了。
通过自定义序列化之后,我们在Redis中存入一个user对象:
存入值,我们发现在Redis库中,对象中多了类全路径。
这样有个缺点:增加了额外的内存开销的。那么这个时候怎么办呢?
我们可以规定,在使用String类型的时候,存入对象的是,需要先将对象序列化,然后获取后,在将对象反序列即可。
相关推荐
1. **Redis快速入门**:这部分通常会介绍如何安装Redis,包括在各种操作系统(如Linux、Windows、macOS)上的安装步骤。还会讲解Redis服务器的启动与停止,以及配置文件的基本设置。此外,客户端工具的使用,如`...
redis快速入门详解,包括主从备份、详细配置说明~
redis的快速入门与详解.让你快速了解和掌握redis的使用
"Redis快速入门ppt" Redis快速入门 ppt 介绍了 Redis 的基础知识,包括 NoSQL 的概念、Redis 的安装、Redis 的常见命令、Redis 的 Java 客户端等。 认识 NoSQL NoSQL 是一种非关系型数据库,它不同于传统的关系型...
redis快速入门详解PPT 讲解全面很不错的-------------------------------------------------------------------------------------------------------------------------------------------------
Redis 快速入门详解 Redis 是一款开源的、高性能的键值存储系统(key-value store),常被称作是一款数据结构服务器(data structure server)。Redis 的键值可以包括字符串(strings)类型,同时它还包括哈希...
redis快速入门 (阳哥课堂笔记),内容包括redis的安装、Redis的数据类型、Redis的持久化、解析配置文件、Redis的事务、Redis集群
【NOSQL数据库-Redis快速入门】 NOSQL(Not Only SQL)数据库是近年来新兴的一类数据库系统,它与传统的关系型数据库相比有着显著的区别。NOSQL数据库不支持SQL语法,其数据存储结构通常不遵循关系表模型,而是采用...
以下是对Redis快速入门的详细讲解: 1. **Redis简介** Redis是一个开源(BSD许可),内存中的数据结构存储系统,它可以用作数据库、缓存和消息代理。它的特点是数据持久化、支持多种数据结构(如字符串、哈希、...
本章将为你提供一个Redis快速入门的指南,让你掌握基本的使用方法和概念。 一、Redis概述 Redis(Remote Dictionary Server)是一个开源的、基于内存的数据结构存储系统,支持数据持久化,可作为数据库、缓存和消息...
redis讲解入门PPT介绍
在本文中,我们将深入探讨如何使用SpringBoot集成Redis进行快速入门。这个Demo旨在展示如何配置SpringBoot项目,以便能够利用Redis进行数据的读、写和删除操作。首先,我们需要了解项目的基本环境设置。 1. **环境...
redis 详细介绍 配置安装以及常用命令
本手册专为新手小白设计,旨在帮助初学者快速掌握Redis的基本概念、操作及应用。 1. **Redis简介** Redis是Remote Dictionary Server的缩写,由Salvatore Sanfilippo开发,它是一款开源、基于内存且支持持久化的...
本指南将帮助初学者理解 Redis 的基本概念、安装与配置、数据类型以及常用命令,从而快速入门 Redis。 1. **Redis 简介** - Redis 源自意大利程序员 Salvatore Sanfilippo,最初是为了提高网站性能而设计的。 - ...
Redis快速入门PPT,非常详细,非常基础。学会基础就掌握了一大半了,做的非常不错的PPT,非常值得下载。
4. **实时数据分析**:通过Redis处理大量实时数据流,实现快速统计分析。 #### 七、Redis最佳实践 1. **优化数据模型**:合理设计数据结构,避免频繁修改数据。 2. **合理设置过期时间**:对于不需要长期存储的...
本自学视频课程旨在帮助初学者从零基础快速掌握Redis的基本概念、常用操作以及如何实现高可用性。通过12个章节的深入讲解,将使您对Redis有全面而深入的理解。 第一章:Redis简介与安装 本章将介绍Redis的基本概念...
#### 一、Redis快速入门 ##### 1.1 Key-Value存储系统简介 **Redis**作为一款高性能的键值(Key-Value)存储系统,在现代软件架构中扮演着重要的角色。与其他键值存储系统如**Voldemort**、**Dynamo**、**memcachedb...