redis实现事务(pipeline)

1、导入redis的客户端jedis

 <!--导入redis的客户端jedis  jar包-->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.8.1</version>
        </dependency>

linux开启redis

开启redis:  /opt/apps/redis/redis-server redis.conf
开启客户端: redis-cli –h 192.168.42.101
密码:auth 123456

2、redis实现事务

pipeline可以将所有的操作当成一个整体,不过只支持单机

import com.sparkstreaming.utils._01_JedisConnectionPool
import redis.clients.jedis.Jedis

object _05_JedisPipeline {
  def main(args: Array[String]): Unit = {

     //普通创建redis
    /* val jedis = new Jedis("192.168.42.101",6379)
    jedis.auth("123456") //指定密码
    jedis.select(1)*/
    val jedis = _01_JedisConnectionPool.getConnection
    jedis.select(1)
    //让redis支持事务,pipeline可以将所有的操作当成一个整体,不过只支持单机
    val pipeline = jedis.pipelined()
    pipeline.multi() //开启多个操作,将所有的操作当成一个整体

    try {
      pipeline.hset("WC", "java", "10")
      pipeline.hset("WC", "hive", "10")
      //val i = 100 / 0
      //提交
      pipeline.exec()
      pipeline.sync()
    } catch {
      case e:Exception =>
        //回滚
        pipeline.discard()
    } finally {
       if(pipeline != null) pipeline.close()
       if(jedis != null) jedis.close()
    }
  }
}

工具类

import com.sparkstreaming.utils.JedisConnectionPool.config
import redis.clients.jedis.{Jedis, JedisPool, JedisPoolConfig}

object _01_JedisConnectionPool {
  //jedisPool的配置
  private val config = new JedisPoolConfig()
  //池子里最多的对象数量
  config.setMaxTotal(5)
  //池子里面最大的活跃对象
  config.setMaxIdle(2)
  //对连接进行检测,看看是否有效
  config.setTestOnBorrow(true)

  //创建jedisPool
  private val jedisPool = new JedisPool(config, "192.168.42.101",
                             6379, 10000, "123456")
  //单例创建对象
  def getConnection: Jedis = {
    jedisPool.getResource
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值