Redis 整合中 Redisson 的使用

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

大家好 , 我是苏麟 , 今天带来 Redisson 使用 .

官方文档 :  GitHub - redisson/redisson: Redisson - Easy Redis Java client with features of In-Memory Data Grid. Sync/Async/RxJava/Reactive API. Over 50 Redis based Java objects and services: Set, Multimap, SortedSet, Map, List, Queue, Deque, Semaphore, Lock, AtomicLong, Map Reduce, Bloom filter, Spring Cache, Tomcat, Scheduler, JCache API, Hibernate, RPC, local cache ...

 Redis 整合中 Redisson 的使用,java项目中高效开发,redis,java,前端

引入依赖

        <!--https://github.com/redisson/redisson#quick-start-->
        <dependency>
            <groupId>org.redisson</groupId>
            <artifactId>redisson</artifactId>
            <version>3.23.2</version>
        </dependency>

 yml配置(例如)

  #redis 配置
  redis:
    port: 6379
    database: 1
    host: localhost

Redisson配置

@Data
@Configuration
@ConfigurationProperties(prefix = "spring.redis")
public class RedissonConfig {

    private String host;

    private String port;

    @Bean
    public RedissonClient redissonClient(){
        // 1.创建配置
        Config config = new Config();

        String redissonAddress = String.format("redis:/%s:%s",host,port);

        //useClusterServers()集群
        //setDatabase() 设置那个redis库
        config.useSingleServer().setAddress(redissonAddress).setDatabase(2);


        //2.创建实例
        RedissonClient redissonClient = Redisson.create(config);
        return  redissonClient;
    }
}

上面不行则用下面的

package com.sl.config;

import lombok.Data;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.redisson.config.SingleServerConfig;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Data
@Configuration
@ConfigurationProperties(prefix = "spring.redis")
public class RedissonConfig {

    private String host;

    private String port;

    private Integer database;

    @Bean
    public RedissonClient redissonClient() {
        // 1.创建配置
        Config config = new Config();
        SingleServerConfig singleServerConfig = config.useSingleServer()
                .setAddress("redis://" + host + ":" + port)
                .setDatabase(database);

        //2.创建实例
        return Redisson.create(config);
    }
}

 


 这里@ConfigurationProperties(prefix = "spring.redis")用法请看 : 读取/加载 properties/yml 配置文件_踏遍三十六岸的博客-CSDN博客


像操作本地集合一样操作Redisson


@SpringBootTest
class UserCenterApplicationTests {

    @Resource
    private RedissonClient redissonClient;

    @Test
    void test() {
        //list操作 数据存在 JVM 内存中
        List<String> list = new ArrayList<>();
        list.add("sl");
        System.out.println(list.get(0));
        list.remove(0);

        //数据存在 Redis 内存中
        //getList()取列表名字 因为 redis 中是 key-value 存在
        RList<String> rList = redissonClient.getList("redisson-list");
        rList.add("sl-redisson");
        System.out.println(rList.get(0));
        rList.remove(0);    

    }

   
    @Test
    void hashTest(){

        //哈希操作
        RMap<String, String> rMap = redissonClient.getMap("LiJiaWei");
        //设置 map 中的 key - value
        rMap.put("sl","1");
        rMap.put("jw","2");

        System.out.println(redissonClient.getMap("LiJiaWei").get("sl"));
        System.out.println(redissonClient.getMap("LiJiaWei").get("jw"));

        redissonClient.getMap("LiJiaWei").remove("sl");
        redissonClient.getMap("LiJiaWei").remove("jw");
    }

    //......
    //其他操作都一样
}

Redssion 分布式锁

定时任务可以看(或者其他的) :  Spring Schedular 定时任务_踏遍三十六岸的博客-CSDN博客

@Component
public class PreScheduled {


    @Resource
    private RedissonClient redissonClient;


    /**
     * 每天执行
     */
    @Scheduled(cron = "0 59 23 * * *")
    public void doCah() {
        //获取锁 , 可重入  指定锁的名称
        RLock lock = redissonClient.getLock("sl:redisson:cache:lock");


        try {
            /**
             * 只有一个线程获取到锁
             * 等待时间 , 执行时间 , 毫秒
             */
            if (lock.tryLock(0, 30000L, TimeUnit.MILLISECONDS)) {
              
                      //...
         
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        } finally {
            /**
             * 只能释放自己加的锁
             */
            if (lock.isHeldByCurrentThread()) {
                lock.unlock();
            }
        }
    }
}

感兴趣的小伙伴可以自行了解下面知识!

Redisson的可重入锁原理

Redisson看门狗WatchDog机制

Redisson的multiLock原理


这期就到这里 , 拜拜 !文章来源地址https://www.toymoban.com/news/detail-666448.html

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

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

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

相关文章

