Redis介绍
redis通常用于“数据结构”服务器。它提供了一系列命令集来操作多种数据结构,可以通过“server-client”模式,基于TCP提供简单的协议进行访问。不同的进程可以通过一种共享的方式,查询和修改相同的数据结构对象。
redis实现的数据结构有如下的一些特殊属性:
- redis可以保存这些数据结构到磁盘,即使它们总是在服务器内存中修改或提供服务,这意味着redis更快且数据不容易丢失;
- redis数据结构的实现非常强调内存的性能,和其他更高级别的编程语言相比,相同的数据结构redis占用更少的内存;
- redis提供一些列类似数据库的特性,例如备份、集群、高可用和(tunable levels of durability)。
另一个好的例子是可以把redis当做复杂版本的memcached,它不仅仅可以有SETS和GETS操作,还可以操作复杂的数据结构如Lists,Sets,顺序结构等等。
构建Redis
Redis支持平台Linux, OSX, OpenBSD, NetBSD, FreeBSD,支持大小端架构,32bit和64bit系统。
Linux系统下,通过如下步骤编译:
- 简单构建:
% make
- 构建32位程序:
% make 32bit
- 通过下面方式构建测试工具:
%make test
修复依赖项或缓存问题
redis有一些依赖项,放在“deps”目录中,但make指令不会自动重构这些依赖,即使这些依赖的源代码已经修改了。当你通过“git pull”更新了源码或者当依赖树中的代码被修改了,确保用下面的指令来清理一切并从头开始构建:
%make distclean
这将清理下面的库: jemalloc, lua, hiredis, linenoise。
修复构建32bit库的问题
在构建32bit库之后,如果你又想重新构建64bit的库,你需要在Redis源码根目录中执行make distclean。
当构建32bit的redis出错时,可以通过下面的方式修复:
* 安装 libc6-dev-i386 (also try g++-multilib).
* 用下面的指令替换 `make 32bit`:% make CFLAGS="-m32 -march=native" LDFLAGS="-m32"
内存分配器
在编译redis时,可以通过设置变量“MALLOC”来选择一个默认的分配器。在Linux下Redis默认的分配器是jemalloc,这样选择的目的是因为jemalloc能减少内存碎片问题。(默认编译的时候会将jemalloc编译到源码中)
强制连接libc:
% make MALLOC=libc
运行redis
用默认配置运行:
% cd src % ./redis-server
如果想提供自己的redis.conf配置,可以添加参数运行:
% cd src % ./redis-server /path/to/redis.conf
也可以之前传递参数选项:
% ./redis-server --port 9999 --replicaof 127.0.0.1 6379 % ./redis-server /etc/redis/6379.conf --loglevel debug
测试redis
可以用redis-cli来测试Redis,启动redis-server进程实例后,终端指令:
% cd src % ./redis-cli redis> ping PONG redis> set foo bar OK redis> get foo "bar" redis> incr mycounter (integer) 1 redis> incr mycounter (integer) 2 redis>
这里可以找到更多的命令介绍:http://redis.io/commands。
安装Redis
为了安装Redis二进制文件到/usr/local/bin目录,执行:
% make install
可以使用下面指令安装到特定的目录:
make PREFIX=/some/other/directory install
make install 指令仅仅安装了二进制文件到系统中,并没有在适当的地方配置初始脚本和配置文件。如果只是想玩耍一下Redis,这些配置并不需要,但是如果是安装到生产环境中,这里有个脚本可以配置这些东西(Ubuntu和Debian系统):
% cd utils % ./install_server.sh
脚本执行时,会向你询问一些问题,并将安装你需要的功能,然后将Redis服务作为后台守护进程,并随系统重启而自动启动,可以通过下面指令停止Redis服务:
/etc/init.d/redis_6379 stop