您的位置:首页 > 数据库 > Redis

redis 服务器/客户端安装与配置

2014-05-29 18:08 441 查看
redis 服务器/客户端安装与配置

1 redis server
1.1 获取redis源码包 //官网 http://redis.io/ wget -c http://redis.googlecode.com/files/redis-2.4.15.tar.gz 
1.2 解包
tar zxf redis-2.4.15.tar.gz
cd redis-2.4.15

1.3 安装
make PREFIX=/usr/local/redis install

//安装完成后,会/usr/local/redis/bin/目录下生成5个可执行文件,
ls /usr/local/redis/bin/
redis-benchmark  redis-check-aof  redis-check-dump  redis-cli  redis-server

redis-server:Redis服务器的daemon启动程序
redis-cli:Redis命令行操作工具。
redis-benchmark:Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能
redis-check-dump: 检查file.rdb 文件
redis-check-aof:检查file.aof 文件

1.4 配置redis
//建立conf与var目录
mkdir -p /usr/local/redis/conf
mkdir -p /usr/local/redis/var

//redis.conf
cat > /usr/local/redis/conf/redis.conf << EOF
#daemonize:是否以后台daemon方式运行
daemonize yes
#pidfile:pid文件位置
pidfile /var/run/redis.pid
#bind:监听的ip地址
bind 10.0.100.70
#port:监听的端口号
port 6379
#timeout:请求超时时间,单位秒
timeout 120
#loglevel:log信息级别,支持四个级别,debug,notice,verbose,warning
loglevel warning
#日志文件位置
logfile /usr/local/redis/var/redis.log
#databases:开启数据库的数量
databases 16
##snapshoot
#save * *:保存快照的频率,第一个*表示多长时间,第二个*表示执行多少次写操作。在一定时间内执行一定数量的写操作时,自动保存快照。可设置多个条件。
#在900秒之内,redis至少发生1次修改则redis抓快照到磁盘
save 900 1
#在300秒之内,redis至少发生100次修改则redis抓快照到磁盘
save 300 100
#在60秒之内,redis至少发生10000次修改则redis抓快照到磁盘
save 60 10000
#rdbcompression:是否使用压缩
rdbcompression yes
#dbfilename:数据快照文件名(只是文件名,不包括目录)
dbfilename dump.rdb
#dir:数据快照的保存目录(这个是目录)
dir /usr/local/redis/var
##aof
#appendonly:是否开启appendonlylog,AOF是另一种持久化方式,开启的话每次写操作会记一条log,这会提高数据抗风险能力,但影响效率。
appendonly no
#appendfsync:appendonlylog如何同步到磁盘(三个选项,分别是每次写都强制调用fsync、每秒启用一次fsync、不调用fsync等待系统自己同步)
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
##slow log
#如果操作时间大于0.001秒,记录slow log,这个log是记录在内存中的,可以用redis-cli slowlog get 命令查看
slowlog-log-slower-than 10000
#slow log 的最大长度
slowlog-max-len 128
##virtual memory
#是否使用虚拟内存
vm-enabled no
#swap文件,不同redis swap文件不能共享。而且生产环境下,不建议放在tmp目录。
vm-swap-file /tmp/redis.swap
#vm大小限制。0 不限制,建议60-80% 可用内存大小
vm-max-memory 0
#根据缓存内容大小调整,默认32字节
vm-page-size 32
#page数。每 8 page 会占用1字节内存
vm-pages 134217728
#m 最大io线程数。注意: 0 标志禁止使用vm(开关真多)
vm-max-threads 4
#
hash-max-zipmap-entries 512
hash-max-zipmap-value 64
#
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
activerehashing yes
##limit
#最大使用内存单位<bytes>,默认情况下redis会占用可用的所有内存
maxmemory 256000000
#maxclients 最大连接数, 0 表示不限制
maxclients 1024
##replication
requirepass dongnan
#slave
#master的ip地址与端口号
#slaveof 10.0.100.70 6379
#设置slave到master的认证
#masterauth dongnan
#在master服务器挂掉或者同步失败时,从服务器是否继续提供服务
slave-serve-stale-data yes

EOF

1.5 启动redis
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf

//redis 进程与端口号
ps -ef | grep redis
root     19426     1  0 13:44 ?        00:00:00 /usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf
lsof -i :6379
COMMAND     PID USER   FD   TYPE  DEVICE SIZE NODE NAME
redis-ser 19426 root    4u  IPv4 7257634       TCP *:6379 (LISTEN)

1.6 验证redis
telnet 10.0.100.70 6379
Trying 10.0.100.70...
Connected to monitor.test.com (10.0.100.70).
Escape character is '^]'.
set name test
+OK
get name
$4
test
quit
+OK
Connection closed by foreign host.

