开源 Medis 项目, 同时支持 Redis 和 Memcached 协议

Memcached, 是一套分布式的高速缓存系统

Redis, 是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API

我们内部有很多系统都依赖 Memcached, 虽然平时没什么问题, 但是一旦宕机, 内存中数据丢失, 导致系统命中率下降, 严重影响系统稳定性. 虽然有很多解决方法, 比如: 对key做hash分布在不同实例下. 或更换持久性 Redis, 都要对业务层进行修改, 由于各种原因无法直接修改业务代码. 所以我云针对 Redis 2.0 版本 打了个patch,支持 memcache 协议, 同一个进程监听两个端口, 一个 Redis 6379, 一个 Memcached 11211, 对同一块内存进行操作

项目:https://github.com/vislee/medis

命令支持

由于使用 Redis 2.0 添加 Memcached 协议, 所以 Redis 命令都支持, Memcached 只支持部分命令如下:

set
add
replace
append
prepend
get
gets
delete
incr
decr

安装 Medis

git clone https://github.com/vislee/medis.git
make
make install

配置文件

daemonize yes
pidfile /var/run/medis.pid
port 6379
memcached-port 11211
timeout 300
loglevel notice
logfile /var/log/medis.log
databases 3
save 900 1
save 300 10
save 60 10000
rdbcompression yes
dbfilename dump.rdb
dir /var
maxclients 102400
maxmemory 1024mb
appendonly no
appendfilename appendonly.aof
appendfsync no
activerehashing yes

性能测试

开源 Medis 项目, 同时支持 Redis 和 Memcached 协议_第1张图片
image.png
开源 Medis 项目, 同时支持 Redis 和 Memcached 协议_第2张图片
image.png

你可能感兴趣的:(开源 Medis 项目, 同时支持 Redis 和 Memcached 协议)