个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ Jedis、springDataRedis、St
个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~
个人主页:.29.的博客
学习社区:进去逛一逛~
引入依赖
:
<dependencies> <dependency> <groupId>redis.clientsgroupId> <artifactId>jedisartifactId> <version>4.3.0version> dependency> <dependency> <groupId>org.junit.jupitergroupId> <artifactId>junit-jupiterartifactId> <version>5.9.2version> <scope>testscope> dependency> dependencies>
测试Java客户端操作Redis
:
测试代码:
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.Map;public class JedisTest { private Jedis jedis; //链接Redis @BeforeEach void setUp(){ //1.建立连接 jedis = new Jedis("192.168.88.128",6379);//参数:ip地址、端口号 //2.设置密码 jedis.auth("123456"); //3.选择库 jedis.select(0); } //测试java客户端操作Redis(String类型操作) @Test public void test1(){ //存入数据 String result = jedis.set("name", ".29."); System.out.println("result = "+result); //获取数据 String name = jedis.get("name"); System.out.println("name = "+name); } //测试java客户端操作Redis(Hash类型操作) @Test public void test2(){ //存入数据 jedis.hset("user:1","name","Little29"); jedis.hset("user:1","age","19"); //获取数据 Map<String, String> result = jedis.hgetAll("user:1"); System.out.println(result); } //关闭资源 @AfterEach void tearDown(){ if(jedis != null){ jedis.close(); } }}
测试结果:
⚪—操作String类型—⚪
⚪—操作hash类型—⚪
为什么使用Jedis连接池
:
Jedis连接池——配置工具类
:
import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig;import java.time.Duration;public class JedisConnectionFactory { //jedis连接池对象 private static final JedisPool jedisPool; static { JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); //最大连接 jedisPoolConfig.setMaxTotal(8); //最大空闲连接 jedisPoolConfig.setMaxIdle(8); //最小空闲连接 jedisPoolConfig.setMinIdle(0); //设置最长等待时间,单位ms jedisPoolConfig.setMaxWait(Duration.ofMillis(1000)); //jedisPoolConfig.setMaxWaitMillis(1000);//较早版本方式 //参数:连接池配置、ip地址、端口号、超时时间、密码 jedisPool = new JedisPool(jedisPoolConfig, "192.168.88.128", 6379,1000,"123456"); } //获取Jedis对象 public static Jedis getJedis(){ return jedisPool.getResource(); }}
SpringDataRedis简介
:
SpringData是Spring中数据操作的模块,包含对各种数据库的集成,其中对Redis的集成模块就叫做SpringDataRedis
,官网网址:https://spring.io/projects/spring-data-redis
功能介绍:
引入依赖(需要是SpringBoot工程)
:
<dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-data-redisartifactId> dependency> <dependency> <groupId>org.apache.commonsgroupId> <artifactId>commons-pool2artifactId> dependency>
application.yml配置
spring: redis: host: 192.168.88.128 passWord: 123456 port: 6379 lettuce: pool: max-active: 8 #最大连接 max-idle: 8 #最大空闲连接 max-wait: 100 #连接等待时间 min-idle: 0 #最小空闲连接
注入RedisTemplate,编写测试
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.core.RedisTemplate;@SpringBootTestclass SpringDataRedisDemoApplicationTests { //注入 @Autowired private RedisTemplate redisTemplate; @Test void contextLoads() { //写入一条String数据 redisTemplate.opsForValue().set("age",19); //获取String数据 Object age = redisTemplate.opsForValue().get("age"); System.out.println("age = "+age); }}
SpringDataRedis的序列化方式
:
自定义序列化
:
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;@Configurationpublic class RedisConfig { @Bean @ConditionalOnSingleCandidate public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory connectionFactory){ //创建RedisTemplate对象 RedisTemplate<String,Object> redisTemplate = new RedisTemplate<>(); //设置连接工厂 redisTemplate.setConnectionFactory(connectionFactory); //创建JSON序列化工具 GenericJackson2JsonRedisSerializer jsonRedisSerializer = new GenericJackson2JsonRedisSerializer(); //设置Key序列化(String类型) redisTemplate.seTKEySerializer(RedisSerializer.string()); redisTemplate.setHashKeySerializer(RedisSerializer.string()); //设置value序列化(JSON格式) redisTemplate.setValueSerializer(jsonRedisSerializer); redisTemplate.setHashValueSerializer(jsonRedisSerializer); //返回 return redisTemplate; }}
注意
:
Jackson依赖(SpringBoot项目,无须手动指定版本号):
<dependency> <groupId>com.fasterxml.jackson.coregroupId> <artifactId>jackson-databindartifactId> dependency>
测试
:
@SpringBootTestclass SpringDataRedisDemoApplicationTests { //注入 @Resource private RedisTemplate<String,Object> redisTemplate; //测试操作Redis @Test void contextLoads() { //写入一条String数据 redisTemplate.opsForValue().set("age",19); redisTemplate.opsForValue().set("name","自定义姓名"); //获取String数据 Object age = redisTemplate.opsForValue().get("age"); Object name = redisTemplate.opsForValue().get("name"); System.out.println("age = "+age); System.out.println("name = "+name); }}
注意
:
示例
:
import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.databind.ObjectMapper;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.core.RedisTemplate;import org.springframework.data.redis.core.StringRedisTemplate;import javax.annotation.Resource;import java.util.Map;@SpringBootTestclass RedisDemoApplicationTests { //使用StringRedisTemplate,手动进行序列化与反序列化 @Resource private StringRedisTemplate stringRedisTemplate; //JSON工具 private static final ObjectMapper mapper = new ObjectMapper(); @Test public void StringRedisTemplateTest() throws JsonProcessingException { //设置对象 User user = new User("name3", 29); //手动序列化 String set = mapper.writeValueAsString(user); //向Redis写入数据 stringRedisTemplate.opsForValue().set("user:3",set); //向Redis获取数据 String get = stringRedisTemplate.opsForValue().get("user:3"); //手动反序列化 User value = mapper.readValue(get, User.class); System.out.println("user:3 = "+value); } @Test public void testHash(){ //向Redis存入Hash键值对 stringRedisTemplate.opsForHash().put("user:4","HashName","name4"); //向Redis获取Hash键值对 Map<Object, Object> entries = stringRedisTemplate.opsForHash().entries("user:4"); System.out.println(entries); }}
来源地址:https://blog.csdn.net/ebb29bbe/article/details/134622246
--结束END--
本文标题: ⑩【Redis Java客户端】:Jedis、SpringDataRedis、StringRedisTemplate
本文链接: https://www.lsjlt.com/news/551730.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-04-03
2024-04-03
2024-04-01
2024-01-21
2024-01-21
2024-01-21
2024-01-21
2023-12-23
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0