//使用redis-cli
/usr/local/redis/bin/redis-cli -h 10.0.100.70 info
redis_version:2.4.15
redis_git_sha1:00000000
redis_git_dirty:0
arch_bits:64
multiplexing_api:epoll
gcc_version:4.4.4
process_id:16508
uptime_in_seconds:602110
uptime_in_days:6
lru_clock:1948675
used_cpu_sys:129.20
used_cpu_user:117.94
used_cpu_sys_children:14.57
used_cpu_user_children:158.95
connected_clients:1
connected_slaves:0
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
used_memory:594999992
used_memory_human:567.44M
used_memory_rss:172482560
used_memory_peak:594999904
used_memory_peak_human:567.44M
mem_fragmentation_ratio:0.29
mem_allocator:jemalloc-2.2.5
loading:0
aof_enabled:0
changes_since_last_save:0
bgsave_in_progress:0
last_save_time:1340097972
bgrewriteaof_in_progress:0
total_connections_received:34
total_commands_processed:6946723
expired_keys:0
evicted_keys:0
keyspace_hits:32
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:9602
vm_enabled:0
role:master
db0:keys=1969249,expires=0

1.7 关闭redis
/usr/local/redis/bin/redis-cli -h 10.0.100.70  -p 6379 shutdown


2 redis(php) api/客户端/扩展
Redis的客户端实际上担负了通过网络协议与Redis Server进行通信的过程,通信的过程必须遵循协议规范,
让客户的调用更加符合特定语言的使用习惯。现有PHP客户端:rediska、phpredis、Predis、Redisent。
这些客户端中,有纯PHP的实现方案,也有二进制版本的实现方案。这里我们选择二进制版本的phpreids。
//官网地址 http://redis.io/clients/ 

2.1 获取源码包
wget -c https://nodeload.github.com/nicolasff/phpredis/tarball/master 
2.2 解包(没错你下载的就是master)
tar zxf master
cd nicolasff-phpredis-f1231c9/

2.3 准备php扩展库所需环境
/usr/bin/phpize
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20050922
Zend Extension Api No:   220051025

2.4 配置
./configure --with-php-config=/usr/bin/php-config

2.5 编译安装
make && make install
//生成的redis.so
file /usr/lib64/php/modules/redis.so
/usr/lib64/php/modules/redis.so: ELF 64-bit LSB shared object, AMD x86-64, version 1 (SYSV), not stripped

2.6 编辑/etc/php.ini (我的rpm 方式安装的php)
extension_dir = "/usr/lib64/php/modules"
extension=redis.so
//重启apache
/etc/init.d/httpd restart

2.7 验证模块
php -m | grep -i 'redis'
redis
//phpinfo 输出



2.8 验证
cat > redis.php << EOF
<?php
$redis = new Redis();
$redis->connect('10.0.100.70',6379);
$redis->set('foo', 'Hello world');
echo $redis->get('foo');
?>

EOF

$ php redis.php
Hello world$


3 redis 定义

http://zh.wikipedia.org/wiki/Redis

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。

数据模型

除了常规的数值或字符串,redis的键值还可以是以下形式之一:

Lists (列表)

Sets (集合)

Sorted sets (有序集合)

Hashes (哈希表)

持久化

通常,Redis将数据存储于内存中,或被配置为使用虚拟内存。通过两种方式可以实现数据持久化:使用快照的方式,将内存中的数据不断写入磁盘;或使用类似MySQL的日志方式,记录每次更新的日志。前者性能较高,但是可能会引起一定程度的数据丢失;后者相反。

主从同步

Redis支持将数据同步到多台从库上,这种特性对提高读取性能非常有益。

性能

相比需要依赖磁盘记录每个更新的数据库,基于内存的特性无疑给Redis带来了非常优秀的性能。读写操作之间有显著的性能差异。

提供API的语言:

C/C++/C#/Clojure/Common Lisp/Erlang/Haskell/Java/Javascript/Lua/Objective-C/Perl/PHP/Python/Ruby/Scala/Go/Tcl

4 redis-cli 命令
连接操作相关的命令
quit:关闭连接(connection)
auth:简单密码认证

持久化
save:将数据同步保存到磁盘
bgsave:将数据异步保存到磁盘
lastsave:返回上次成功将数据保存到磁盘的Unix时戳
shundown:将数据同步保存到磁盘,然后关闭服务

远程服务控制
info:提供服务器的信息和统计
monitor:实时转储收到的请求
slaveof:改变复制策略设置
config:在运行时配置Redis服务器

对value操作的命令
exists(key):确认一个key是否存在
del(key):删除一个key
type(key):返回值的类型
keys(pattern):返回满足给定pattern的所有key
randomkey:随机返回key空间的一个key
rename(oldname, newname):将key由oldname重命名为newname,若newname存在则删除newname表示的key
dbsize:返回当前数据库中key的数目
expire:设定一个key的活动时间(s)
ttl:获得一个key的活动时间
select(index):按索引查询
move(key, dbindex):将当前数据库中的key转移到有dbindex索引的数据库
flushdb:删除当前选择数据库中的所有key
flushall:删除所有数据库中的所有key


参考

http://www.redis.cn/documentation.html

redis安装使用

Redis 的安装配置介绍

redis安装以及php扩展

Redis的PHP客户端

redis-cli 命令总结
http://slj.me/2011/04/redis-cli-commands/
redis-commands

http://www.redis.cn/commands.html

#update 20120709

redis replication

磁盘io





cpu



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: