AS AgentScopeAPI 手册 / API Reference

RedisStore

public class RedisStore implements BaseStore
源码Source io/agentscope/extensions/redis/store/RedisStore.java:57–283

Redis 存储,负责持久化与读取数据。位于 io.agentscope.extensions.redis.store 包,实现 BaseStore。核心成员包括 get、put、putIfVersion、search、delete、RedisStore。

Redis-backed BaseStore implementation.

Key layout

For each item with namespace [a, b, c] and key k, two Redis keys are used:

  • Item hash <prefix>item:<ns>\0<k> — a Redis hash with fields value (JSON-encoded Map<String,Object>) and version (a stringified long).

  • Namespace index <prefix>idx:<ns> — a sorted set (all scores 0) holding every k written under that exact namespace, enabling lexicographic #search via ZRANGEBYLEX without scanning the keyspace.

<ns> is the namespace components joined with "\0".

Concurrency

#put and #putIfVersion both run as a single Lua EVAL, making the version read + hash write + index update one atomic Redis operation. This makes #putIfVersion safe to use as a distributed compare-and-swap primitive across multiple processes sharing the same Redis instance.

#search is not in the same transaction as #put: index members may temporarily refer to an item whose hash has not yet been written (window between ZADD and HSET, which is closed by the Lua atomicity above) or to an item that was concurrently deleted. The implementation tolerates the latter by skipping missing items.

字段摘要Field Summary

字段Field类型Type说明Description
DEFAULT_KEY_PREFIX
staticfinal
String
默认键 PREFIX字段。
Default Redis key prefix; pick something distinctive enough not to collide with other apps.

构造器摘要Constructor Summary

构造器Constructor说明Description
public RedisStore(UnifiedJedis jedis)
初始化 `RedisStore` 实例。
Creates a Redis-backed store with the default key prefix (`#DEFAULT_KEY_PREFIX`).
public RedisStore(UnifiedJedis jedis, String keyPrefix)
初始化 `RedisStore` 实例。
Creates a Redis-backed store.
public RedisStore(UnifiedJedis jedis, String keyPrefix, ObjectMapper objectMapper)
初始化 `RedisStore` 实例。
Creates a Redis-backed store with a custom JSON mapper.

方法摘要Method Summary

方法Method说明Description
public StoreItem get(List<String> namespace, String key)
按条件读取数据。
Performs the get operation.
public void put(List<String> namespace, String key, Map<String, Object> value)
执行 `put` 方法。
Performs the put operation.
public boolean putIfVersion(List<String> namespace, String key, Map<String, Object> value, long expectedVersion)
执行 `putIfVersion` 方法。
Performs the put if version operation.
public List<StoreItem> search(List<String> namespace, int limit, int offset)
执行搜索相关操作。
Performs the search operation.
public void delete(List<String> namespace, String key)
删除数据。
Performs the delete operation.

字段详情Field Detail

DEFAULT_KEY_PREFIX

public static final String DEFAULT_KEY_PREFIX
staticfinal

默认键 PREFIX字段。声明为 public static final String DEFAULT_KEY_PREFIX。

Default Redis key prefix; pick something distinctive enough not to collide with other apps.

源码Source io/agentscope/extensions/redis/store/RedisStore.java:60

构造器详情Constructor Detail

RedisStore

public RedisStore(UnifiedJedis jedis)

初始化 RedisStore 实例。

Creates a Redis-backed store with the default key prefix (#DEFAULT_KEY_PREFIX).

参数Parameters
名称Name类型Type说明Description
jedisUnifiedJedisjedis(类型 `UnifiedJedis`)。initialized Jedis client; must not be `null`
源码Source io/agentscope/extensions/redis/store/RedisStore.java:100–102

RedisStore

public RedisStore(UnifiedJedis jedis, String keyPrefix)

初始化 RedisStore 实例。

Creates a Redis-backed store.

参数Parameters
名称Name类型Type说明Description
jedisUnifiedJedisjedis(类型 `UnifiedJedis`)。initialized Jedis client; must not be `null`
keyPrefixString键 Prefix(类型 `String`)。Redis key prefix; trailing `":"` is added if absent. If blank, the default (`#DEFAULT_KEY_PREFIX`) is used.
源码Source io/agentscope/extensions/redis/store/RedisStore.java:111–113

RedisStore

public RedisStore(UnifiedJedis jedis, String keyPrefix, ObjectMapper objectMapper)

初始化 RedisStore 实例。

Creates a Redis-backed store with a custom JSON mapper.

参数Parameters
名称Name类型Type说明Description
jedisUnifiedJedisjedis(类型 `UnifiedJedis`)。initialized Jedis client; must not be `null`
keyPrefixString键 Prefix(类型 `String`)。Redis key prefix; trailing `":"` is added if absent
objectMapperObjectMapper对象 Mapper(类型 `ObjectMapper`)。Jackson mapper used to serialize / deserialize item values
源码Source io/agentscope/extensions/redis/store/RedisStore.java:122–126

方法详情Method Detail

get

public StoreItem get(List<String> namespace, String key)

按条件读取数据。

Performs the get operation.

参数Parameters
名称Name类型Type说明Description
namespaceList<String>命名空间(类型 `List`)。The namespace.
keyString键(类型 `String`)。The key.
返回Returns StoreItem
返回StoreItem。Returns store item.
源码Source io/agentscope/extensions/redis/store/RedisStore.java:128–137

put

public void put(List<String> namespace, String key, Map<String, Object> value)

执行 put 方法。

Performs the put operation.

参数Parameters
名称Name类型Type说明Description
namespaceList<String>命名空间(类型 `List`)。The namespace.
keyString键(类型 `String`)。The key.
valueMap<String, Object>值(类型 `Map`)。The value.
源码Source io/agentscope/extensions/redis/store/RedisStore.java:139–146

putIfVersion

public boolean putIfVersion(List<String> namespace, String key, Map<String, Object> value, long expectedVersion)

执行 putIfVersion 方法。

Performs the put if version operation.

参数Parameters
名称Name类型Type说明Description
namespaceList<String>命名空间(类型 `List`)。The namespace.
keyString键(类型 `String`)。The key.
valueMap<String, Object>值(类型 `Map`)。The value.
expectedVersionlongexpected 版本(类型 `long`)。The expected version.
返回Returns boolean
返回布尔值,表示判断结果。Returns a boolean result.
源码Source io/agentscope/extensions/redis/store/RedisStore.java:148–164

delete

public void delete(List<String> namespace, String key)

删除数据。

Performs the delete operation.

参数Parameters
名称Name类型Type说明Description
namespaceList<String>命名空间(类型 `List`)。The namespace.
keyString键(类型 `String`)。The key.
源码Source io/agentscope/extensions/redis/store/RedisStore.java:188–194
基于官方固定版本源码静态生成Generated from pinned official sources · Python 2.0.11 · Java 2.0.4
签名与文档为静态抽取;如有疑问请以源码为准。Signatures and docs are extracted statically; verify against the source when in doubt.