一文带你了解如何在Java中操作Redis

这篇具有很好参考价值的文章主要介绍了一文带你了解如何在Java中操作Redis。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能帮到一些萌新进行新技术的学习那也是极好的。作者菜菜一枚,文章中如果有记录错误,欢迎读者朋友们批评指正。
(博客的参考源码可以在我主页的资源里找到,如果在学习的过程中有什么疑问欢迎大家在评论区向我提出)

发现宝藏

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【宝藏入口】。

一、 Redis客户端简介

1. Redis客户端分类

Redis的Java 客户端很多,官方推荐的有三种

  1. Jedis
  2. Lettuce
  3. Redisson

2. Spring 整合 Redis 的两种方式

Spring 对 Redis 客户端进行了整合,提供了 Spring Data Redis,在spring Boot项目中还提供了对应的Starter,即spring-boot-starter-data-redis

二、 使用 Jedis 操作 Redis

1. Jedis的maven坐标

<dependency>
<groupld>redis.clients</groupld>
<artifactld>jedis</artifactld>
<version>2.8.0</version>
</dependency>

2. 使用Jedis操作Redis的步骤

  1. 获取连接
  2. 执行操作
  3. 关闭连接

3. Jedis 操作 Redis 示例

1. 新建maven工程,导入相关坐标

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

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

2. 编写测试方法

/**
 * 使用Jedis操作Redis
 */
public class JedisTest {

    @Test
    public void testRedis(){
        //1 获取连接
        Jedis jedis = new Jedis("localhost",6379);
        
        //2 执行具体的操作
        jedis.set("username","xiaoming");
        
        //输出打印
        String value = jedis.get("username");
        System.out.println(value);
        
        //删除操作
        //jedis.del("username");

        //哈希存储
        jedis.hset("myhash","addr","bj");
        //输出打印
        String hValue = jedis.hget("myhash", "addr");
        System.out.println(hValue);

        //keys * 输出打印
        Set<String> keys = jedis.keys("*");
        for (String key : keys) {
            System.out.println(key);
        }

        //3 关闭连接
        jedis.close();
    }
}

3. 启动redis服务(windows),连接客户端,测试获取 key username

一文带你了解如何在Java中操作Redis,Redis,java,redis,开发语言,后端,缓存,数据库

4. 启动测试类,通过后再次获取key username

一文带你了解如何在Java中操作Redis,Redis,java,redis,开发语言,后端,缓存,数据库

三、 使用 Spring Data Redis 操作 Redis

1. Spring Data Redis 的 maven 坐标

<dependency>
<groupld>org.springframework.boot</groupld>
<artifactld>spring-boot-starter-data-redis</artifactld>
</dependency>

2. spring Data Redis 中 operation 接口的分类

spring Data Redis中提供了一个高度封装的类RedisTemplate,针对iedis客户端中大量api进行了归类封装,将同一类型操作封装为operation接口,具体分类如下

  1. ValueOperations ---- 简单K-V操作
  2. SetOperations ---- set类型数据操作
  3. ZSetOperations ---- zset类型数据操作
  4. HashOperations ---- 针对map类型的数据操作
  5. ListOperations ---- 针对list类型的数据操作

3. Spring Data Redis 操作 Redis String 类型示例(ValueOperations ---- 简单K-V操作)

1. 新建 SpringBoot 工程,导入相关坐标

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

2. yml 配置文件

spring:
  application:
    name: springdataredis_demo
  #Redis相关配置
  redis:
    host: localhost
    port: 6379
    #password: 123456
    database: 0 #默认操作的是0号数据库
    jedis:
      #Redis连接池配置
      pool:
        max-active: 8 #最大连接数
        max-wait: 1ms #连接池最大阻塞等待时间
        max-idle: 4 #连接池中的最大空闲连接
        min-idle: 0 #连接池中的最小空闲连接

3. 了解如何修改默认数据库数量(16)配置

一文带你了解如何在Java中操作Redis,Redis,java,redis,开发语言,后端,缓存,数据库

4. 编写测试方法

@SpringBootTest
@RunWith(SpringRunner.class)
public class SpringDataRedisTest {

