ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

使用 Java 操作 Redis

2022-08-13 23:30:53  阅读:155  来源: 互联网

标签:Java Redis redis springframework jedis 操作 序列化 data redisTemplate



Jedis

1. 概述

Jedis 是一款使用 Java 操作 Redis 的工具,有点类似于 JDBC

2. 引入依赖

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
</dependency>

3. 操作

// 创建 jedis 客户端对象
Jedis jedis = new Jedis("39.108.6.119", 6379);
// 选择使用一个库,默认 0 号库
jedis.select(0);
// 清空当前库
jedis.flushDB();
//设置 redis 字符串数据
jedis.set("key", "value");
//存储数据到列表中
jedis.lpush("list", "value1");
jedis.lpush("list", "value2");
jedis.lpush("list", "value3");
// 更多操作
...
// 释放资源
jedis.close();

具体 API 参考官网文档:https://www.javadoc.io/doc/redis.clients/jedis/latest/index.html


SpringBoot 整合 Redis

1. 概述

SpringData 提供了 RedisTemplate 和 StringRedisTemplate,后者是前者的子集。两个模板基本一致,不同之处体现在操作的数据类型不同。RedisTemplate 中 key 和 value 泛型都是 Object,可以存储一个对象。而 StringRedisTemplate 的两个泛型都是 String,只能存储字符串

2. 引入依赖

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

3. 操作

@SpringBootTest(classes = RedisSpringbootApplication.class)
@RunWith(SpringRunner.class)
public class TestRedisTemplate {

    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    @Autowired
    private RedisTemplate redisTemplate;

    @Test
    public void test() {
        stringRedisTemplate.opsForValue().set("name", "jack");
        String name = stringRedisTemplate.opsForValue().get("name");
        // 更多操作...
    }
}

具体 API 参考官网文档:https://docs.spring.io/spring-data/redis/docs/current/api/

4. 序列化

无论使用 StringRedisTemplate 还是 RedisTemplate,都会对 key 和 value 进行序列化

Spring-Data-Redis 的序列化方式是通过实现 RedisSerializer 接口,每一种实现都对应不同的序列化方式

4.1 JDK 序列化

org.springframework.data.redis.serializer.JdkSerializationRedisSerializer,RedisTemplate 的默认序列化方式,序列化对象需实现 Serializable 接口,绝大多数情况下,不推荐使用该方式,因为这种方式序列化之后保存的是字节序列,对阅读不友好

4.2 String 序列化

org.springframework.data.redis.serializer.StringRedisSerializer,StringRedisTemplate 的默认序列化方式,这种实现方式比较轻量与高效,但只能对字符串序列化,无法对普通对象序列化

4.3 Json 序列化

org.springframework.data.redis.serializer.Jackson2JsonRedisSerializerorg.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer,两者都是使用 Jackson 实现 JSON 的序列化方式,不同的是,前者必须在构造序列化对象时传入对象的类型,后者则不需要,并且序列化时将对象类型也保存了

4.4 修改序列化方案
// 以修改序列化方案为 StringRedisSerializer 为例
// 修改 key 序列化方案
redisTemplate.setKeySerializer(RedisSerializer.string());
// 修改 value 序列化方案
redisTemplate.setValueSerializer(RedisSerializer.string());
// 修改 hash key 序列化方案
redisTemplate.setHashKeySerializer(RedisSerializer.string());
// 修改 hash value 序列化方案
redisTemplate.setHashValueSerializer(RedisSerializer.string());

标签:Java,Redis,redis,springframework,jedis,操作,序列化,data,redisTemplate
来源: https://www.cnblogs.com/Yee-Q/p/16584546.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有