【原創】NOSQL系列-Redis精簡版安裝與Ruby測試
一、實驗環境
1.系統型別
[leo@h4 etc]$ cat issue
CentOS Linux release 6.0 (Final)
Kernel \r on an \m
2.系統位數
[leo@h4 桌面]$ getconf LONG_
32
Linux ISO:CentOS-6.0-i386-bin-DVD.iso 32位
JDK version:"1.6.0_25-ea"
虛擬機器:Product VMware® Workstation Version 7.0.0 build-203739
3.CentOS需要能連入網路,這個比較簡單,可以參考《》,這篇文章在一開始就介紹了虛擬機器如何連線上網
4.Redis版本:redis.i386 0:2.4.10-1.el5
5.EPLE版本:
6.Ruby 版本:ruby-1.9.2-p180
二、Redis 安裝與配置
1.我們使用yum方式安裝redis資料庫
[root@h4 ~]# ping 202.99.96.68 測試一下,現在我們可以連線到外網
PING 202.99.96.68 (202.99.96.68) 56(84) bytes of data.
64 bytes from 202.99.96.68: icmp_seq=1 ttl=245 time=4.14 ms
64 bytes from 202.99.96.68: icmp_seq=2 ttl=245 time=4.44 ms
64 bytes from 202.99.96.68: icmp_seq=3 ttl=245 time=4.12 ms
64 bytes from 202.99.96.68: icmp_seq=4 ttl=245 time=5.60 ms
注:如果是新啟動的VMware系統,有可能會連不上網,沒關係,我們重啟下network服務即可恢復
[root@h4 ~]# service network restart
[root@h4 ~]# yum install redis
Loaded plugins: fastestmirror, refresh-packagekit
Loading mirror speeds from cached hostfile
* base: mirrors.neusoft.edu.cn
* extras: mirrors.neusoft.edu.cn
* updates: mirrors.neusoft.edu.cn
base | 3.7 kB 00:00
extras | 3.5 kB 00:00
updates | 3.5 kB 00:00
updates/primary_db | 4.3 MB 00:26
Setting up Install Process
No package redis available. 沒有可用的redis包
Error: Nothing to do
CentOS是RedHat企業版(收費)編譯過來的社群版(免費),去掉了所有關於版權問題的東西。如果我們想使用收費版yum源(軟體包齊全),我們就需要安裝EPEL(Extra Packages for Enterprise Linux )即企業版Linux的擴充套件包,EPLE提供了很多Redhat和Centos共用的元件,安裝完這個以後基本常用的rpm包都可以找到了^_^
32位系統選擇:(我是32位)
[root@h4 ~]# rpm -ivh
Retrieving
warning: /var/tmp/rpm-tmp.UX54fR: Header V3 DSA/SHA1 Signature, key ID 217521f6: NOKEY
Preparing... ########################################### [100%]
1:epel-release ########################################### [100%]
64位系統選擇:
rpm -ivh
近水樓臺先得月可參考 感謝zhaoyg 童鞋,它是64位
下面我們再次安裝redis -> yum install redis
[root@h4 ~]# yum install redis
Loaded plugins: fastestmirror, refresh-packagekit
Loading mirror speeds from cached hostfile
* base: mirrors.neusoft.edu.cn
* epel: mirrors.neusoft.edu.cn
* extras: mirrors.neusoft.edu.cn
* updates: mirrors.neusoft.edu.cn
epel | 3.7 kB 00:00
epel/primary_db | 3.1 MB 00:15
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package redis.i386 0:2.4.10-1.el5 set to be updated
--> Finished Dependency Resolution
Dependencies Resolved
=======================================================================================
Package Arch Version Repository Size
=======================================================================================
Installing:
redis i386 2.4.10-1.el5 epel 299 k
Transaction Summary
=======================================================================================
Install 1 Package(s)
Upgrade 0 Package(s)
Total download size: 299 k
Installed size: 646 k
Is this ok [y/N]:y 是否安裝redis包 yes
Downloading Packages:
redis-2.4.10-1.el5.i386.rpm warning: rpmts_HdrFromFdno: Header V4 DSA/SHA1 Signature, key ID 217521f6: NOKEY | 299 kB 00:01
epel/gpgkey Importing GPG key 0x217521F6 "Fedora EPEL <>" from /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL | 3.3 kB 00:00 ... 是否匯入金鑰
Is this ok [y/N]: y
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum. 警告已經修改了yum源
Installing:redis-2.4.10-1.el5.i386 1/1
Installed:
redis.i386 0:2.4.10-1.el5
Complete! 到此redis軟體安裝完畢,下面我們開始配置
配置redis
2.找一找redis安裝到哪些目錄中了
[root@h4 ~]# find / -name "redis*"
/var/lib/redis
/var/run/redis
/var/log/redis
/usr/bin/redis-cli
/usr/bin/redis-check-dump
/usr/bin/redis-check-aof
/usr/bin/redis-benchmark
/usr/sbin/redis-server redis伺服器主程式
/usr/share/gimp/2.0/patterns/redishstuff.pat
/usr/share/doc/redis-2.4.10
/etc/logrotate.d/redis
/etc/redis.conf redis配置檔案,啟動引數都在這裡配置
/etc/rc.d/init.d/redis redis開機啟動服務
3.設定redis引數檔案/etc/redis.conf
[root@h4 ~]# vim /etc/redis.conf
daemonize yes 啟動redis後要不要後臺執行
port 6379 redis服務預設埠號,如果啟動多個服務埠號要設定不同
bind 127.0.0.1 繫結ip地址
timeout 0 telnet連線服務過期時間,0 代表關閉這項功能
loglevel notice 日誌級別
SNAPSHOTTING 快照設定
4.啟動redis服務
[root@h4 ~]# redis-server /etc/redis.conf 按照此配置檔案的引數設定啟動服務
5.驗證啟動是否成功
[root@h4 ~]# pstree 索引樹方式檢視
├─redis-server───2*[{redis-server}] 啟動一個redis服務,包含2個執行緒
[root@h4 ~]# ps aux | grep redis 程式列表方式檢視
root 18787 0.0 0.2 31280 1080 ? Ssl 15:42 0:00 redis-server /etc/redis.conf
這還是啟動命令
6.使用telnet簡單測試
我們知道redis是memcached的改進版,那麼命令語法也是大同小異
[root@h4 ~]# telnet localhost 6379
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
set leonarding 8 輸入key-value對 key=leonarding value=8
+OK
get leonarding 輸出key-value對
$1 $1: 字串型別,1個字元長度
8 顯示value
set liu sheng 輸入key-value對 key=liu value=sheng
+OK
get liu 輸出key-value對
$5 $5: 字串型別,5個字元長度
Sheng 顯示value
測試連結串列
lpush 11 22 定義第一個連結串列lpush表頭新增結點(左邊新增) key=11 value=22
:1
lpush 33 44 定義第二個連結串列 key=33 value=44
:1
rpush 55 66 定義第三個連結串列rpush表尾新增結點(右邊新增)key=55 value=66
:1
lrange 11 0 -1 顯示第一個連結串列,0 -1 表示從頭到尾顯示連結串列
*1
$2
22
lrange 33 0 -1 顯示第二個連結串列,*1 表示連結串列中有1個結點
*1
$2 $2字串型別,2個字元長度
44
lrange 55 0 -1 顯示第三個連結串列,說明連結串列是基於key為單位組成的
*1
$2
66
del 33 刪除連結串列33
:1
del 55 刪除連結串列55
:1
del 11 刪除連結串列11
:1
quit 退出redis
+OK
Connection closed by foreign host.
三、Ruby連線Redis資料庫測試
1.下載ruby程式包
[root@h4 ~]# rpm -qa | grep ruby
由於我沒有安裝過ruby語言程式,所以什麼都沒有顯示
[root@h4 ~]# mkdir ruby 先建立一個ruby目錄用來存放ruby安裝程式包
[root@h4 ~]# cd ruby 進入目錄
首先要安裝ruby軟體包
Ruby版本:
99% [========================================> ] 11,154,815 26.9K/s eta(英國中部時
100%[===============================================>] 11,158,935 27.5K/s
當進度條走到100%時ruby程式完成下載
[root@h4 ruby]# chmod 777 ruby-1.9.2-p180.tar.gz 授予777許可權
[root@h4 ruby]# ll
rwxrwxrwx. 1 root root 11158935 2月 18 2011 ruby-1.9.2-p180.tar.gz
2.解壓ruby程式包
[root@h4 ruby]# tar -zxvf ruby-1.9.2-p180.tar.gz
[root@h4 ruby]# cd ruby-1.9.2-p180 進入ruby程式包目錄
3.執行config檔案
[root@h4 ruby-1.9.2-p180]# ./configure 執行ruby配置檔案
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu 。。。。。。檢查系統型別
config.status: creating Makefile 建立Makefile
4.編譯ruby並把編譯好的結果進行安裝
[root@h4 ruby-1.9.2-p180]# make 編譯原始檔,需要等待10分鐘
gcc -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wno-long-long -I. -I.ext/include/i686-linux -I./include -I. -DRUBY_EXPORT -o dmyversion.o -c dmyversion
[root@h4 ruby-1.9.2-p180]# make install 把編譯好的結果進行安裝
./miniruby -I./lib -I.ext/common -I./- -r./ext/purelib.rb ./tool/generic_erb.rb -c -o encdb.h ./template/encdb.h.tmpl ./enc enc
encdb.h unchanged
make -f enc.mk RUBY="./miniruby -I./lib -I.ext/common -I./- -r./ext/purelib.rb " MINIRUBY="./miniruby -I./lib -I.ext/common -I./- -r./ext/purelib.rb " srcs
make[1]: Entering directory `/root/ruby/ruby-1.9.2-p180'
5.找一找ruby安裝到哪些目錄下
[root@h4 ruby-1.9.2-p180]# find / -name ruby
/root/ruby
/root/ruby/ruby-1.9.2-p180/ruby
/root/ruby/ruby-1.9.2-p180/test/ruby
/root/ruby/ruby-1.9.2-p180/include/ruby
/root/ruby/ruby-1.9.2-p180/.ext/include/ruby
/root/ruby/ruby-1.9.2-p180/.ext/include/i686-linux/ruby
/home/grid/hbase-0.90.5/lib/ruby
/home/grid/hbase-0.90.5/src/test/ruby
/home/grid/hbase-0.90.5/src/main/ruby
/usr/local/include/ruby-1.9.1/ruby
/usr/local/include/ruby-1.9.1/i686-linux/ruby
/usr/local/lib/ruby
/usr/local/bin/ruby
/usr/local/share/doc/ruby
/usr/share/swig/1.3.40/ruby
6.設定/etc/profile環境變數,對全域性有效
export PATH=/usr/java/jdk1.6.0_25/bin:/usr/local/bin:/sbin:$PATH 新增紅色字串
[root@h4 bin]$ ruby 到此ruby程式已經安裝到系統中可以執行ruby指令碼
ruby: Interrupt
-:1: syntax error, unexpected ':', expecting $end
ruby: Interrupt
^
7.安裝rubygems元件(透過這個元件安裝redis-rb程式庫)
[root@h4 ruby-1.9.2-p180]# yum install rubygems
Loaded plugins: fastestmirror, refresh-packagekit
Loading mirror speeds from cached hostfile
* base: mirrors.grandcloud.cn
* epel: mirrors.ustc.edu.cn
* extras: mirrors.grandcloud.cn
* updates: mirrors.grandcloud.cn
epel | 3.7 kB 00:00
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package rubygems.noarch 0:1.3.7-1.el6 set to be updated
--> Processing Dependency: ruby(abi) = 1.8 for package: rubygems-1.3.7-1.el6.noarch
--> Processing Dependency: ruby-rdoc for package: rubygems-1.3.7-1.el6.noarch
--> Processing Dependency: /usr/bin/ruby for package: rubygems-1.3.7-1.el6.noarch
--> Running transaction check
---> Package ruby.i686 0:1.8.7.352-7.el6_2 set to be updated
---> Package ruby-libs.i686 0:1.8.7.352-7.el6_2 set to be updated
--> Processing Dependency: libreadline.so.5 for package: ruby-libs-1.8.7.352-7.el6_2.i686
---> Package ruby-rdoc.i686 0:1.8.7.352-7.el6_2 set to be updated
--> Processing Dependency: ruby-irb = 1.8.7.352-7.el6_2 for package: ruby-rdoc-1.8.7.352-7.el6_2.i686
--> Running transaction check
---> Package compat-readline5.i686 0:5.2-17.1.el6 set to be updated
---> Package ruby-irb.i686 0:1.8.7.352-7.el6_2 set to be updated
--> Finished Dependency Resolution
Is this ok [y/N]: y
Total 211 kB/s | 3.2 MB 00:15
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : compat-readline5-5.2-17.1.el6.i686 1/6
Installing : ruby-libs-1.8.7.352-7.el6_2.i686 2/6
Installing : ruby-1.8.7.352-7.el6_2.i686 3/6
Installing : ruby-irb-1.8.7.352-7.el6_2.i686 4/6
Installing : ruby-rdoc-1.8.7.352-7.el6_2.i686 5/6
Installing : rubygems-1.3.7-1.el6.noarch 6/6
Installed:
rubygems.noarch 0:1.3.7-1.el6
Dependency Installed:
compat-readline5.i686 0:5.2-17.1.el6 ruby.i686 0:1.8.7.352-7.el6_2 ruby-irb.i686 0:1.8.7.352-7.el6_2 ruby-libs.i686 0:1.8.7.352-7.el6_2
ruby-rdoc.i686 0:1.8.7.352-7.el6_2
Complete!
如果遇上如下報錯請參考下面解決方案
[root@h4 ruby-1.9.2-p180]# gem install redis
ERROR: Loading command: install (LoadError)
no such file to load – zlib 原因是gem執行缺少zlib庫支援
ERROR: While executing gem ... (NameError)
uninitialized constant Gem::Commands::InstallCommand
解決方案
[root@h4 ruby-1.9.2-p180]# yum -y install gcc
Loaded plugins: fastestmirror, refresh-packagekit
Loading mirror speeds from cached hostfile
由於安裝系統的時候沒有裝c編譯器 導致很多原始碼安裝的程式無法編譯 所以需要在linux上裝c編譯器,必須按順序安裝否則安裝不會成功
[root@h4 ruby-1.9.2-p180]# yum install zlib-devel 安裝zlib-devel庫
Loaded plugins: fastestmirror, refresh-packagekit
Loading mirror speeds from cached hostfile
[root@h4 ruby-1.9.2-p180]# cd ext/zlib/ 進入這個目錄
[root@h4 zlib]# ruby extconf.rb 執行這條命令
checking for deflateReset() in -lz... yes
checking for zlib.h... yes
checking for kind of operating system... Unix
checking for crc32_combine() in zlib.h... yes
checking for adler32_combine() in zlib.h... yes
creating Makefile
[root@h4 zlib]# make && make install 編譯並安裝
gcc -I. -I/usr/local/include/ruby-1.9.1/i686-linux -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -DHAVE_ZLIB_H -DOS_CODE=OS_UNIX -DHAVE_CRC32_COMBINE -DHAVE_ADLER32_COMBINE -D_FILE_OFFSET_BITS=64 -fPIC -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wno-long-long -o zlib.o -c zlib.c
gcc -shared -o zlib.so zlib.o -L. -L/usr/local/lib -Wl,-R/usr/local/lib -L. -rdynamic -Wl,-export-dynamic -lz -lpthread -lrt -ldl -lcrypt -lm -lc
/usr/bin/install -c -m 0755 zlib.so /usr/local/lib/ruby/site_ruby/1.9.1/i686-linux
[root@h4 zlib]# gem list
*** LOCAL GEMS ***
minitest (1.6.0)
rake (0.8.7)
rdoc (2.5.8)
到此我們已經解決了“gem執行缺少zlib庫”問題,現在我們可以正常gem install redis
8.安裝redis-rb程式庫,因為只有安裝了此程式庫ruby才能正常訪問redis資料庫
[root@h4 zlib]# gem install redis
Successfully installed redis-3.0.1
1 gem installed
Installing ri documentation for redis-3.0.1...
Installing RDoc documentation for redis-3.0.1...
[root@h4 zlib]#
感謝天感謝地,我們終於安裝上了redis-rb,經歷了多少個日夜,經歷了多少個困苦,查閱了多少資料,當我們迎來成功之時,一切都是值得的,臺上10分鐘 臺下十年功
9.編寫ruby指令碼訪問redis資料庫
[root@h4 ruby]# vim leonarding_redisrb1.rb 編寫ruby指令碼,建立連結串列
require 'rubygems' 引用程式庫
require 'redis'
redis=Redis.new 開啟兩個終端程式訪問redis資料庫
redis2=Redis.new
hoge = "leonarding"; 設定key(hoge leonarding)
redis.lpush(hoge,3) 建立連結串列,在表頭新增三個結點
redis.lpush(hoge,2) value 是 3 2 1 4
redis.lpush(hoge,1)
redis.rpush(hoge,4) 在表尾新增一個結點
p redis.lrange(hoge,0,-1) 從頭到尾顯示連結串列
[root@h4 ruby]# ruby leonarding_redisrb1.rb 執行ruby指令碼
/usr/local/lib/ruby/gems/1.9.1/gems/redis-3.0.1/lib/redis/client.rb:79:in `call': ERR Operation against a key holding the wrong kind of value (Redis::CommandError)
from /usr/local/lib/ruby/gems/1.9.1/gems/redis-3.0.1/lib/redis.rb:859:in `block in lpush'
from /usr/local/lib/ruby/gems/1.9.1/gems/redis-3.0.1/lib/redis.rb:36:in `block in synchronize'
from /usr/local/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize'
from /usr/local/lib/ruby/gems/1.9.1/gems/redis-3.0.1/lib/redis.rb:36:in `synchronize'
from /usr/local/lib/ruby/gems/1.9.1/gems/redis-3.0.1/lib/redis.rb:858:in `lpush'
from leonarding_redisrb1.rb:7:in `
報錯這是為什麼呢,想起來了,不同的ruby版本語法不同,我們來修改一下
Ruby 版本:ruby-1.9.2-p180
#############################################################################
新版leonarding_redisrb1.rb
[root@h4 ruby]# vim leonarding_redisrb1.rb
require 'rubygems'
require 'redis'
redis=Redis.new
redis2=Redis.new
hoge = "leonarding";
redis.lpush:hoge,3
redis.lpush:hoge,2
redis.lpush:hoge,1
redis.rpush:hoge,4
p redis.lrange:hoge,0,-1
執行ruby指令碼
[root@h4 ruby]# ruby leonarding_redisrb1.rb
["1", "2", "3", "4"]
[root@h4 ruby]# ruby leonarding_redisrb1.rb
["1", "2", "3", "1", "2", "3", "4", "4"]
[root@h4 ruby]# ruby leonarding_redisrb1.rb
["1", "2", "3", "1", "2", "3", "1", "2", "3", "4", "4", "4"]
看value=4始終從表尾新增,符合題意
#################################################################################
我們在編寫一個ruby指令碼,測試不同終端是否可以訪問同一個資料庫
[root@h4 ruby]# vim leonarding_redisrb2.rb
require 'rubygems'
require 'redis'
redis=Redis.new
redis2=Redis.new 開啟2個終端程式訪問redis資料庫
hoge = "leonarding";
redis.lpush:hoge,3
redis.lpush:hoge,2
redis.lpush:hoge,1
redis.rpush:hoge,4
redis2.rpush:hoge,5
p redis.lrange:hoge,0,-1
使用redis2程式從表尾新增結點value=5,看看是不是能夠操作同一個連結串列,那就證明我們連線的是同一個redis資料庫,並且操作是具有原子性和一致性的
執行ruby指令碼
[root@h4 ruby]# ruby leonarding_redisrb2.rb
["1", "2", "3", "1", "2", "3", "1", "2", "3", "1", "2", "3", "4", "4", "4", "4", "5"]
小結:Redis精簡版安裝與Ruby測試到此總結完畢,透過上面的實驗我們應該掌握如下內容
(1)redis簡要概念
(2)redis安裝與配置
(3)ruby程式和元件包安裝與故障診斷
(4) ruby連線Redis資料庫
心得:一步一腳印,不懂我們就問,思考與耐心,苦盡奕甘來
redis ruby gem rubygems redis-rb
2013.1.13
天津&winter
分享技術~成就夢想
Blog:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26686207/viewspace-752605/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [原創]Fitnesse測試工具介紹及安裝
- Redis基礎系列-0x001:安裝與連線測試Redis
- redis系列:redis介紹與安裝Redis
- NoSQL概述和Redis的安裝SQLRedis
- MQTT系列實踐一 EMQTT安裝與測試MQQT
- Redis系列(一):Redis簡介及環境安裝Redis
- Redis簡介與安裝(Windows)RedisWindows
- Maven精選系列--介紹與安裝Maven
- redis系列(一)- 安裝與啟動Redis
- Redis叢集方案,Codis安裝測試Redis
- 試用Redis安裝、php環境連線、測試RedisPHP
- 【VNC】Linux環境VNC服務安裝、配置與使用(精簡版)VNCLinux
- Redis安裝與使用之簡單案例Redis
- 【原創】Struts1.x系列教程(4):標籤庫概述與安裝
- app的安裝與解除安裝測試點APP
- 【Azure Redis 快取】Windows版建立 Redis Cluster 實驗 (精簡版)Redis快取Windows
- 【原創】Ubuntu安裝和簡單使用初感Ubuntu
- Redis(windows版)安裝RedisWindows
- nosql redis資料庫壓力測試基準工具redis-benchmarkSQLRedis資料庫
- 測試平臺系列(80) 封裝Redis客戶端封裝Redis客戶端
- Pig 的安裝與測試
- 【STATSPACK】Statspack安裝、測試與使用
- redis的幾個實用工具安裝測試Redis
- HP9000系列簡介與安裝
- Java Redis系列2 (redis的安裝與使用+redis持久化的實現))JavaRedis持久化
- [原創] 大資料測試大資料
- [原創]PostMan介面測試神器Postman
- [原創]滲透測試工具
- 安裝GBase 8t 測試版
- [原創]Linux下網路效能測試Netperf工具介紹及安裝Linux
- 精準化測試原理簡介
- win10裝不了迅雷精簡版怎麼解決_win10無法安裝迅雷精簡版如何處理Win10
- 小丸子學Redis系列之——安裝RedisRedis
- 安裝與配置MySQL,phpmyAdmin;安裝與測試PHPLIB (轉)MySqlPHP
- 【Redis篇】初始Redis與Redis安裝Redis
- Nosql——Redis配置與優化SQLRedis優化
- Mac Redis安裝與解除安裝MacRedis
- 介面測試:postman的安裝與使用Postman