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

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

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 config : KedisConfig) : Database() {

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


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

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

	override fun poison() = pool.destroy()


	override fun poolResource() : Jedis? = pool.resource?.apply { select(config.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 getConfig(file : File) = file.loadOrSave(KedisConfig.DEFAULT)

	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy