R語言利劍之NoSQL系列:Redis(1)

來源:互聯網
上載者:User

R語言利劍之NoSQL系列:Redis(1)

Redis環境準備 rredis函數庫 rredis基本使用操作 rredis使用案例

每一章節,都會分為”文字說明部分”和”代碼部分”,保持文字說明與代碼的連貫性。

第一章 Redis環境準備

文字說明部分:

首先環境準備,這裡我選擇了Linux Ubuntu作業系統12.04的64位伺服器版本,大家可以根據自己的使用習慣選擇順手的Linux。

Redis安裝過程跳過。sudo apt-get install redis-server

查看Redis伺服器環境

使用/etc/init.d/redis-server命令,啟動redis-server, 預設連接埠:port=6379

在伺服器端,用telnet串連redis-server

用telnet插入資料,讀取資料

R語言環境2.15.0,WinXP通過遠端連線,訪問Redis server。

代碼部分:

查看作業系統 

 
  1. ~ uname -a      Linux AY121111030241cda8003 3.2.0-29-generic #46-Ubuntu SMP Fri Jul 27 17:03:23 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux  ~ cat /etc/issue      Ubuntu 12.04.1 LTS \n \l  

啟動redis 

 
  1. ~ /etc/init.d/redis-server start      Starting redis-server: redis-server.  

查看系統進程 

 
  1. ~ ps -aux|grep redis      redis    20128  0.0  0.0  10676  1428 ?        Ss   16:39   0:00 /usr/bin/redis-server /etc/redis/redis.conf  

查看啟日誌

 
  1. ~ cat  /var/log/redis/redis-server.log       
  2. [20128] 14 Apr 16:39:43 * Server started, Redis version 2.2.12     
  3. [20128] 14 Apr 16:39:43 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.    
  4. [20128] 14 Apr 16:39:43 * The server is now ready to accept connections on port 6379  

telnet串連redis-server

 
  1. ~ telnet localhost 6379      Trying 127.0.0.1...     Connected to localhost.     Escape character is '^]'.  

插入資料

 
  1. rpush data 1     :1      rpush data 2     :2  

查詢資料 

 
  1. lrange data 0 -1     *2     $1     1     $1     2  

R語言開發環境2.15.0,WinXP

~ R R version 2.15.0 (2012-03-30) Copyright (C) 2012 The R Foundation for Statistical Computing ISBN 3-900051-07-0 Platform: i386-pc-mingw32/i386 (32-bit) 

第二章 rredis函數庫

rredis提供了100函數,對應用redis的操作。雖然函數也不少,但是用法都是比較簡單的,對R語言支援足夠靈活,代碼也比較簡潔。

下面列出了所有rredis函數庫,我只挑選一些常用的介紹。

文字說明部分:

建立串連,關閉串連

 
  1. redisConnect() , redisClose()  

清空當前/所有資料庫資料 

 
  1. redisFlushDB() , redisFlushAll()  

列出所有KEY值,KEY的數量 

 
  1. redisKeys(), redisDBSize()  

選擇切換資料庫:0是預設資料庫 

 
  1. redisSelect(0)      

插入string對象,批量插入 

 
  1. redisSet('x',runif(5)), redisMSet(list(x=pi,y=runif(5),z=sqrt(2)))  

讀取string對象,批量讀取 

 
  1. redisGet('x'), redisMGet(c('x','y','z'))  

刪除對象 

 
  1. redisDelete('x')  

左邊插入數組對象,右邊插入數組對象

 
  1. redisLPush('a',1), redisRPush('a','A')  

左邊彈出一個數組對象, 右邊彈出一個數組對象, 

 
  1. redisLPop('a'), redisRPop('a')  

從左邊顯示數組對象列表 

 
  1. redisLRange('a',0,-1)  

插入set類型對象 

 
  1. redisSAdd('A',runif(2))  

顯示set對象有幾個元素,列表顯示set對象元素 

 
  1. redisSCard('A'), redisSMembers('A')  

顯示兩個set對象的差集,交集,並集 

 
  1. redisSDiff(c('A','B')),redisSInter(c('A','B')),redisSUnion(c('A','B'))  

代碼部分:

共有100個函數

