- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
当我从 jedis 执行函数 getResource
时,它因以下问题而崩溃:
[17:04:58] [Paper Watchdog Thread/ERROR]: Current Thread: Server thread [17:04:58] [Paper Watchdog Thread/ERROR]: PID: 18 | Suspended: false | Native: false | State: WAITING [17:04:58] [Paper Watchdog Thread/ERROR]: Thread is waiting on monitor(s): [17:04:58] [Paper Watchdog Thread/ERROR]: Locked on:org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:499) [17:04:58] [Paper Watchdog Thread/ERROR]: Stack: [17:04:58] [Paper Watchdog Thread/ERROR]: sun.misc.Unsafe.park(Native Method) [17:04:58] [Paper Watchdog Thread/ERROR]: java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) [17:04:58] [Paper Watchdog Thread/ERROR]: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) [17:04:58] [Paper Watchdog Thread/ERROR]: org.apache.commons.pool2.impl.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:583) [17:04:58] [Paper Watchdog Thread/ERROR]: org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:442) [17:04:58] [Paper Watchdog Thread/ERROR]: org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:363) [17:04:58] [Paper Watchdog Thread/ERROR]: redis.clients.util.Pool.getResource(Pool.java:49) [17:04:58] [Paper Watchdog Thread/ERROR]: redis.clients.jedis.JedisPool.getResource(JedisPool.java:226) [17:04:58] [Paper Watchdog Thread/ERROR]: pl.imoobler.sectors.managers.RedisManager.updatePosition(RedisManager.java:44) [17:04:58] [Paper Watchdog Thread/ERROR]: pl.imoobler.sectors.utils.BungeeUtils.teleportServer(BungeeUtils.java:28) [17:04:58] [Paper Watchdog Thread/ERROR]: pl.imoobler.sectors.listeners.PlayerMoveListener.detectSectorSwap(PlayerMoveListener.java:88) [17:04:58] [Paper Watchdog Thread/ERROR]: com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor6.execute(Unknown Source) [17:04:58] [Paper Watchdog Thread/ERROR]: org.bukkit.plugin.EventExecutor$1.execute(EventExecutor.java:44) [17:04:58] [Paper Watchdog Thread/ERROR]: co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:78) [17:04:58] [Paper Watchdog Thread/ERROR]: org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) [17:04:58] [Paper Watchdog Thread/ERROR]: org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:514) [17:04:58] [Paper Watchdog Thread/ERROR]: org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:499) [17:04:58] [Paper Watchdog Thread/ERROR]: net.minecraft.server.v1_12_R1.PlayerConnection.a(PlayerConnection.java:649) [17:04:58] [Paper Watchdog Thread/ERROR]: net.minecraft.server.v1_12_R1.PacketPlayInFlying.a(SourceFile:126) [17:04:58] [Paper Watchdog Thread/ERROR]: net.minecraft.server.v1_12_R1.PacketPlayInFlying$PacketPlayInPosition.a(SourceFile:57) [17:04:58] [Paper Watchdog Thread/ERROR]: net.minecraft.server.v1_12_R1.PlayerConnectionUtils.lambda$ensureMainThread$0(PlayerConnectionUtils.java:14) [17:04:58] [Paper Watchdog Thread/ERROR]: net.minecraft.server.v1_12_R1.PlayerConnectionUtils$$Lambda$199/2109184961.run(Unknown Source) [17:04:58] [Paper Watchdog Thread/ERROR]: java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [17:04:58] [Paper Watchdog Thread/ERROR]: java.util.concurrent.FutureTask.run(FutureTask.java:266) [17:04:58] [Paper Watchdog Thread/ERROR]: net.minecraft.server.v1_12_R1.SystemUtils.a(SourceFile:46) [17:04:58] [Paper Watchdog Thread/ERROR]: net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:842) [17:04:58] [Paper Watchdog Thread/ERROR]: net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:423) [17:04:58] [Paper Watchdog Thread/ERROR]: net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:766) [17:04:58] [Paper Watchdog Thread/ERROR]: net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:664) [17:04:58] [Paper Watchdog Thread/ERROR]: java.lang.Thread.run(Thread.java:748) [17:04:58] [Paper Watchdog Thread/ERROR]: ------------------------------
我的代码:
package pl.imoobler.sectors.managers;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import org.bukkit.Bukkit;
import pl.imoobler.sectors.SectorsPlugin;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPubSub;
import redis.clients.jedis.exceptions.JedisConnectionException;
import java.util.UUID;
public class RedisManager {
SectorsPlugin plugin;
JedisPool pool;
Gson gson = new Gson();
public RedisManager(SectorsPlugin plugin, String redisHost) {
this.plugin = plugin;
pool = new JedisPool(redisHost);
}
public void subscribe(final JedisPubSub pubSub, final String... channels) {
Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
public void run() {
Jedis jedis = pool.getResource();
try {
jedis.select(0);
jedis.subscribe(pubSub, channels);
} catch (JedisConnectionException ex) {
pool.returnBrokenResource(jedis);
} finally {
pool.returnResource(jedis);
}
}
});
}
public void updatePosition(UUID uuid, String position, String target) {
Jedis subscriber = null;
try {
subscriber = pool.getResource();
subscriber.set(("sectors:" + "positions" + ":" + uuid.toString()), position);
JsonObject object = new JsonObject();
object.addProperty("position_player_uuid", uuid.toString());
object.addProperty("position_player_target", target);
subscriber.publish("NewPlayerLocationChannel", gson.toJson(object));
}catch(JedisConnectionException ex) {
pool.returnBrokenResource(subscriber);
} finally {
pool.returnResource(subscriber);
}
}
public String getPosition(UUID uuid) {
Jedis subscriber = pool.getResource();
if(subscriber.exists(("sectors:" + "positions" + ":" + uuid.toString()))) {
return subscriber.get(("sectors:" + "positions" + ":" + uuid.toString()));
}
return null;
}
}
最佳答案
您达到 JedisPool 大小了吗?默认的 JedisPool 大小非常小。
关于multithreading - 执行 pub sub 时 Redis 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45331002/
我有一个关于 Redis Pubsub 的练习,如下所示: 如果发布者发布消息但订阅者没有收到服务器崩溃。订阅者如何在重启服务器时收到该消息? 请帮帮我,谢谢! 最佳答案 在这种情况下,消息将永远消失
我们正在使用 Service Stack 的 RedisClient 的 BlockingDequeue 来保存一些数据,直到它可以被处理。调用代码看起来像 using (var client =
我有一个 Redis 服务器和多个 Redis 客户端。每个 Redis 客户端都是一个 WebSocket+HTTP 服务器,其中包括管理 WebSocket 连接。这些 WebSocket+HTT
我有多个 Redis 实例。我使用不同的端口创建了一个集群。现在我想将数据从预先存在的 redis 实例传输到集群。我知道如何将数据从一个实例传输到集群,但是当实例多于一个时,我无法做到这一点。 最佳
配置:三个redis集群分区,跨三组一主一从。当 Master 宕机时,Lettuce 会立即检测到中断并开始重试。但是,Lettuce 没有检测到关联的 slave 已经将自己提升为 master
我想根据从指定集合中检索这些键来删除 Redis 键(及其数据集),例如: HMSET id:1 password 123 category milk HMSET id:2 password 456
我正在编写一个机器人(其中包含要禁用的命令列表),用于监视 Redis。它通过执行禁用命令,例如 (rename-command ZADD "")当我重新启动我的机器人时,如果要禁用的命令列表发生变化
我的任务是为大量听众使用发布/订阅。这是来自 docs 的订阅的简化示例: r = redis.StrictRedis(...) p = r.pubsub() p.subscribe('my-firs
我一直在阅读有关使用 Redis 哨兵进行故障转移的内容。我打算有1个master+1个slave,如果master宕机超过1分钟,就把slave变成master。我知道这在 Sentinel 中是
与仅使用常规 Redis 和创建分片相比,使用 Redis 集群有哪些优势? 在我看来,Redis Cluster 更注重数据安全(让主从架构解决故障)。 最佳答案 我认为当您需要在不丢失任何数据的情
由于 Redis 以被动和主动方式使 key 过期, 有没有办法得到一个 key ,即使它的过期时间已过 (但 在 Redis 中仍然存在 )? 最佳答案 DEBUG OBJECT myKey 将返回
我想用redis lua来实现monitor命令,而不是redis-cli monitor。但我不知道怎么办。 redis.call('monitor') 不起作用。 最佳答案 您不能从 Redis
我读过 https://github.com/redisson/redisson 我发现有几个 Redis 复制设置(包括对 AWS ElastiCache 和 Azure Redis 缓存的支持)
Microsoft.AspNet.SignalR.Redis 和 StackExchange.Redis.Extensions.Core 在同一个项目中使用。前者需要StackExchange.Red
1. 认识 Redis Redis(Remote Dictionary Server)远程词典服务器,是一个基于内存的键值对型 NoSQL 数据库。 特征: 键值(key-value)型,value
1. Redis 数据结构介绍 Redis 是一个 key-value 的数据库,key 一般是 String 类型,但 value 类型多种多样,下面就举了几个例子: value 类型 示例 Str
1. 什么是缓存 缓存(Cache) 就是数据交换的缓冲区,是存贮数据的临时地方,一般读写性能较高。 缓存的作用: 降低后端负载 提高读写效率,降低响应时间 缓存的成本: 数据一致性成本 代码维护成本
我有一份记录 list 。对于我的每条记录,我都需要进行一些繁重的计算,因为我要在Redis中创建反向索引。为了达到到达记录,需要在管道中执行多个redis命令(sadd为100 s + set为1
我有一个三节点Redis和3节点哨兵,一切正常,所有主服务器和从属服务器都经过验证,并且哨兵配置文件已与所有Redis和哨兵节点一起更新,但是问题是当Redis主服务器关闭并且哨兵希望选举失败者时再次
我正在尝试计算Redis中存储的消息之间的响应时间。但是我不知道该怎么做。 首先,我必须像这样存储chat_messages的时间流 ZADD conversation:CONVERSATION_ID
我是一名优秀的程序员,十分优秀!