From a1edece040a98273392fd33e4e6918061d4c03c5 Mon Sep 17 00:00:00 2001 From: MufHead <124489362@qq.com> Date: Thu, 15 Aug 2024 14:31:02 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E7=BB=99alkaid-redis=E6=89=A9=E5=B1=95?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=E5=93=88=E5=B8=8C=E8=A1=A8=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E8=B5=8B=E5=80=BC=E7=AD=89=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../expansion/ClusterRedisConnection.kt | 16 +++++ .../taboolib/expansion/IRedisConnection.kt | 35 ++++++++++ .../expansion/SingleRedisConnection.kt | 70 ++++++------------- 3 files changed, 74 insertions(+), 47 deletions(-) diff --git a/expansion/database-alkaid-redis/src/main/kotlin/taboolib/expansion/ClusterRedisConnection.kt b/expansion/database-alkaid-redis/src/main/kotlin/taboolib/expansion/ClusterRedisConnection.kt index 53094445b..844a62d45 100644 --- a/expansion/database-alkaid-redis/src/main/kotlin/taboolib/expansion/ClusterRedisConnection.kt +++ b/expansion/database-alkaid-redis/src/main/kotlin/taboolib/expansion/ClusterRedisConnection.kt @@ -141,4 +141,20 @@ class ClusterRedisConnection(val connector: ClusterRedisConnector) : Closeable, } } } + + override fun hset(key: String, field: String, value: String) { + connector.cluster.hset(key, field, value) + } + + override fun hget(key: String, field: String): String? { + return connector.cluster.hget(key, field) + } + + override fun hdel(key: String, vararg fields: String) { + connector.cluster.hdel(key, *fields) + } + + override fun hexists(key: String, field: String): Boolean { + return connector.cluster.hexists(key, field) + } } diff --git a/expansion/database-alkaid-redis/src/main/kotlin/taboolib/expansion/IRedisConnection.kt b/expansion/database-alkaid-redis/src/main/kotlin/taboolib/expansion/IRedisConnection.kt index 0486ce42c..8ed2d19b6 100644 --- a/expansion/database-alkaid-redis/src/main/kotlin/taboolib/expansion/IRedisConnection.kt +++ b/expansion/database-alkaid-redis/src/main/kotlin/taboolib/expansion/IRedisConnection.kt @@ -89,4 +89,39 @@ interface IRedisConnection { fun subscribe(vararg channel: String, patternMode: Boolean = false, func: RedisMessage.() -> Unit) fun createPubSub(patternMode: Boolean, func: RedisMessage.() -> Unit): JedisPubSub + + /** + * 向哈希表设置值 + * + * @param key 哈希表键 + * @param field 哈希表字段 + * @param value 字段值 + */ + fun hset(key: String, field: String, value: String) + + /** + * 获取哈希表中的值 + * + * @param key 哈希表键 + * @param field 哈希表字段 + * @return 字段值 + */ + fun hget(key: String, field: String): String? + + /** + * 删除哈希表中的字段 + * + * @param key 哈希表键 + * @param fields 要删除的字段 + */ + fun hdel(key: String, vararg fields: String) + + /** + * 检查哈希表中是否存在字段 + * + * @param key 哈希表键 + * @param field 哈希表字段 + * @return 是否存在 + */ + fun hexists(key: String, field: String): Boolean } diff --git a/expansion/database-alkaid-redis/src/main/kotlin/taboolib/expansion/SingleRedisConnection.kt b/expansion/database-alkaid-redis/src/main/kotlin/taboolib/expansion/SingleRedisConnection.kt index b9842a1ef..f450550a4 100644 --- a/expansion/database-alkaid-redis/src/main/kotlin/taboolib/expansion/SingleRedisConnection.kt +++ b/expansion/database-alkaid-redis/src/main/kotlin/taboolib/expansion/SingleRedisConnection.kt @@ -67,20 +67,11 @@ class SingleRedisConnection(internal var pool: JedisPool, internal val connector } } - /** - * 关闭连接 - */ override fun close() { pool.destroy() } - /** - * 赋值 - * - * @param key 键 - * @param value 值 - */ - override operator fun set(key: String, value: String?) { + override fun set(key: String, value: String?) { exec { if (value == null) it.del(key) else it[key] = value } } @@ -88,51 +79,22 @@ class SingleRedisConnection(internal var pool: JedisPool, internal val connector exec { if (value == null) it.del(key) else it.setnx(key, value) } } - /** - * 取值 - * - * @param key 键 - * @return 值 - */ - override operator fun get(key: String): String? { + override fun get(key: String): String? { return exec { it[key] } } - /** - * 删除 - * - * @param key 键 - */ override fun delete(key: String) { exec { it.del(key) } } - /** - * 赋值并设置过期时间 - * - * @param key 键 - * @param value 值 - */ override fun expire(key: String, value: Long, timeUnit: TimeUnit) { exec { it.expire(key, timeUnit.toSeconds(value)) } } - /** - * 是否存在 - * - * @param key - * @return Boolean - */ override fun contains(key: String): Boolean { return exec { it.exists(key) } } - /** - * 推送信息 - * - * @param channel 频道 - * @param message 消息 - */ override fun publish(channel: String, message: Any) { exec { if (message is String) { @@ -143,13 +105,6 @@ class SingleRedisConnection(internal var pool: JedisPool, internal val connector } } - /** - * 订阅频道 - * - * @param channel 频道 - * @param patternMode 频道名称是否为正则模式 - * @param func 信息处理函数 - */ override fun subscribe(vararg channel: String, patternMode: Boolean, func: RedisMessage.() -> Unit) { service.submit { try { @@ -189,6 +144,26 @@ class SingleRedisConnection(internal var pool: JedisPool, internal val connector } } + // 实现 hset 方法 + override fun hset(key: String, field: String, value: String) { + exec { it.hset(key, field, value) } + } + + // 实现 hget 方法 + override fun hget(key: String, field: String): String? { + return exec { it.hget(key, field) } + } + + // 实现 hdel 方法 + override fun hdel(key: String, vararg fields: String) { + exec { it.hdel(key, *fields) } + } + + // 实现 hexists 方法 + override fun hexists(key: String, field: String): Boolean { + return exec { it.hexists(key, field) } + } + @Inject internal companion object { @@ -200,3 +175,4 @@ class SingleRedisConnection(internal var pool: JedisPool, internal val connector } } } + From 88664fdcccee52632f3b9d00d961db1107e72c49 Mon Sep 17 00:00:00 2001 From: MufHead <124489362@qq.com> Date: Thu, 15 Aug 2024 18:31:37 +0800 Subject: [PATCH 2/3] =?UTF-8?q?SingleRedisConnection=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../expansion/SingleRedisConnection.kt | 51 +++++++++++++++++-- 1 file changed, 48 insertions(+), 3 deletions(-) diff --git a/expansion/database-alkaid-redis/src/main/kotlin/taboolib/expansion/SingleRedisConnection.kt b/expansion/database-alkaid-redis/src/main/kotlin/taboolib/expansion/SingleRedisConnection.kt index f450550a4..1970daf01 100644 --- a/expansion/database-alkaid-redis/src/main/kotlin/taboolib/expansion/SingleRedisConnection.kt +++ b/expansion/database-alkaid-redis/src/main/kotlin/taboolib/expansion/SingleRedisConnection.kt @@ -1,3 +1,4 @@ + /* * Copyright 2022 Alkaid * @@ -67,11 +68,20 @@ class SingleRedisConnection(internal var pool: JedisPool, internal val connector } } + /** + * 关闭连接 + */ override fun close() { pool.destroy() } - override fun set(key: String, value: String?) { + /** + * 赋值 + * + * @param key 键 + * @param value 值 + */ + override operator fun set(key: String, value: String?) { exec { if (value == null) it.del(key) else it[key] = value } } @@ -79,22 +89,51 @@ class SingleRedisConnection(internal var pool: JedisPool, internal val connector exec { if (value == null) it.del(key) else it.setnx(key, value) } } - override fun get(key: String): String? { + /** + * 取值 + * + * @param key 键 + * @return 值 + */ + override operator fun get(key: String): String? { return exec { it[key] } } + /** + * 删除 + * + * @param key 键 + */ override fun delete(key: String) { exec { it.del(key) } } + /** + * 赋值并设置过期时间 + * + * @param key 键 + * @param value 值 + */ override fun expire(key: String, value: Long, timeUnit: TimeUnit) { exec { it.expire(key, timeUnit.toSeconds(value)) } } + /** + * 是否存在 + * + * @param key + * @return Boolean + */ override fun contains(key: String): Boolean { return exec { it.exists(key) } } + /** + * 推送信息 + * + * @param channel 频道 + * @param message 消息 + */ override fun publish(channel: String, message: Any) { exec { if (message is String) { @@ -105,6 +144,13 @@ class SingleRedisConnection(internal var pool: JedisPool, internal val connector } } + /** + * 订阅频道 + * + * @param channel 频道 + * @param patternMode 频道名称是否为正则模式 + * @param func 信息处理函数 + */ override fun subscribe(vararg channel: String, patternMode: Boolean, func: RedisMessage.() -> Unit) { service.submit { try { @@ -175,4 +221,3 @@ class SingleRedisConnection(internal var pool: JedisPool, internal val connector } } } - From fdc912c09095bc2aec2711996df9f8789de4c801 Mon Sep 17 00:00:00 2001 From: MufHead <124489362@qq.com> Date: Thu, 15 Aug 2024 18:36:11 +0800 Subject: [PATCH 3/3] =?UTF-8?q?SingleRedisConnection=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../expansion/SingleRedisConnection.kt | 37 ++++++++++++++++--- 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/expansion/database-alkaid-redis/src/main/kotlin/taboolib/expansion/SingleRedisConnection.kt b/expansion/database-alkaid-redis/src/main/kotlin/taboolib/expansion/SingleRedisConnection.kt index 1970daf01..1c59e2364 100644 --- a/expansion/database-alkaid-redis/src/main/kotlin/taboolib/expansion/SingleRedisConnection.kt +++ b/expansion/database-alkaid-redis/src/main/kotlin/taboolib/expansion/SingleRedisConnection.kt @@ -1,4 +1,3 @@ - /* * Copyright 2022 Alkaid * @@ -32,7 +31,8 @@ import java.util.concurrent.ExecutorService import java.util.concurrent.Executors import java.util.concurrent.TimeUnit -class SingleRedisConnection(internal var pool: JedisPool, internal val connector: SingleRedisConnector): Closeable, IRedisConnection { +class SingleRedisConnection(internal var pool: JedisPool, internal val connector: SingleRedisConnector) : Closeable, + IRedisConnection { private val service: ExecutorService = Executors.newCachedThreadPool() @@ -190,22 +190,47 @@ class SingleRedisConnection(internal var pool: JedisPool, internal val connector } } - // 实现 hset 方法 + + /** + * 设置哈希键值 + * + * @param key 哈希键 + * @param field 哈希字段 + * @param value 哈希值 + */ override fun hset(key: String, field: String, value: String) { exec { it.hset(key, field, value) } } - // 实现 hget 方法 + /** + * 获取哈希值 + * + * @param key 哈希键 + * @param field 哈希字段 + * @return 哈希值 + */ override fun hget(key: String, field: String): String? { return exec { it.hget(key, field) } } - // 实现 hdel 方法 + /** + * 删除哈希键值 + * + * @param key 哈希键 + * @param field 哈希字段 + * @return 哈希值 + */ override fun hdel(key: String, vararg fields: String) { exec { it.hdel(key, *fields) } } - // 实现 hexists 方法 + /** + * 查询哈希键是否存在 + * + * @param key 哈希键 + * @param field 哈希字段 + * @return 布尔值 + */ override fun hexists(key: String, field: String): Boolean { return exec { it.hexists(key, field) } }