Quand nous devrions utiliser exactement cette méthode. Sur JedisconnectionException, JeDisdataException ou pour toute erreur de JedisException. Il n'y a pas de bonne documentation API pour Jedis à ma connaissance.
try { Jedis jedis = JedisFactory.getInstance(); Pipeline pipe = jedis.pipelined(); Response<Set<Tuple>> idWithScore = pipe.zrangeWithScores(cachekey, from, to); **// some statement which may cause some other exception** Response<String> val = pipe.get(somekey); pipe.exec(); pipe.sync(); }catch (JedisConnectionException e) { JedisFactory.returnBrokenResource(jedis); }catch(Exception e){ **// What API I should use here?, how to find whether to use returnBrokenResource(jedis) or returnResource(jedis)** }finally{ JedisFactory.returnResource(jedis); }
3 Réponses :
Vous êtes censé utiliser RethRokeResource lorsque l'état de l'objet n'est pas recouvréable. Un objet Jedis représente une connexion à Redis. Il devient inutilisable lorsque la connexion physique est cassée ou lorsque la synchronisation entre le client et le serveur est perdue. P>
avec Jedis, ces erreurs sont représentées par la DisconnectionException. Donc, j'utiliserais returnbrokenResource pour cette exception et non les autres. P>
JedisdataException est plus lié à une mauvaise utilisation de l'API Jedis ou aux erreurs de Redis côté serveur. P>
Jedisexception est pour tout le reste (généralement soulevé après une erreur de niveau inférieur, indépendante de Jedis). P>
Existe-t-il une documentation API pour Jedis, pour mieux comprendre les API.
Non - Généralement, j'utilise les exemples fournis dans GitHub.com/xeTorthio/jedis/tree/master/src/test/java/redis/... - Quand je suis bloqué, je regarde dans le code source.
Disons que je attrape JedisconnectionException et retourbreRokeResource. Devrais-je toujours bloquer finalement retournetsource? Cela causera-t-il une difficulté à renvoyer une ressource deux fois?
La piscine Jedis est mise en œuvre avec Apache Common GenericObjectPool. Les objets ne doivent pas être retournés à la piscine deux fois. Voir
échantillon de code pour cela selon la documentation de Jedis
pour les latécomères!
returnbreRokeResource (), retourresource () em> sont obsolètes. Il suffit d'utiliser jedis.close () em> dans le bloc enfin en toute sécurité. p> Si les Jedis ont été empruntés à la piscine, il sera retourné à la piscine avec une méthode appropriée car elle détermine déjà qu'il y avait déjà eu la jedisconnectionException. Si Jedis n'était pas emprunté à la piscine, il sera déconnecté et fermé. P>
blockQuote> p>
Où avez-vous trouvé la documentation pour cela?