  • Redis客户端Redisson使用示例

    Redisson作为Java连接Redis的客户端,提供了连接、操作Redis的方法,还提供分布式锁、红锁等并发工具。Redisson除了提供同步接口外,还提供了异步(Async)、反射式(Reactive)和RxJava2标准的接口。Redisson会序列化Java对象然后保存到redis,所以通过redis命令行设置的值,Redisson来获

    2024年02月06日
    浏览(16)
  • Redis实战之Redisson使用技巧详解

    一、摘要 什么是 Redisson ?来自于官网上的描述内容如下! Redisson 是一个在 Redis 的基础上实现的 Java 驻内存数据网格客户端(In-Memory Data Grid)。它不仅提供了一系列的 redis 常用数据结构命令服务,还提供了许多分布式服务,例如分布式锁、分布式对象、分布式集合、分布式

    2023年04月09日
    浏览(7)
  • 【实践篇】Redis最强Java客户端(一)之Redisson入门介绍

    【实践篇】Redis最强Java客户端(一)之Redisson入门介绍

    1.1.1 起源和历史 Redisson 最初由 GitHub 用户 “mrniko” 创建,并在 Apache 2.0 许可证下发布。它的目标是提供一组强大的工具和 API,帮助开发人员在分布式环境中处理数据,并解决并发和一致性的问题。 Redisson 是一款在 Redis 的基础上实现的 Java 驻内存数据网格(In-Memory Data Grid)

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

    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日
    浏览(13)
  • 高并发下缓存失效问题(穿透、雪崩、击穿),以及本地锁、Redis分布锁、Redisson锁、SpringCache使用

    高并发下缓存失效问题(穿透、雪崩、击穿),以及本地锁、Redis分布锁、Redisson锁、SpringCache使用

    说明 :以不存在的数据攻击,数据库压力增加导致崩溃 风险 :利用不存在数据攻击,数据库瞬时压力增大,导致崩溃 解决 :设置不存在数据为 null 值 与 短暂过期时间 布隆过滤器 使用案例: redission布隆过滤器解决缓存穿透问题,定时刷新bloomFilter中的数据 说明 :设置缓

    2024年02月08日
    浏览(14)
  • Redis使用Lua脚本和Redisson来保证库存扣减中的原子性和一致性

    Redis使用Lua脚本和Redisson来保证库存扣减中的原子性和一致性

    背景:最近有社群技术交流的同学,说面试被问到商品库存扣减的问题。我大概整理了一下内容,方便大家理解。 其实无外乎就是分布式锁和Redis命令的原子性问题 。 在分布式系统中,保证数据的原子性和一致性是一个关键问题。特别是在库存扣减等场景中,确保操作的原

    2024年02月13日
    浏览(46)
  • SpringBoot项目整合Redis,Rabbitmq发送、消费、存储邮件

    SpringBoot项目整合Redis,Rabbitmq发送、消费、存储邮件

    本文主要是【Rabbitmq】——SpringBoot项目整合Redis,Rabbitmq发送、消费、存储邮件的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 🌄每日一句:狠狠沉淀,顶峰相见 测试结果:此时指定邮箱已收到验

    2024年02月04日
    浏览(12)
  • 【云原生进阶之PaaS中间件】第一章Redis-1.6.1Java项目使用Redis

    【云原生进阶之PaaS中间件】第一章Redis-1.6.1Java项目使用Redis

            redis的java客户端很多,官方推荐的有三种: Jedis Lettuce Redisson Spring 对Redis 客户端进行了整合,提供了Spring Date Redis ,在Spring Boot项目中还提供了对应的Starter,即spring-boot-starter-data-redis。         使用Jedis操作Redis的步骤: 1.获取链接; 2.执行操作; 3.关闭连接

    2024年02月09日
    浏览(13)
  • 【Java】SpringBoot快速整合Redis

    【Java】SpringBoot快速整合Redis

            文末有源码gitee地址         【面试】浅学Redis_redis 广播-CSDN博客         Redis是一种 高性能开源的基于内存的,采用键值对存储的非关系型数据库 ,它支持多种数据结构,包括字符串、哈希表、列表、集合、有序集合等。Redis的特点之一是 数据存储在内存

    2024年01月19日
    浏览(11)
  • 【征服redis5】redis的Redisson客户端

    【征服redis5】redis的Redisson客户端

    目录 1 Redisson介绍 2. 与其他Java Redis客户端的比较 3.基本的配置与连接池 3.1 依赖和SDK 3.2 配置内容解析 4 实战案例:优雅的让Hash的某个Field过期 5 Redisson的强大功能 Redisson 最初由 GitHub 用户 “mrniko” 创建,并在 Apache 2.0 许可证下发布。它的目标是提供一组强大的工具和 API,

    2024年01月17日
    浏览(7)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包