Apache Portable Runtime Utility Library
apr_redis.h
Go to the documentation of this file.
1/* Licensed to the Apache Software Foundation (ASF) under one or more
2 * contributor license agreements. See the NOTICE file distributed with
3 * this work for additional information regarding copyright ownership.
4 * The ASF licenses this file to You under the Apache License, Version 2.0
5 * (the "License"); you may not use this file except in compliance with
6 * the License. You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
24#ifndef APR_REDIS_H
25#define APR_REDIS_H
26
27#include "apr.h"
28#include "apr_pools.h"
29#include "apr_time.h"
30#include "apr_strings.h"
31#include "apr_network_io.h"
32#include "apr_ring.h"
33#include "apr_buckets.h"
34#include "apr_reslist.h"
35#include "apr_hash.h"
36
37#ifdef __cplusplus
38extern "C" {
39#endif /* __cplusplus */
40
41#ifndef RC_DEFAULT_SERVER_PORT
42#define RC_DEFAULT_SERVER_PORT 6379
43#endif
44
45#ifndef RC_DEFAULT_SERVER_MIN
46#define RC_DEFAULT_SERVER_MIN 0
47#endif
48
49#ifndef RC_DEFAULT_SERVER_SMAX
50#define RC_DEFAULT_SERVER_SMAX 1
51#endif
52
53#ifndef RC_DEFAULT_SERVER_TTL
54#define RC_DEFAULT_SERVER_TTL 600
55#endif
56
64typedef enum
65{
69
72
76{
77 const char *host;
78 apr_port_t port;
80#if APR_HAS_THREADS || defined(DOXYGEN)
82#else
83 apr_redis_conn_t *conn;
84#endif
85 apr_pool_t *p;
86#if APR_HAS_THREADS
87 apr_thread_mutex_t *lock;
88#endif
89 apr_time_t btime;
90 apr_uint32_t rwto;
91 struct
92 {
93 int major;
94 int minor;
95 int patch;
96 char *number;
97 } version;
98};
99
100typedef struct apr_redis_t apr_redis_t;
101
102/* Custom hash callback function prototype, user for server selection.
103* @param baton user selected baton
104* @param data data to hash
105* @param data_len length of data
106*/
107typedef apr_uint32_t (*apr_redis_hash_func)(void *baton,
108 const char *data,
109 const apr_size_t data_len);
110/* Custom Server Select callback function prototype.
111* @param baton user selected baton
112* @param rc redis instance, use rc->live_servers to select a node
113* @param hash hash of the selected key.
114*/
115typedef apr_redis_server_t* (*apr_redis_server_func)(void *baton,
116 apr_redis_t *rc,
117 const apr_uint32_t hash);
118
121{
122 apr_uint32_t flags;
123 apr_uint16_t nalloc;
124 apr_uint16_t ntotal;
126 apr_pool_t *p;
128 apr_redis_hash_func hash_func;
129 void *server_baton;
130 apr_redis_server_func server_func;
131};
132
141APU_DECLARE(apr_uint32_t) apr_redis_hash(apr_redis_t *rc,
142 const char *data,
143 const apr_size_t data_len);
144
148APU_DECLARE(apr_uint32_t) apr_redis_hash_crc32(void *baton,
149 const char *data,
150 const apr_size_t data_len);
151
155APU_DECLARE(apr_uint32_t) apr_redis_hash_default(void *baton,
156 const char *data,
157 const apr_size_t data_len);
158
167 const apr_uint32_t hash);
168
173 apr_redis_t *rc,
174 const apr_uint32_t hash);
175
184APU_DECLARE(apr_status_t) apr_redis_add_server(apr_redis_t *rc,
185 apr_redis_server_t *server);
186
187
196 const char *host,
197 apr_port_t port);
198
204APU_DECLARE(apr_status_t) apr_redis_enable_server(apr_redis_t *rc,
206
207
213APU_DECLARE(apr_status_t) apr_redis_disable_server(apr_redis_t *rc,
215
230APU_DECLARE(apr_status_t) apr_redis_server_create(apr_pool_t *p,
231 const char *host,
232 apr_port_t port,
233 apr_uint32_t min,
234 apr_uint32_t smax,
235 apr_uint32_t max,
236 apr_uint32_t ttl,
237 apr_uint32_t rwto,
238 apr_redis_server_t **ns);
246APU_DECLARE(apr_status_t) apr_redis_create(apr_pool_t *p,
247 apr_uint16_t max_servers,
248 apr_uint32_t flags,
249 apr_redis_t **rc);
250
261APU_DECLARE(apr_status_t) apr_redis_getp(apr_redis_t *rc,
262 apr_pool_t *p,
263 const char* key,
264 char **baton,
265 apr_size_t *len,
266 apr_uint16_t *flags);
267
276APU_DECLARE(apr_status_t) apr_redis_set(apr_redis_t *rc,
277 const char *key,
278 char *baton,
279 const apr_size_t data_size,
280 apr_uint16_t flags);
281
291APU_DECLARE(apr_status_t) apr_redis_setex(apr_redis_t *rc,
292 const char *key,
293 char *baton,
294 const apr_size_t data_size,
295 apr_uint32_t timeout,
296 apr_uint16_t flags);
297
304APU_DECLARE(apr_status_t) apr_redis_delete(apr_redis_t *rc,
305 const char *key,
306 apr_uint32_t timeout);
307
314APU_DECLARE(apr_status_t) apr_redis_version(apr_redis_server_t *rs,
315 apr_pool_t *p,
316 char **baton);
317
324APU_DECLARE(apr_status_t) apr_redis_info(apr_redis_server_t *rs,
325 apr_pool_t *p,
326 char **baton);
327
335APU_DECLARE(apr_status_t) apr_redis_incr(apr_redis_t *rc,
336 const char *key,
337 apr_int32_t inc,
338 apr_uint32_t *new_value);
346APU_DECLARE(apr_status_t) apr_redis_decr(apr_redis_t *rc,
347 const char *key,
348 apr_int32_t inc,
349 apr_uint32_t *new_value);
350
351
356APU_DECLARE(apr_status_t) apr_redis_ping(apr_redis_server_t *rs);
357
368APU_DECLARE(apr_status_t) apr_redis_multgetp(apr_redis_t *rc,
369 apr_pool_t *temp_pool,
370 apr_pool_t *data_pool,
371 apr_hash_t *values);
372
373typedef enum
374{
379
380typedef struct
381{
382/* # Server */
384 apr_uint32_t major;
386 apr_uint32_t minor;
388 apr_uint32_t patch;
390 apr_uint32_t process_id;
392 apr_uint32_t uptime_in_seconds;
394 apr_uint32_t arch_bits;
395
396/* # Clients */
398 apr_uint32_t connected_clients;
400 apr_uint32_t blocked_clients;
401
402/* # Memory */
404 apr_uint64_t maxmemory;
406 apr_uint64_t used_memory;
409
410/* # Stats */
422 apr_uint64_t keyspace_hits;
424 apr_uint64_t keyspace_misses;
425
426/* # Replication */
430 apr_uint32_t connected_slaves;
431
432/* # CPU */
434 apr_uint32_t used_cpu_sys;
436 apr_uint32_t used_cpu_user;
437
438/* # Cluster */
440 apr_uint32_t cluster_enabled;
442
449APU_DECLARE(apr_status_t) apr_redis_stats(apr_redis_server_t *rs,
450 apr_pool_t *p,
451 apr_redis_stats_t **stats);
452
455#ifdef __cplusplus
456}
457#endif
458
459#endif /* APR_REDIS_H */
APR-UTIL Buckets/Bucket Brigades.
APR-UTIL Resource List Routines.
apr_status_t apr_redis_decr(apr_redis_t *rc, const char *key, apr_int32_t inc, apr_uint32_t *new_value)
apr_status_t apr_redis_server_create(apr_pool_t *p, const char *host, apr_port_t port, apr_uint32_t min, apr_uint32_t smax, apr_uint32_t max, apr_uint32_t ttl, apr_uint32_t rwto, apr_redis_server_t **ns)
apr_redis_server_role_t
Definition: apr_redis.h:374
apr_status_t apr_redis_disable_server(apr_redis_t *rc, apr_redis_server_t *rs)
apr_status_t apr_redis_incr(apr_redis_t *rc, const char *key, apr_int32_t inc, apr_uint32_t *new_value)
apr_uint32_t apr_redis_hash_default(void *baton, const char *data, const apr_size_t data_len)
apr_redis_server_t * apr_redis_find_server(apr_redis_t *rc, const char *host, apr_port_t port)
struct apr_redis_conn_t apr_redis_conn_t
Definition: apr_redis.h:71
apr_status_t apr_redis_setex(apr_redis_t *rc, const char *key, char *baton, const apr_size_t data_size, apr_uint32_t timeout, apr_uint16_t flags)
apr_status_t apr_redis_add_server(apr_redis_t *rc, apr_redis_server_t *server)
apr_redis_server_t * apr_redis_find_server_hash(apr_redis_t *rc, const apr_uint32_t hash)
apr_status_t apr_redis_delete(apr_redis_t *rc, const char *key, apr_uint32_t timeout)
apr_status_t apr_redis_stats(apr_redis_server_t *rs, apr_pool_t *p, apr_redis_stats_t **stats)
apr_status_t apr_redis_multgetp(apr_redis_t *rc, apr_pool_t *temp_pool, apr_pool_t *data_pool, apr_hash_t *values)
apr_status_t apr_redis_info(apr_redis_server_t *rs, apr_pool_t *p, char **baton)
apr_status_t apr_redis_getp(apr_redis_t *rc, apr_pool_t *p, const char *key, char **baton, apr_size_t *len, apr_uint16_t *flags)
apr_status_t apr_redis_enable_server(apr_redis_t *rc, apr_redis_server_t *rs)
apr_redis_server_status_t
Definition: apr_redis.h:65
apr_redis_server_t * apr_redis_find_server_hash_default(void *baton, apr_redis_t *rc, const apr_uint32_t hash)
apr_status_t apr_redis_version(apr_redis_server_t *rs, apr_pool_t *p, char **baton)
apr_uint32_t apr_redis_hash_crc32(void *baton, const char *data, const apr_size_t data_len)
apr_uint32_t apr_redis_hash(apr_redis_t *rc, const char *data, const apr_size_t data_len)
apr_status_t apr_redis_ping(apr_redis_server_t *rs)
apr_status_t apr_redis_create(apr_pool_t *p, apr_uint16_t max_servers, apr_uint32_t flags, apr_redis_t **rc)
apr_status_t apr_redis_set(apr_redis_t *rc, const char *key, char *baton, const apr_size_t data_size, apr_uint16_t flags)
@ APR_RS_SERVER_MASTER
Definition: apr_redis.h:375
@ APR_RS_SERVER_UNKNOWN
Definition: apr_redis.h:377
@ APR_RS_SERVER_SLAVE
Definition: apr_redis.h:376
@ APR_RC_SERVER_LIVE
Definition: apr_redis.h:66
@ APR_RC_SERVER_DEAD
Definition: apr_redis.h:67
struct apr_reslist_t apr_reslist_t
Definition: apr_reslist.h:42
Definition: apr_redis.h:76
apr_reslist_t * conns
Definition: apr_redis.h:81
apr_redis_server_status_t status
Definition: apr_redis.h:79
const char * host
Definition: apr_redis.h:77
apr_port_t port
Definition: apr_redis.h:78
apr_thread_mutex_t * lock
Definition: apr_redis.h:87
Definition: apr_redis.h:381
apr_uint32_t minor
Definition: apr_redis.h:386
apr_uint64_t total_system_memory
Definition: apr_redis.h:408
apr_uint32_t cluster_enabled
Definition: apr_redis.h:440
apr_uint64_t used_memory
Definition: apr_redis.h:406
apr_uint32_t used_cpu_sys
Definition: apr_redis.h:434
apr_uint64_t keyspace_hits
Definition: apr_redis.h:422
apr_uint64_t total_commands_processed
Definition: apr_redis.h:414
apr_uint32_t blocked_clients
Definition: apr_redis.h:400
apr_uint32_t connected_clients
Definition: apr_redis.h:398
apr_uint32_t major
Definition: apr_redis.h:384
apr_uint32_t connected_slaves
Definition: apr_redis.h:430
apr_redis_server_role_t role
Definition: apr_redis.h:428
apr_uint32_t patch
Definition: apr_redis.h:388
apr_uint64_t total_connections_received
Definition: apr_redis.h:412
apr_uint64_t keyspace_misses
Definition: apr_redis.h:424
apr_uint64_t total_net_output_bytes
Definition: apr_redis.h:420
apr_uint64_t rejected_connections
Definition: apr_redis.h:416
apr_uint32_t used_cpu_user
Definition: apr_redis.h:436
apr_uint32_t process_id
Definition: apr_redis.h:390
apr_uint32_t uptime_in_seconds
Definition: apr_redis.h:392
apr_uint64_t total_net_input_bytes
Definition: apr_redis.h:418
apr_uint64_t maxmemory
Definition: apr_redis.h:404
apr_uint32_t arch_bits
Definition: apr_redis.h:394
Definition: apr_redis.h:121
void * hash_baton
Definition: apr_redis.h:127
apr_uint16_t nalloc
Definition: apr_redis.h:123
apr_uint32_t flags
Definition: apr_redis.h:122
apr_uint16_t ntotal
Definition: apr_redis.h:124
apr_redis_server_t ** live_servers
Definition: apr_redis.h:125