aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/redis/v1/config/redis.proto
blob: e4a20b9fb8c4c49f2a60aa0fca38f62485ab9984 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
syntax = "proto3";

package yandex.cloud.mdb.redis.v1.config;

import "google/protobuf/wrappers.proto";
import "yandex/cloud/validation.proto";

option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/mdb/redis/v1/config;redis";
option java_package = "yandex.cloud.api.mdb.redis.v1.config";

// Fields and structure of `RedisConfig` reflects Redis configuration file
// parameters.
message RedisConfig {
  enum MaxmemoryPolicy {
    MAXMEMORY_POLICY_UNSPECIFIED = 0;

    // Try to remove less recently used (LRU) keys with `expire set`.
    VOLATILE_LRU = 1;

    // Remove less recently used (LRU) keys.
    ALLKEYS_LRU = 2;

    // Try to remove least frequently used (LFU) keys with `expire set`.
    VOLATILE_LFU = 3;

    // Remove least frequently used (LFU) keys.
    ALLKEYS_LFU = 4;

    // Try to remove keys with `expire set` randomly.
    VOLATILE_RANDOM = 5;

    // Remove keys randomly.
    ALLKEYS_RANDOM = 6;

    // Try to remove less recently used (LRU) keys with `expire set`
    // and shorter TTL first.
    VOLATILE_TTL = 7;

    // Return errors when memory limit was reached and commands could require
    // more memory to be used.
    NOEVICTION = 8;
  }

  message ClientOutputBufferLimit {
    reserved 4;
    reserved 2;
    // Total limit in bytes.
    google.protobuf.Int64Value hard_limit = 1 [(value) = ">=0"];
    // Limit in bytes during certain time period.
    google.protobuf.Int64Value soft_limit = 3 [(value) = ">=0"];
    // Seconds for soft limit.
    google.protobuf.Int64Value soft_seconds = 5 [(value) = ">=0"];
  }

  // Redis key eviction policy for a dataset that reaches maximum memory,
  // available to the host. Redis maxmemory setting depends on Managed
  // Service for Redis [host class](/docs/managed-redis/concepts/instance-types).
  //
  // All policies are described in detail in [Redis documentation](https://redis.io/topics/lru-cache).
  MaxmemoryPolicy maxmemory_policy = 1;

  // Time that Redis keeps the connection open while the client is idle.
  // If no new command is sent during that time, the connection is closed.
  google.protobuf.Int64Value timeout = 2;

  // Authentication password.
  string password = 3 [(pattern) = "[a-zA-Z0-9@=+?*.,!&#$^<>_-]{8,128}"];

  // Number of database buckets on a single redis-server process.
  google.protobuf.Int64Value databases = 4 [(value) = ">0"];

  // Threshold for logging slow requests to server in microseconds (log only slower than it).
  google.protobuf.Int64Value slowlog_log_slower_than = 5 [(value) = ">=0"];

  // Max slow requests number to log.
  google.protobuf.Int64Value slowlog_max_len = 6 [(value) = ">=0"];

  // String setting for pub\sub functionality.
  string notify_keyspace_events = 7 [(pattern) = "[KEg$lshzxeAtm]{0,13}"];

  // Redis connection output buffers limits for pubsub operations.
  ClientOutputBufferLimit client_output_buffer_limit_pubsub = 8;

  // Redis connection output buffers limits for clients.
  ClientOutputBufferLimit client_output_buffer_limit_normal = 9;

  // Redis maxmemory percent
  google.protobuf.Int64Value maxmemory_percent = 10 [(value) = "1-75"];
}

message RedisConfigSet {
  // Effective settings for a Redis cluster (a combination of settings
  // defined in [user_config] and [default_config]).
  RedisConfig effective_config = 1;

  // User-defined settings for a Redis cluster.
  RedisConfig user_config = 2;

  // Default configuration for a Redis cluster.
  RedisConfig default_config = 3;
}