发布于 2014-10-23 08:31:06 | 342 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的Redis 设计与实现(第一版),程序狗速度看过来!

Redis Key-Value数据库

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


本文为大家讲解的是linux下redis的安装和使用教材,感兴趣的同学参考下。

redis简介

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

1:下载redis

下载地址http://code.google.com/p/redis/downloads/list

我下载的最新的redis-2.6.14版本

2:安装redis

下载后解压 tar zxvf redis-2.6.14.tar.gz 到任意目录,例如 /birenjie/redis-2.6.14
解压后,进入redis目录
    cd /birenjie/redis-2.6.14
    make 

make之后,我们会得到以下可执行文件:

redis-server:Redis服务器的daemon启动程序

redis-cli:Redis命令行操作工具。或者通过telnet进行纯文本协议操作

redis-benchmark:Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能

拷贝文件
cp redis.conf /etc/ 这个文件时redis启动的配置文件
cp redis-benchmark redis-cli redis-server /usr/bin/ #这个倒是很有用,这样就不用再执行时加上./了,而且可以在任何地方执行,注意这些文件的目录在src目录下,不熟悉的朋友需要注意下。

3、调优

3.1  设置内存分配策略(可选,根据服务器的实际情况进行设置)
/proc/sys/vm/overcommit_memory
可选值:0、1、2。
0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2, 表示内核允许分配超过所有物理内存和交换空间总和的内存
值 得注意的一点是,redis在dump数据的时候,会fork出一个子进程,理论上child进程所占用的内存和parent是一样的,比如parent 占用的内存为8G,这个时候也要同样分配8G的内存给child,如果内存无法负担,往往会造成redis服务器的down机或者IO负载过高,效率下 降。所以这里比较优化的内存分配策略应该设置为 1(表示内核允许分配所有的物理内存,而不管当前的内存状态如何)

echo 1 > /proc/sys/vm/overcommit_memory

 

3.2 修改/etc/sysctl.conf文件

vim /etc/sysctl.conf

末尾追加vm.overcommit_memory = 1
然后执行sysctl vm.overcommit_memory=1,使之生效:

4:启动redis服务

redis-server /etc/redis.conf

 

查看进程,确认redis已经启动
root@localhost.localdomain:[/root]ps -ef | grep redis
root      6493  5213  0 14:13 pts/1    00:00:00 more /etc/redis.conf
root      6543  6516  0 14:14 pts/4    00:00:00 redis-cli
root      6692  2221  0 14:27 pts/0    00:00:00 redis-server /etc/redis.conf
root      6697  6606  0 14:28 pts/5    00:00:00 grep redis


这里建议,修改redis.conf,设置redis进程为后台守护进程
# By default Redis does not run as a daemon. Use 'yes' if you need it.
# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
daemonize no

修改daemonize 为yes

5:测试redis

root@localhost.localdomain:[/root]redis-cli 
redis 127.0.0.1:6379> set name jack
OK
redis 127.0.0.1:6379> get name
"jack"

6:关闭redis服务

redis-cli shutdown  

redis 127.0.0.1:6379> shutdown

[6467] 23 Oct 14:15:21.845 # User requested shutdown...
[6467] 23 Oct 14:15:21.845 * Saving the final RDB snapshot before exiting.
[6467] 23 Oct 14:15:21.926 * DB saved on disk
[6467] 23 Oct 14:15:21.926 # Redis is now ready to exit, bye bye...


redis服务关闭后,缓存数据会自动dump到硬盘上,硬盘地址为redis.conf中的配置项dbfilename dump.rdb所设定


强制备份数据到磁盘,使用如下命令
redis-cli save 或者 redis-cli -p 6380 save(指定端口)

7、redis端口

redis默认端口是6379 ,可以修改redis.conf 修改端口

# Accept connections on the specified port, default is 6379.
# If port 0 is specified Redis will not listen on a TCP socket.
port 6379



最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务