    //yml中配置支持RedisTemplate对象自动装配
    @Autowired
    private RedisTemplate redisTemplate;

    /**
     * 操作String类型数据
     */
    @Test
    public void testString(){
        //ValueOperations valueOperations = redisTemplate.opsForValue();
        redisTemplate.opsForValue().set("city","beijing");
    }
}

5. 运行并访问设置的 key 值

一文带你了解如何在Java中操作Redis,Redis,java,redis,开发语言,后端,缓存,数据库

6. 设置配置类配置Redis序列化方式

/**
 * Redis配置类
 */

@Configuration
public class RedisConfig extends CachingConfigurerSupport {

    @Bean
    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) {

        RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();

        //默认的Key序列化器为:JdkSerializationRedisSerializer
        //String类型序列化器
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        //hash类型序列化器
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());

        redisTemplate.setConnectionFactory(connectionFactory);

        return redisTemplate;
    }

}

7. 修改添加的 key 为 city123,再次运行测试类并访问新设置的 key

一文带你了解如何在Java中操作Redis,Redis,java,redis,开发语言,后端,缓存,数据库

8. 其他测试

@SpringBootTest
@RunWith(SpringRunner.class)
public class SpringDataRedisTest {

    //yml中配置支持RedisTemplate对象自动装配
    @Autowired
    private RedisTemplate redisTemplate;

    /**
     * 操作String类型数据
     */
    @Test
    public void testString(){
        //ValueOperations valueOperations = redisTemplate.opsForValue();
        redisTemplate.opsForValue().set("city123","beijing");

        //打印输出
        String value = (String) redisTemplate.opsForValue().get("city123");
        System.out.println(value);

        //设置超时时间
        redisTemplate.opsForValue().set("key1","value1",10l, TimeUnit.SECONDS);

        //当key不存在才设置value
        Boolean aBoolean = redisTemplate.opsForValue().setIfAbsent("city1234", "nanjing");
        System.out.println(aBoolean);
        
    }
}

4. Spring Data Redis 操作 Redis hash 类型示例(HashOperations ---- 针对map类型的数据操作)

1. 编写相关测试方法

@SpringBootTest
@RunWith(SpringRunner.class)
public class SpringDataRedisTest {

    @Autowired
    private RedisTemplate redisTemplate;
    
    /**
     * 操作Hash类型数据
     */
    @Test
    public void testHash(){
        HashOperations hashOperations = redisTemplate.opsForHash();

        //存值
        hashOperations.put("002","name","xiaoming");
        hashOperations.put("002","age","20");
        hashOperations.put("002","address","bj");

        //取值
        String age = (String) hashOperations.get("002", "age");
        System.out.println(age);

        //获得hash结构中的所有字段
        Set keys = hashOperations.keys("002");
        for (Object key : keys) {
            System.out.println(key);
        }

        //获得hash结构中的所有值
        List values = hashOperations.values("002");
        for (Object value : values) {
            System.out.println(value);
        }
    }
}

2. 运行测试类,观察结果

一文带你了解如何在Java中操作Redis,Redis,java,redis,开发语言,后端,缓存,数据库

5. Spring Data Redis 操作 Redis list 类型示例(ListOperations ---- 针对list类型的数据操作)

1. 编写测试相关测试方法

@SpringBootTest
@RunWith(SpringRunner.class)
public class SpringDataRedisTest {

    @Autowired
    private RedisTemplate redisTemplate;
       /**
     * 操作List类型的数据
     */
    @Test
    public void testList(){
        ListOperations listOperations = redisTemplate.opsForList();

        //存1个值
        listOperations.leftPush("mylist","a");
        //存多个值
        listOperations.leftPushAll("mylist","b","c","d");

        //取值
        List<String> mylist = listOperations.range("mylist", 0, -1);
        for (String value : mylist) {
            System.out.println(value);
        }

        //获得列表长度 llen
        Long size = listOperations.size("mylist");
        int lSize = size.intValue();
        for (int i = 0; i < lSize; i++) {
            //出队列
            String element = (String) listOperations.rightPop("mylist");
            System.out.println(element);
        }
    }
}

2. 运行测试方法,观察结果

一文带你了解如何在Java中操作Redis,Redis,java,redis,开发语言,后端,缓存,数据库

