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

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

1 redis server


  1. 1.1 获取redis源码包 //官网 http://redis.io/ 
  2. wget -c http://redis.googlecode.com/files/redis-2.4.15.tar.gz 
  3.  
  4.  
  5. 1.2 解包 
  6. tar zxf redis-2.4.15.tar.gz 
  7. cd redis-2.4.15 
  8.  
  9. 1.3 安装 
  10. make PREFIX=/usr/local/redis install 
  11.  
  12. //安装完成后,会/usr/local/redis/bin/目录下生成5个可执行文件, 
  13. ls /usr/local/redis/bin/ 
  14. redis-benchmark  redis-check-aof  redis-check-dump  redis-cli  redis-server 
  15.  
  16. redis-server:Redis服务器的daemon启动程序 
  17. redis-cli:Redis命令行操作工具。 
  18. redis-benchmark:Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能 
  19. redis-check-dump: 检查file.rdb 文件 
  20. redis-check-aof:检查file.aof 文件 
  21.  
  22. 1.4 配置redis 
  23. //建立conf与var目录 
  24. mkdir -p /usr/local/redis/conf 
  25. mkdir -p /usr/local/redis/var 
  26.  
  27. //redis.conf 
  28. cat > /usr/local/redis/conf/redis.conf << EOF 
  29. #daemonize:是否以后台daemon方式运行 
  30. daemonize yes 
  31. #pidfile:pid文件位置 
  32. pidfile /var/run/redis.pid 
  33. #bind:监听的ip地址 
  34. bind 10.0.100.70 
  35. #port:监听的端口号 
  36. port 6379 
  37. #timeout:请求超时时间,单位秒 
  38. timeout 120 
  39. #loglevel:log信息级别,支持四个级别,debug,notice,verbose,warning 
  40. loglevel warning 
  41. #日志文件位置 
  42. logfile /usr/local/redis/var/redis.log 
  43. #databases:开启数据库的数量 
  44. databases 16 
  45. ##snapshoot 
  46. #save * *:保存快照的频率,第一个*表示多长时间,第二个*表示执行多少次写操作。在一定时间内执行一定数量的写操作时,自动保存快照。可设置多个条件。 
  47. #在900秒之内,redis至少发生1次修改则redis抓快照到磁盘 
  48. save 900 1 
  49. #在300秒之内,redis至少发生100次修改则redis抓快照到磁盘 
  50. save 300 100 
  51. #在60秒之内,redis至少发生10000次修改则redis抓快照到磁盘 
  52. save 60 10000 
  53. #rdbcompression:是否使用压缩 
  54. rdbcompression yes 
  55. #dbfilename:数据快照文件名(只是文件名,不包括目录) 
  56. dbfilename dump.rdb 
  57. #dir:数据快照的保存目录(这个是目录) 
  58. dir /usr/local/redis/var 
  59. ##aof 
  60. #appendonly:是否开启appendonlylog,AOF是另一种持久化方式,开启的话每次写操作会记一条log,这会提高数据抗风险能力,但影响效率。 
  61. appendonly no 
  62. #appendfsync:appendonlylog如何同步到磁盘(三个选项,分别是每次写都强制调用fsync、每秒启用一次fsync、不调用fsync等待系统自己同步) 
  63. appendfsync everysec 
  64. no-appendfsync-on-rewrite no 
  65. auto-aof-rewrite-percentage 100 
  66. auto-aof-rewrite-min-size 64mb 
  67. ##slow log 
  68. #如果操作时间大于0.001秒,记录slow log,这个log是记录在内存中的,可以用redis-cli slowlog get 命令查看 
  69. slowlog-log-slower-than 10000 
  70. #slow log 的最大长度 
  71. slowlog-max-len 128 
  72. ##virtual memory 
  73. #是否使用虚拟内存 
  74. vm-enabled no 
  75. #swap文件,不同redis swap文件不能共享。而且生产环境下,不建议放在tmp目录。 
  76. vm-swap-file /tmp/redis.swap 
  77. #vm大小限制。0 不限制,建议60-80% 可用内存大小 
  78. vm-max-memory 0 
  79. #根据缓存内容大小调整,默认32字节 
  80. vm-page-size 32 
  81. #page数。每 8 page 会占用1字节内存 
  82. vm-pages 134217728 
  83. #m 最大io线程数。注意: 0 标志禁止使用vm(开关真多) 
  84. vm-max-threads 4 
  85. hash-max-zipmap-entries 512 
  86. hash-max-zipmap-value 64 
  87. list-max-ziplist-entries 512 
  88. list-max-ziplist-value 64 
  89. set-max-intset-entries 512 
  90. zset-max-ziplist-entries 128 
  91. zset-max-ziplist-value 64 
  92. activerehashing yes 
  93. ##limit 
  94. #最大使用内存单位<bytes>,默认情况下redis会占用可用的所有内存 
  95. maxmemory 256000000 
  96. #maxclients 最大连接数, 0 表示不限制 
  97. maxclients 1024 
  98. ##replication 
  99. requirepass dongnan 
  100. #slave 
  101. #master的ip地址与端口号 
  102. #slaveof 10.0.100.70 6379 
  103. #设置slave到master的认证 
  104. #masterauth dongnan 
  105. #在master服务器挂掉或者同步失败时,从服务器是否继续提供服务 
  106. slave-serve-stale-data yes 
  107.  
  108.  
  109. EOF 
  110.  
  111. 1.5 启动redis 
  112. /usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf 
  113.  
  114. //redis 进程与端口号 
  115. ps -ef | grep redis 
  116. root     19426     1  0 13:44 ?        00:00:00 /usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf 
  117. lsof -i :6379 
  118. COMMAND     PID USER   FD   TYPE  DEVICE SIZE NODE NAME 
  119. redis-ser 19426 root    4u  IPv4 7257634       TCP *:6379 (LISTEN) 
  120.  
  121. 1.6 验证redis 
  122. telnet 10.0.100.70 6379 
  123. Trying 10.0.100.70... 
  124. Connected to monitor.test.com (10.0.100.70). 
  125. Escape character is '^]'. 
  126. set name test 
  127. +OK 
  128. get name 
  129. $4 
  130. test 
  131. quit 
  132. +OK 
  133. Connection closed by foreign host. 
  134.  
  135. //使用redis-cli 
  136. /usr/local/redis/bin/redis-cli -h 10.0.100.70 info 
  137. redis_version:2.4.15 
  138. redis_git_sha1:00000000 
  139. redis_git_dirty:0 
  140. arch_bits:64 
  141. multiplexing_api:epoll 
  142. gcc_version:4.4.4 
  143. process_id:16508 
  144. uptime_in_seconds:602110 
  145. uptime_in_days:6 
  146. lru_clock:1948675 
  147. used_cpu_sys:129.20 
  148. used_cpu_user:117.94 
  149. used_cpu_sys_children:14.57 
  150. used_cpu_user_children:158.95 
  151. connected_clients:1 
  152. connected_slaves:0 
  153. client_longest_output_list:0 
  154. client_biggest_input_buf:0 
  155. blocked_clients:0 
  156. used_memory:594999992 
  157. used_memory_human:567.44M 
  158. used_memory_rss:172482560 
  159. used_memory_peak:594999904 
  160. used_memory_peak_human:567.44M 
  161. mem_fragmentation_ratio:0.29 
  162. mem_allocator:jemalloc-2.2.5 
  163. loading:0 
  164. aof_enabled:0 
  165. changes_since_last_save:0 
  166. bgsave_in_progress:0 
  167. last_save_time:1340097972 
  168. bgrewriteaof_in_progress:0 
  169. total_connections_received:34 
  170. total_commands_processed:6946723 
  171. expired_keys:0 
  172. evicted_keys:0 
  173. keyspace_hits:32 
  174. keyspace_misses:0 
  175. pubsub_channels:0 
  176. pubsub_patterns:0 
  177. latest_fork_usec:9602 
  178. vm_enabled:0 
  179. role:master 
  180. db0:keys=1969249,expires=0 
  181.  
  182.  
  183. 1.7 关闭redis 
  184. /usr/local/redis/bin/redis-cli -h 10.0.100.70  -p 6379 shutdown 



 2 redis(php) api/客户端/扩展


  1. Redis的客户端实际上担负了通过网络协议与Redis Server进行通信的过程,通信的过程必须遵循协议规范,
  2. 让客户的调用更加符合特定语言的使用习惯。现有PHP客户端:rediska、phpredis、Predis、Redisent。
  3. 这些客户端中,有纯PHP的实现方案,也有二进制版本的实现方案。这里我们选择二进制版本的phpreids。 
  4. //官网地址 http://redis.io/clients/ 
  5.  
  6. 2.1 获取源码包 
  7. wget -c https://nodeload.github.com/nicolasff/phpredis/tarball/master 
  8.  
  9. 2.2 解包(没错你下载的就是master) 
  10. tar zxf master 
  11. cd nicolasff-phpredis-f1231c9/ 
  12.  
  13. 2.3 准备php扩展库所需环境 
  14. /usr/bin/phpize 
  15. Configuring for: 
  16. PHP Api Version:         20041225 
  17. Zend Module Api No:      20050922 
  18. Zend Extension Api No:   220051025 
  19.  
  20. 2.4 配置 
  21. ./configure --with-php-config=/usr/bin/php-config 

  22. 2.5 编译安装 
  23. make && make install 
  24. //生成的redis.so 
  25. file /usr/lib64/php/modules/redis.so 
  26. /usr/lib64/php/modules/redis.so: ELF 64-bit LSB shared object, AMD x86-64, version 1 (SYSV), not stripped 
  27.  
  28. 2.6 编辑/etc/php.ini (我的rpm 方式安装的php) 
  29. extension_dir = "/usr/lib64/php/modules" 
  30. extension=redis.so 
  31. //重启apache 
  32. /etc/init.d/httpd restart 
  33.  
  34. 2.7 验证模块 
  35. php -m | grep -i 'redis' 
  36. redis 
  37. //phpinfo 输出

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

  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 命令


  1. 连接操作相关的命令 
  2.     quit:关闭连接(connection) 
  3.     auth:简单密码认证 
  4.  
  5. 持久化 
  6.     save:将数据同步保存到磁盘 
  7.     bgsave:将数据异步保存到磁盘 
  8.     lastsave:返回上次成功将数据保存到磁盘的Unix时戳 
  9.     shundown:将数据同步保存到磁盘,然后关闭服务 
  10.  
  11. 远程服务控制 
  12.     info:提供服务器的信息和统计 
  13.     monitor:实时转储收到的请求 
  14.     slaveof:改变复制策略设置 
  15.     config:在运行时配置Redis服务器 
  16.  
  17. 对value操作的命令 
  18.     exists(key):确认一个key是否存在 
  19.     del(key):删除一个key 
  20.     type(key):返回值的类型 
  21.     keys(pattern):返回满足给定pattern的所有key 
  22.     randomkey:随机返回key空间的一个key 
  23.     rename(oldname, newname):将key由oldname重命名为newname,若newname存在则删除newname表示的key 
  24.     dbsize:返回当前数据库中key的数目 
  25.     expire:设定一个key的活动时间(s) 
  26.     ttl:获得一个key的活动时间 
  27.     select(index):按索引查询 
  28.     move(key, dbindex):将当前数据库中的key转移到有dbindex索引的数据库 
  29.     flushdb:删除当前选择数据库中的所有key 
  30.     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

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

cpu

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

 

结束

更多请:

linux 相关 37275208

vmware 虚拟化相关  166682360

本文转自 dongnan 51CTO博客,原文链接:http://blog.51cto.com/dngood/925481


上一篇:JAVA虚拟机 自动内存管理机制(一)


下一篇:巧用3ds Max快速制作池塘倒影效果