All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.sxtanna.database.Kedis.kt Maven / Gradle / Ivy

The newest version!
package com.sxtanna.database

import com.sxtanna.database.base.Database
import com.sxtanna.database.config.DatabaseConfigManager
import com.sxtanna.database.config.KedisConfig
import com.sxtanna.database.ext.loadOrSave
import com.sxtanna.database.task.KedisTask
import redis.clients.jedis.Jedis
import redis.clients.jedis.JedisPool
import redis.clients.jedis.JedisPoolConfig
import java.io.File

class Kedis(override val conf : KedisConfig) : Database() {

	override val name : String = "Kedis"
	lateinit var pool : JedisPool
		private set


	override fun load() {
		val jedisConfig = JedisPoolConfig().apply {
			maxTotal = conf.pool.maxSize
			maxIdle = conf.pool.idleSize
			testOnBorrow = true
		}

		pool = JedisPool(jedisConfig, conf.server.address, conf.server.port, conf.pool.timeout, conf.user.auth)
	}

	override fun poison() = pool.destroy()


	override fun poolResource() : Jedis? = pool.resource?.apply { select(conf.user.defaultDB) }

	override fun createTask(resource : Jedis) : KedisTask = KedisTask(resource)


	companion object : DatabaseConfigManager {

		@JvmStatic
		override fun get(file : File) = Kedis(getConfig(file))

		@JvmStatic
		override fun get(config: KedisConfig) = Kedis(config)

		@JvmStatic
		override fun getConfig(file : File) = file.loadOrSave(KedisConfig.DEFAULT)

	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy