Jump to content

Connect SuperML | Leeroopedia MCP: Equip your AI agents with best practices, code verification, and debugging knowledge. Powered by Leeroo — building Organizational Superintelligence. Contact us at founders@leeroo.com.

Implementation:SeleniumHQ Selenium GridRedisClient Configuration

From Leeroopedia
Revision as of 11:51, 16 February 2026 by Admin (talk | contribs) (Auto-imported from implementations/SeleniumHQ_Selenium_GridRedisClient_Configuration.md)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Knowledge Sources
Domains Distributed_Testing, Configuration, Selenium_Grid
Last Updated 2026-02-11 00:00 GMT

Overview

Concrete tool for Redis-backed distributed state management in Selenium Grid provided by the GridRedisClient class.

Description

GridRedisClient provides distributed state management for Selenium Grid deployments using Redis. It uses the Lettuce Redis client (RedisClient and StatefulRedisConnection) for basic key-value operations (mset, mget, get, del, getKeysByPattern) and Redisson for RLiveObjectService persistence and RSet-based availability tracking. It tracks node availability via Redisson sets keyed by Availability enum values (addNodeAvailability(), getNodesByAvailability()), enabling the Distributor to query nodes grouped by their availability state (UP, DOWN, DRAINING). Node state is persisted using Redisson's LiveObject service via addNode() (which calls service.merge()) and getNode() (which calls service.get()).

Usage

Used in distributed Grid deployments where multiple components need shared state. Configure by providing a Redis server URI. This enables stateless Grid components that can be scaled independently.

Code Reference

Source Location

  • Repository: Selenium
  • File: java/src/org/openqa/selenium/redis/GridRedisClient.java
  • Lines: L42-174

Signature

public class GridRedisClient implements Closeable {
    public GridRedisClient(URI serverUri);
    public StatefulRedisConnection<String, String> getConnection();
    public void mset(Map<String, String> map);
    public List<KeyValue<String, String>> mget(String... keys);
    public String get(String key);
    public List<String> getKeysByPattern(String pattern);
    public boolean isOpen();
    public void del(String... var1);
    public void close();
    public void addNodeAvailability(Availability availability, NodeStatus node);
    public void removeNodeAvailability(Availability availability, NodeStatus node);
    public void addAllNodeAvailability(Availability availability, Set<NodeId> nodes);
    public void removeAllNodeAvailability(Availability availability, Set<NodeId> nodes);
    public boolean getNodeAvailability(Availability availability, NodeId id);
    public Set<NodeId> getNodesByAvailability(Availability availability);
    public void addNode(NodeStatus node);
    public void removeNode(NodeId id);
    public Optional<NodeStatus> getNode(NodeId id);
    public void removeAllNodes(Set<NodeId> nodeIds);
    public Set<NodeStatus> getNodes(Set<NodeId> nodeIds);
    public Set<NodeId> getAllNodes();
}

Import

import org.openqa.selenium.redis.GridRedisClient;

I/O Contract

Inputs

Name Type Required Description
serverUri URI Yes Redis server URI (e.g., redis://localhost:6379)
availability Availability Yes (for availability ops) Enum value: UP, DOWN, or DRAINING
node NodeStatus Yes (for add) Node status information including NodeId, URI, and slot data

Outputs

Name Type Description
nodeIds Set<NodeId> Node identifiers grouped by availability
nodeStatus Optional<NodeStatus> Full node status retrieved from Redis LiveObject store
isOpen boolean Whether the Redis connection is active

Usage Examples

Programmatic Usage

URI redisUri = URI.create("redis://redis-host:6379");
GridRedisClient redisClient = new GridRedisClient(redisUri);

// Store node state
redisClient.addNode(nodeStatus);
redisClient.addNodeAvailability(Availability.UP, nodeStatus);

// Query available nodes
Set<NodeId> upNodes = redisClient.getNodesByAvailability(Availability.UP);

// Retrieve specific node
Optional<NodeStatus> node = redisClient.getNode(nodeId);

// Clean up
redisClient.close();

TOML Configuration for Redis-Backed Grid

[sessions]
implementation = "org.openqa.selenium.grid.sessionmap.redis.RedisBackedSessionMap"
uri = "redis://redis-host:6379"

Related Pages

Implements Principle

Requires Environment

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment