redis伺服器/客戶端安裝與配置

科技小能手發表於2017-11-29

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 輸出

 
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

cpu

 

結束

更多請:

linux 相關 37275208

vmware 虛擬化相關  166682360

本文轉自 dongnan 51CTO部落格,原文連結:http://blog.51cto.com/dngood/925481


相關文章