6. Spring Data Redis 操作 Redis set 类型示例( SetOperations ---- set类型数据操作)

1. 编写相关测试方法

@SpringBootTest
@RunWith(SpringRunner.class)
public class SpringDataRedisTest {

    @Autowired
    private RedisTemplate redisTemplate;
    /**
     * 操作Set类型的数据
     */
    @Test
    public void testSet(){
        SetOperations setOperations = redisTemplate.opsForSet();

        //存值
        setOperations.add("myset","a","b","c","a");

        //取值
        Set<String> myset = setOperations.members("myset");
        for (String o : myset) {
            System.out.println(o);
        }

        //删除成员
        setOperations.remove("myset","a","b");

        //取值
        myset = setOperations.members("myset");
        for (String o : myset) {
           ![在这里插入图片描述](https://img-blog.csdnimg.cn/498ec17ed8744d25a0cd5ee96fc20b73.png)
 System.out.println(o);
        }

    }
}

2. 运行测试方法,观察结果

一文带你了解如何在Java中操作Redis,Redis,java,redis,开发语言,后端,缓存,数据库

7. Spring Data Redis 操作 Redis Zset 类型示例(ZSetOperations ---- zset类型数据操作)

1. 编写相关测试方法

@SpringBootTest
@RunWith(SpringRunner.class)
public class SpringDataRedisTest {

    @Autowired
    private RedisTemplate redisTemplate;
     /**
     * 操作ZSet类型的数据
     */
    @Test
    public void testZset(){
        ZSetOperations zSetOperations = redisTemplate.opsForZSet();

        //存值
        zSetOperations.add("myZset","a",10.0);
        zSetOperations.add("myZset","b",11.0);
        zSetOperations.add("myZset","c",12.0);
        zSetOperations.add("myZset","a",13.0);

        //取值
        Set<String> myZset = zSetOperations.range("myZset", 0, -1);
        for (String s : myZset) {
            System.out.println(s);
        }

        //修改分数
        zSetOperations.incrementScore("myZset","b",20.0);

        //取值
        myZset = zSetOperations.range("myZset", 0, -1);
        for (String s : myZset) {
            System.out.println(s);
        }

        //删除成员
        zSetOperations.remove("myZset","a","b");

        //取值
        myZset = zSetOperations.range("myZset", 0, -1);
        for (String s : myZset) {
            System.out.println(s);
        }
    }
}

2. 运行测试方法,观察结果

一文带你了解如何在Java中操作Redis,Redis,java,redis,开发语言,后端,缓存,数据库

8. Spring Data Redis 操作 Redis 通用操作

1. 编写相关测试方法

@SpringBootTest
@RunWith(SpringRunner.class)
public class SpringDataRedisTest {

    @Autowired
    private RedisTemplate redisTemplate;
    /**
     * 通用操作,针对不同的数据类型都可以操作
     */
    @Test
    public void testCommon(){
        //获取Redis中所有的key
        Set<String> keys = redisTemplate.keys("*");
        for (String key : keys) {
            System.out.println(key);
        }

        //判断某个key是否存在
        Boolean itcast = redisTemplate.hasKey("dongli");
        System.out.println(itcast);

        //删除指定key
        redisTemplate.delete("myZset");

        //获取指定key对应的value的数据类型
        DataType dataType = redisTemplate.type("myset");
        System.out.println(dataType.name());

    }
}

2. 运行测试方法,观察结果

一文带你了解如何在Java中操作Redis,Redis,java,redis,开发语言,后端,缓存,数据库

总结

欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下。
(博客的参考源码可以在我主页的资源里找到,如果在学习的过程中有什么疑问欢迎大家在评论区向我提出)文章来源地址https://www.toymoban.com/news/detail-596627.html

到了这里,关于一文带你了解如何在Java中操作Redis的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一文带你彻底了解java 网络编程的基本概念

