• 使用 Java 操作 Redis



    Jedis

    1. 概述

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

    2. 引入依赖

    <dependency>
        <groupId>redis.clientsgroupId>
        <artifactId>jedisartifactId>
        <version>2.9.0version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    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();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    具体 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.bootgroupId>
        <artifactId>spring-boot-starter-data-redisartifactId>
    dependency>
    
    • 1
    • 2
    • 3
    • 4

    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");
            // 更多操作...
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    具体 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());
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

  • 相关阅读:
    程序员装逼指南(2022年版本)
    java专题训练(数字加密)
    linux搭建docker镜像服务
    java数据结构
    python之pyQt5实例:几何绘图界面
    【优化版】DOSBox及常用汇编工具的详细安装教程
    C#毕业设计——基于C#+asp.net+sqlserver的学生成绩管理系统设计与实现(毕业论文+程序源码)——成绩管理系统
    【C++】STL03-deque
    带刹车死区的互补输出与捕获实验
    L1-002 打印沙漏
  • 原文地址:https://blog.csdn.net/CSDN_handsome/article/details/126325868