redisAuth redisBgRewriteAOF redisBgSave redisBLPop redisBRPop redisBRPopLPush redisClose redisCmd redisConnect redisDBSize redisDecr redisDecrBy redisDelete redisDiscard redisEval redisExec redisExists redisExpire redisExpireAt redisFlushAll redisFlushDB redisGet redisGetContext redisGetResponse redisGetSet redisHDel redisHExists redisHFields redisHGet redisHGetAll redisHIncrBy redisHKeys redisHLen redisHMGet redisHMSet redisHSet redisHVals redisIncr redisIncrBy redisInfo redisKeys redisLIndex redisLLen redisLPop redisLPush redisLRange redisLRem redisLSet redisLTrim redisMGet redisMonitorChannels redisMove redisMSet redisMulti redisPublish redisRandomKey redisRename redisRPop redisRPopLPush redisRPush redisSAdd redisSave redisSCard redisSDiff redisSDiffStore redisSelect redisSet redisSetBlocking redisSetContext redisShutdown redisSInter redisSInterStore redisSIsMember redisSlaveOf redisSMembers redisSMove redisSort redisSPop redisSRandMember redisSRem redisSubscribe redisSUnion redisSUnionStore redisTTL redisType redisUnsubscribe redisUnwatch redisWatch redisZAdd redisZCard redisZIncrBy redisZInterStore redisZRange redisZRangeByScore redisZRank redisZRem redisZRemRangeByRank redisZRemRangeByScore redisZScore redisZUnionStore 

第三章 rredis基本使用操作

文字說明部分:

首先,要安裝rredis類庫,載入類庫。

redisConnect(host=“192.168.1.101”,port=6379)

然後,通過redisConnect()函數,建立與Redis Server的串連。如果是本地串連redisConnect()不要參數,下面例子使用遠端連線,增加host參數配置IP地址。redisConnect(host=“192.168.1.101”,port=6379)

redis的基本操作:建議連結,切換資料庫,列表顯示所有KEY值,清空當前資料庫資料,清空所有資料庫資料,關閉連結,

string類型操作:插入,讀取,刪除,插入並設定到期時間,大量操作

list類型操作:插入,讀取,彈出

set類型操作:插入,讀取,交集,差集,並集

rredis與redis-cli的互動操作

代碼部分:

redis的基本操作:

 
  1. #安裝rredis 
  2. install.packages(rredis) 
  3.  
  4. #載入rredis類庫 
  5. library(rredis) 
  6.  
  7. #遠端連線redis server 
  8. redisConnect(host="192.168.1.101",port=6379) 
  9.  
  10. #列出所有的keys 
  11. redisKeys() 
  12.     [1] "x"    "data" 
  13.  
  14. #顯示有多少個key 
  15. redisDBSize() 
  16.     [1] 2 
  17.  
  18. #切換資料庫1 
  19. redisSelect(1) 
  20.     [1] "OK" 
  21. redisKeys() 
  22.     NULL 
  23.  
  24. #切換資料庫0 
  25. redisSelect(0) 
  26.     [1] "OK" 
  27. redisKeys() 
  28.     [1] "x"    "data" 
  29.  
  30. #清空當前資料庫資料 
  31. redisFlushDB() 
  32.     [1] "OK" 
  33.  
  34. #清空所有資料庫資料 
  35. redisFlushAll() 
  36.     [1] "OK" 
  37.  
  38. #關閉連結 
  39. redisClose() 

string類型操作:

 
  1. #插入對象 
  2. redisSet('x',runif(5)) 
  3.     1] "OK" 
  4.  
  5. #讀取對象 
  6. redisGet('x') 
  7.     [1] 0.67616159 0.06358643 0.07478021 0.32129140 0.16264615 
  8.  
  9. #設定資料到期時間 
  10. redisExpire('x',1) 
  11. Sys.sleep(1) 
  12. redisGet('x') 
  13.     NULL 
  14.  
  15. #批量插入 
  16. redisMSet(list(x=pi,y=runif(5),z=sqrt(2))) 
  17.     [1] TRUE 
  18.  
  19. #批量讀取 
  20. redisMGet(c('x','y','z')) 
  21.     $x 
  22.     [1] 3.141593 
  23.     $y 
  24.     [1] 0.9249501 0.3444994 0.6477250 0.1681421 0.2646853 
  25.     $z 
  26.     [1] 1.414214 
  27.  
  28. #刪除資料     
  29. redisDelete('x') 
  30.     [1] 1 
  31. redisGet('x') 
  32.     NULL 


相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.