    主题:探索Java网络编程:构建连接世界的桥梁 作者:Stevedash 发布日期:2023年8月11日 15点18分 (PS:这一篇文章作为总章,今天着重讲“Socket套接字编程”这里的知识,其他模块的知识,后续补上,拆分成单独章节来慢慢完善该文,并且后面会附带上其他文章的链接,会持续

    2024年02月13日
    浏览(49)
  • 学Java线程,你不知道什么是AQS?一文带你了解Java多线程同步的灵魂

    关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、人工智能等,希望大家多多支持。 我们继续总结学习 Java基础知识 ,温故知新。 CLH(Craig, Landin, and Hagersten locks)是一种自旋锁,能确保无饥饿性,提

    2024年02月16日
    浏览(44)
  • Redis-使用java代码操作Redis->java连接上redis,java操作redis的常见类型数据存储,redis中的项目应用

    java连接上redis java操作redis的常见类型数据存储 redis中的项目应用 1.java连接上redis 2.java操作redis的常见类型数据存储 3.redis中的项目应用 redis一般用在哪? 存储基本不会变化的数据,然后这些数据又被多个地方使用 redix怎么用 用String 将存储的数据转换成json串,进行存储 在

    2024年02月05日
    浏览(48)
  • 【Redis】redis入门+java操作redis

    目录 一、Redis入门 1.1 Redis简介 1.2 Redis下载与安装 1.2.1 下载 1.2.2 linux安装 1.2.3 windows安装  1.3  Redis服务启动与停止 1.3.1 linux启动、停止Redis服务 1.3.2 windows启动、停止Redis服务 1.4 修改Redis启动密码 1.4.1 Linux修改设置 1.4.2 windows设置 1.5 修改Redis运行远程连接 1.5.1 linux 1.5.2 window

    2024年02月10日
    浏览(36)
  • 【服务器】Java连接redis及使用Java操作redis、使用场景

    在你的项目里面导入redis的pom依赖 连接redis 以下数据类型基本上涵盖了各种常见的数据存储需求,而且 Redis 的数据类型支持多种高级操作,因此特别适用于 快速、可靠、实时 的数据访问场景。 字符串(String) :最基本的数据类型,可以包含 任何数据 ,包括 二进制数据 。

    2024年02月06日
    浏览(55)
  • 使用java操作redis

    目录 一、java连接redis 1、前置条件:开启redis服务  2、连接驱动  pom依赖  3、测试连接  二、java操作String 1、设值  2、拿取对象  3、删除  4、修改  5、给键值对设置过期时间: 6、获取键值对剩余的存活时间:  三、Java操作哈希 1、同时将多个field-value设置到哈希表key中:

    2023年04月23日
    浏览(68)
  • Spring Data Redis 在Java中操作Redis

    目录 1. 添加依赖   2. 配置连接信息 3. 配置 RedisConnectionFactory 和 RedisTemplate 4.在Java中操作Redis 4.1. String 类型操作 4.2 List 类型操作 4.3 Set 类型操作 4.4 Hash类型操作 4.5 sorted set类型操作     Spring Data Redis 是 Spring Data 项目的一部分,它为 Java 应用程序提供了在 Spring 环境中与

    2024年01月18日
    浏览(67)
  • Spring Data Redis:在Java中操作Redis

    目录 一、Spring Data Redis使用方式 1.1 介绍        1.2 配置  1.3 RedisTemplate 二、环境搭建  2.1 导入Spring Data Redis的maven坐标 2.2 配置Redis数据源   2.3 编写配置类,创建RedisTemplate对象   三、操作常见类型数据 3.1 操作字符串类型数据 3.2 操作哈希类型数据   3.3 操作列表类型

    2024年02月14日
    浏览(35)
  • 【Redis】Spring/SpringBoot 操作 Redis Java客户端

    1.Jedis 2.Lettuce(主流) -Spring Data Redis 1.添加Redis 驱动依赖 2.设置Redis 连接信息 3.根据Redis API 操作Redis

    2024年02月13日
    浏览(49)
  • java:使用Jedis操作redis

    Redis是一个基于内存的高性能键值存储数据库,支持多种数据结构,如字符串、列表、集合等。在Java中,我们可以通过Jedis客户端来操作Redis数据库。 安装Jedis客户端 在Java应用程序中使用Jedis客户端之前,需要将其添加到项目中。可以通过Maven或Gradle来管理依赖。下面是Maven的

    2024年02月07日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包