redis redisson 事务示例(RTransaction)


redis redisson 事务示例

 

redisson可对一些对象进行事务操作,这些对象包括RBucket、Rbuckets,RSet、RSetCache,RMap、RMapCache、RLocalCachedMap

 

 

*******************

相关接口

 

RTransaction

public interface RTransaction {


********
RBucket、RBuckets

    <V> RBucket<V> getBucket(String var1);
    <V> RBucket<V> getBucket(String var1, Codec var2);
    RBuckets getBuckets();
    RBuckets getBuckets(Codec var1);


********
RSet、RSetCache

    <V> RSet<V> getSet(String var1);
    <V> RSet<V> getSet(String var1, Codec var2);
    <V> RSetCache<V> getSetCache(String var1);
    <V> RSetCache<V> getSetCache(String var1, Codec var2);


********
RMap、RMapCache、RLocalCachedMap

    <K, V> RMap<K, V> getMap(String var1);
    <K, V> RMap<K, V> getMap(String var1, Codec var2);
    <K, V> RMapCache<K, V> getMapCache(String var1);
    <K, V> RMapCache<K, V> getMapCache(String var1, Codec var2);

    <K, V> RLocalCachedMap<K, V> getLocalCachedMap(RLocalCachedMap<K, V> var1);
                              

********
其他方法

    void commit();
    RFuture<Void> commitAsync();  //提交事务

    void rollback();
    RFuture<Void> rollbackAsync();//回滚事务
}

说明:每次创建的transaction只能进行一次提交或者回滚,不能重复使用;如果需要多个事务操作,需创建多个事务

 

TransactionOptions

public final class TransactionOptions {
    private long responseTimeout = 3000L;  //返回超时时间
    private int retryAttempts = 3;         //重试次数
    private long retryInterval = 1500L;    //重试间隔
    private long syncTimeout = 5000L;      //从节点同步超时时间
    private long timeout = 5000L;          //超时时间


********
构造方法

    private TransactionOptions() {
    }


********
普通方法

    public static TransactionOptions defaults() { //返回TransactionOtiopns对象实例
        return new TransactionOptions();
    }

    public long getResponseTimeout() {  //返回超时时间
    public TransactionOptions responseTimeout(long timeout, TimeUnit unit) {
                                        //设置超时时间

    public int getRetryAttempts() {     //返回重试次数
    public TransactionOptions retryAttempts(int retryAttempts) {
                                        //设置重试次数 

    public long getRetryInterval() {    //返回重试间隔
    public TransactionOptions retryInterval(long retryInterval, TimeUnit retryIntervalUnit) {
                                        //设置重试间隔

    public long getSyncTimeout() {      //返回从节点同步超时时间
    public TransactionOptions syncSlavesTimeout(long syncTimeout, TimeUnit syncUnit) {
                                        //设置从节点同步超时时间

    public long getTimeout() {          //返回超时时间
    public TransactionOptions timeout(long timeout, TimeUnit timeoutUnit) {
                                        //设置超时时间
}

 

 

*******************

示例

 

public class MyTest9 {

    public static void main(String[] args){
        Config config=new Config();
        config.useSingleServer().setAddress("redis://192.168.57.120:6379").setPassword("123456");
        RedissonClient client= Redisson.create(config);

        RTransaction transaction=client.createTransaction(TransactionOptions.defaults());
        RSet<String> set=transaction.getSet("transaction_set");
        try{
            for(int i=0;i<10;i++){
                set.add("瓜田李下 "+i);
            }

            transaction.commit();
        }catch (Exception e){
            transaction.rollback();
            e.printStackTrace();
        }
        System.out.println("set的大小为:"+set.size());

        RTransaction transaction2=client.createTransaction(TransactionOptions.defaults());
        RMap<Integer,String> map=transaction2.getMap("transaction_map");
        try{
            for (int i=0;i<10;i++){
                map.put(i,"瓜田李下 "+i);

                if (i==2){
                    throw new RuntimeException("出错了");
                }
            }

            transaction.commit();
        }catch (Exception e){
            e.printStackTrace();
        }
        System.out.println("map的大小为:"+map.size());
    }
}

 

************

控制台输出

 

set的大小为:10
map的大小为:0

说明:set的大小为10表明事务transaction提交,map的大小为0表明事务回滚

 

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis是一个开源的内存数据存储系统,用于存储和检索数据。它是一个高性能的键值存储,支持丰富的数据类型和灵活的查询功能。RedissonRedis的一个Java客户端,提供了对Redis的封装和扩展功能。 Redisson和Jedis、Lettuce是两种不同的Redis的Java客户端。Jedis是Redis官方推出的用于通过Java连接Redis的工具包,提供了Redis的各种命令支持。Lettuce是一种可扩展的线程安全的Redis客户端,基于Netty通信框架,支持高级的Redis特性,如哨兵、集群等。 相比之下,Redisson是基于Redis、Lua和Netty构建的综合中间件,是一个成熟的分布式解决方案。Redisson不仅提供了对Redis的命令封装,还提供了分布式的Java常用对象和服务。Redisson的设计目标是提供可靠、高性能的分布式应用程序开发工具。 因此,RedisRedisson都是用于操作Redis数据库的工具,但Redisson提供了更丰富的功能和更高层次的抽象。Redisson是一个企业级开发中使用Redis的最佳范本,并被Redis官方推荐作为一种工具集。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [RedisRedisson原理详解](https://blog.csdn.net/u012060033/article/details/131154512)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值