Apache2
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
38 extern "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 
64 typedef enum
65 {
69 
71 typedef struct apr_redis_conn_t apr_redis_conn_t;
72 
76 {
77  const char *host;
80 #if APR_HAS_THREADS || defined(DOXYGEN)
82 #else
83  apr_redis_conn_t *conn;
84 #endif
86 #if APR_HAS_THREADS
88 #endif
91  struct
92  {
93  int major;
94  int minor;
95  int patch;
96  char *number;
98 };
99 
100 typedef 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 */
107 typedef 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 */
115 typedef apr_redis_server_t* (*apr_redis_server_func)(void *baton,
116  apr_redis_t *rc,
117  const apr_uint32_t hash);
118 
121 {
127  void *hash_baton;
131 };
132 
142  const char *data,
143  const apr_size_t data_len);
144 
149  const char *data,
150  const apr_size_t data_len);
151 
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 
185  apr_redis_server_t *server);
186 
187 
196  const char *host,
197  apr_port_t port);
198 
205  apr_redis_server_t *rs);
206 
207 
214  apr_redis_server_t *rs);
215 
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,
247  apr_uint16_t max_servers,
249  apr_redis_t **rc);
250 
262  apr_pool_t *p,
263  const char* key,
264  char **baton,
265  apr_size_t *len,
267 
277  const char *key,
278  char *baton,
279  const apr_size_t data_size,
281 
292  const char *key,
293  char *baton,
294  const apr_size_t data_size,
295  apr_uint32_t timeout,
297 
305  const char *key,
306  apr_uint32_t timeout);
307 
315  apr_pool_t *p,
316  char **baton);
317 
325  apr_pool_t *p,
326  char **baton);
327 
336  const char *key,
337  apr_int32_t inc,
338  apr_uint32_t *new_value);
347  const char *key,
348  apr_int32_t inc,
349  apr_uint32_t *new_value);
350 
351 
357 
369  apr_pool_t *temp_pool,
370  apr_pool_t *data_pool,
371  apr_hash_t *values);
372 
373 typedef enum
374 {
379 
380 typedef struct
381 {
382 /* # Server */
395 
396 /* # Clients */
401 
402 /* # Memory */
409 
410 /* # Stats */
425 
426 /* # Replication */
431 
432 /* # CPU */
437 
438 /* # Cluster */
442 
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 Platform Definitions.
APR-UTIL Buckets/Bucket Brigades.
APR Hash Tables.
APR Network library.
APR memory allocation.
APR-UTIL Resource List Routines.
APR Rings.
APR Strings library.
APR Time Library.
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_uint32_t(* apr_redis_hash_func)(void *baton, const char *data, const apr_size_t data_len)
Definition: apr_redis.h:107
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)
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_default(void *baton, apr_redis_t *rc, const apr_uint32_t hash)
apr_redis_server_t *(* apr_redis_server_func)(void *baton, apr_redis_t *rc, const apr_uint32_t hash)
Definition: apr_redis.h:115
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_status_t apr_redis_version(apr_redis_server_t *rs, apr_pool_t *p, char **baton)
apr_redis_server_t * apr_redis_find_server(apr_redis_t *rc, const char *host, apr_port_t port)
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_redis_server_t * apr_redis_find_server_hash(apr_redis_t *rc, const apr_uint32_t hash)
@ 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
dav_resource int dav_locktoken dav_response int flags
Definition: mod_dav.h:1458
int ns
Definition: mod_dav.h:587
int apr_status_t
Definition: apr_errno.h:44
struct apr_hash_t apr_hash_t
Definition: apr_hash.h:52
apr_uint16_t apr_port_t
Definition: apr_network_io.h:230
int apr_int32_t
Definition: apr.h:347
unsigned short apr_uint16_t
Definition: apr.h:345
unsigned int apr_uint32_t
Definition: apr.h:348
size_t apr_size_t
Definition: apr.h:394
uint64_t apr_uint64_t
Definition: apr.h:387
struct apr_pool_t apr_pool_t
Definition: apr_pools.h:60
apr_int64_t apr_time_t
Definition: apr_time.h:45
#define APR_DECLARE(x)
Definition: macros.h:6
Definition: apr_redis.h:76
apr_reslist_t * conns
Definition: apr_redis.h:81
apr_pool_t * p
Definition: apr_redis.h:85
char * number
Definition: apr_redis.h:96
int minor
Definition: apr_redis.h:94
apr_uint32_t rwto
Definition: apr_redis.h:90
struct apr_redis_server_t::@19 version
apr_time_t btime
Definition: apr_redis.h:89
int major
Definition: apr_redis.h:93
apr_redis_server_status_t status
Definition: apr_redis.h:79
const char * host
Definition: apr_redis.h:77
int patch
Definition: apr_redis.h:95
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
void * server_baton
Definition: apr_redis.h:129
apr_uint32_t flags
Definition: apr_redis.h:122
apr_pool_t * p
Definition: apr_redis.h:126
apr_uint16_t ntotal
Definition: apr_redis.h:124
apr_redis_hash_func hash_func
Definition: apr_redis.h:128
apr_redis_server_func server_func
Definition: apr_redis.h:130
apr_redis_server_t ** live_servers
Definition: apr_redis.h:125
Definition: apr_arch_thread_mutex.h:28
apr_pool_t * p