Redis 集群扩容

几乎每一个网站都需要用户登录状态系统,其中核心是存储 Session 的用户登录状态存储系统。 主流的实现之一是使用 Redis 存储用户登录信息,Redis 特点是功能简单、无依赖、 存储结构丰富、有持久化功能。 我大堆糖的 Session 存储系统也正是基于 Redis。 可是 Redis 也存在一些问题,比如 Redis 自身没有 Sharding 功能,Replication 也是在逐步完善完善过程中 (2.4 支持 Replication,2.8 加入 Replication partial resynchronization 功能)。 纵观当下流行的 DB 系统,哪个不是自带这两个特性,这两个分布式特性应该成为新出产的 DB 系统的标配。 而且作者还经常发布延期,放烟雾弹,不知道 Redis 自带 Sharding 特性要等到何年马月。 ...

2015-07-26 · alswl

hiredis 源码学习

前段时间学习 Redis 时候,听到 hiredis 的大名,正好也在做异步的学习,就找来代码学习一下。 我几乎不太会 C,仅限于最简单的语法,完全没有在生产环境中写过, 所以先看个 Client 简单代码,下次看 Memcached 代码应该会更顺畅一些。 Hiredis 是用 C 写的 Redis 客户端,对 Redis 协议进行了简单的封装, 同时提供了同步和异步的两种 API。Hiredis 的代码位于 https://github.com/redis/hiredis。 一分钟使用入门 同步 API 的调用方法: redisContext *context = redisConnect("127.0.0.1", 6379); reply = redisCommand(context, "SET foo %s", value); printf("PING: %s\n", reply->str); freeReplyObject(reply) redisFree(context); Redis ae 异步 API 的调用方法,使用 Redis 自己的 ae 事件库, 至于为什么 Redis 没有使用 libevent 或者 libev,可以参考 Reason, 中文翻译: ...

2014-03-30 · alswl

Redis 到底有多快[译文]

Thumbnail

原文地址 http://redis.io/topics/benchmarks。 拖了一个半月的稿子~ Redis 自带了一个叫 redis-benchmark 的工具来模拟 N 个客户端同时发出 M 个请求。 (类似于 Apache ab 程序)。你可以使用 redis-benchmark -h 来查看基准参数。 以下参数被支持: Usage: redis-benchmark [-h <host>] [-p <port>] [-c <clients>] [-n <requests]> [-k <boolean>] -h <hostname> Server hostname (default 127.0.0.1) -p <port> Server port (default 6379) -s <socket> Server socket (overrides host and port) -c <clients> Number of parallel connections (default 50) -n <requests> Total number of requests (default 10000) -d <size> Data size of SET/GET value in bytes (default 2) -k <boolean> 1=keep alive 0=reconnect (default 1) -r <keyspacelen> Use random keys for SET/GET/INCR, random values for SADD Using this option the benchmark will get/set keys in the form mykey_rand:000000012456 instead of constant keys, the <keyspacelen> argument determines the max number of values for the random number. For instance if set to 10 only rand:000000000000 - rand:000000000009 range will be allowed. -P <numreq> Pipeline <numreq> requests. Default 1 (no pipeline). -q Quiet. Just show query/sec values --csv Output in CSV format -l Loop. Run the tests forever -t <tests> Only run the comma separated list of tests. The test names are the same as the ones produced as output. -I Idle mode. Just open N idle connections and wait. 你需要在基准测试之前启动一个 Redis 实例。一般这样启动测试: ...

2014-02-23 · alswl